diff --git a/GameUploadDocuments/2.StepOfDoom/.DS_Store b/GameUploadDocuments/2.StepOfDoom/.DS_Store
new file mode 100644
index 0000000..5ff915c
Binary files /dev/null and b/GameUploadDocuments/2.StepOfDoom/.DS_Store differ
diff --git a/GameUploadDocuments/2.StepOfDoom/Account SS/.DS_Store b/GameUploadDocuments/2.StepOfDoom/Account SS/.DS_Store
new file mode 100644
index 0000000..5008ddf
Binary files /dev/null and b/GameUploadDocuments/2.StepOfDoom/Account SS/.DS_Store differ
diff --git a/GameUploadDocuments/2.StepOfDoom/Account SS/StepOfDoom_WithAccount.png b/GameUploadDocuments/2.StepOfDoom/Account SS/StepOfDoom_WithAccount.png
new file mode 100755
index 0000000..c6f3a35
Binary files /dev/null and b/GameUploadDocuments/2.StepOfDoom/Account SS/StepOfDoom_WithAccount.png differ
diff --git a/GameUploadDocuments/2.StepOfDoom/Build/.DS_Store b/GameUploadDocuments/2.StepOfDoom/Build/.DS_Store
new file mode 100644
index 0000000..e92988a
Binary files /dev/null and b/GameUploadDocuments/2.StepOfDoom/Build/.DS_Store differ
diff --git a/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/.DS_Store b/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/.DS_Store
new file mode 100644
index 0000000..9877498
Binary files /dev/null and b/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/.DS_Store differ
diff --git a/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/.cocos-project.json b/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/.cocos-project.json
new file mode 100644
index 0000000..fd9c5e7
--- /dev/null
+++ b/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/.cocos-project.json
@@ -0,0 +1,7 @@
+{
+ "engine_version": "2.1.3",
+ "has_native": true,
+ "project_type": "js",
+ "projectName": "StepOfDoom",
+ "packageName": "Com.Wow.Stepofdoom"
+}
\ No newline at end of file
diff --git a/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/cocos-project-template.json b/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/cocos-project-template.json
new file mode 100755
index 0000000..be5de11
--- /dev/null
+++ b/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/cocos-project-template.json
@@ -0,0 +1,69 @@
+{
+ "do_default": {
+ "exclude_from_template": [
+ "frameworks/runtime-src"
+ ]
+ },
+ "do_add_native_support": {
+ "append_from_template": {
+ "from": "frameworks/runtime-src",
+ "to": "frameworks/runtime-src",
+ "exclude": [
+ "proj.ios_mac/HelloJavascript.xcodeproj/project.xcworkspace",
+ "proj.ios_mac/HelloJavascript.xcodeproj/xcuserdata",
+ "proj.win32/Debug.win32",
+ "proj.win32/Release.win32",
+ "proj.win32/HelloJavascript.sdf"
+ ]
+ },
+ "append_file": [{
+ "from": "cocos/scripting/js-bindings/manual/jsb_module_register.cpp",
+ "to": "frameworks/runtime-src/Classes/jsb_module_register.cpp"
+ }],
+ "project_rename": {
+ "src_project_name": "HelloJavascript",
+ "files": [
+ "frameworks/runtime-src/proj.win32/PROJECT_NAME.vcxproj",
+ "frameworks/runtime-src/proj.win32/PROJECT_NAME.vcxproj.filters",
+ "frameworks/runtime-src/proj.win32/PROJECT_NAME.vcxproj.user",
+ "frameworks/runtime-src/proj.win32/PROJECT_NAME.sln",
+ "frameworks/runtime-src/proj.ios_mac/PROJECT_NAME.xcodeproj"
+ ]
+ },
+ "project_replace_project_name": {
+ "src_project_name": "HelloJavascript",
+ "files": [
+ "frameworks/runtime-src/proj.win32/PROJECT_NAME.vcxproj",
+ "frameworks/runtime-src/proj.win32/PROJECT_NAME.vcxproj.filters",
+ "frameworks/runtime-src/proj.win32/PROJECT_NAME.vcxproj.user",
+ "frameworks/runtime-src/proj.win32/PROJECT_NAME.sln",
+ "frameworks/runtime-src/proj.win32/main.cpp",
+ "frameworks/runtime-src/proj.android-studio/settings.gradle",
+ "frameworks/runtime-src/proj.android-studio/app/res/values/strings.xml",
+ "frameworks/runtime-src/proj.ios_mac/ios/main.m",
+ "frameworks/runtime-src/proj.ios_mac/ios/Prefix.pch",
+ "frameworks/runtime-src/proj.ios_mac/PROJECT_NAME.xcodeproj/project.pbxproj",
+ "frameworks/runtime-src/Classes/AppDelegate.cpp"
+ ]
+ },
+ "project_replace_package_name": {
+ "src_package_name": "org.cocos2dx.hellojavascript",
+ "files": [
+ "frameworks/runtime-src/proj.android-studio/app/build.gradle",
+ "frameworks/runtime-src/proj.android-studio/app/AndroidManifest.xml"
+ ]
+ },
+ "project_replace_mac_bundleid": {
+ "src_bundle_id": "org.cocos2dx.hellojavascript",
+ "files": [
+ "frameworks/runtime-src/proj.ios_mac/mac/Info.plist"
+ ]
+ },
+ "project_replace_ios_bundleid": {
+ "src_bundle_id": "org.cocos2dx.hellojavascript",
+ "files": [
+ "frameworks/runtime-src/proj.ios_mac/ios/Info.plist"
+ ]
+ }
+ }
+}
diff --git a/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/.DS_Store b/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/.DS_Store
new file mode 100644
index 0000000..5eb26de
Binary files /dev/null and b/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/.DS_Store differ
diff --git a/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/.DS_Store b/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/.DS_Store
new file mode 100644
index 0000000..2684e52
Binary files /dev/null and b/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/.DS_Store differ
diff --git a/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/Classes/AppDelegate.cpp b/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/Classes/AppDelegate.cpp
new file mode 100755
index 0000000..1ac0ae7
--- /dev/null
+++ b/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/Classes/AppDelegate.cpp
@@ -0,0 +1,91 @@
+/****************************************************************************
+ Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd.
+
+ http://www.cocos.com
+
+ Permission is hereby granted, free of charge, to any person obtaining a copy
+ of this software and associated engine source code (the "Software"), a limited,
+ worldwide, royalty-free, non-assignable, revocable and non-exclusive license
+ to use Cocos Creator solely to develop games on your target platforms. You shall
+ not use Cocos Creator software for developing other software or tools that's
+ used for developing games. You are not granted to publish, distribute,
+ sublicense, and/or sell copies of Cocos Creator.
+
+ The software or tools in this License Agreement are licensed, not sold.
+ Xiamen Yaji Software Co., Ltd. reserves all rights not expressly granted to you.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ THE SOFTWARE.
+ ****************************************************************************/
+
+#include "AppDelegate.h"
+
+#include "cocos2d.h"
+
+#include "cocos/scripting/js-bindings/manual/jsb_module_register.hpp"
+#include "cocos/scripting/js-bindings/manual/jsb_global.h"
+#include "cocos/scripting/js-bindings/jswrapper/SeApi.h"
+#include "cocos/scripting/js-bindings/event/EventDispatcher.h"
+#include "cocos/scripting/js-bindings/manual/jsb_classtype.hpp"
+// #include "platform/CCFileUtils.h"
+
+USING_NS_CC;
+
+AppDelegate::AppDelegate(int width, int height) : Application("Cocos Game", width, height)
+{
+}
+
+AppDelegate::~AppDelegate()
+{
+}
+
+bool AppDelegate::applicationDidFinishLaunching()
+{
+ se::ScriptEngine *se = se::ScriptEngine::getInstance();
+
+ jsb_set_xxtea_key("13c0be3a-a2cd-4e");
+
+ jsb_init_file_operation_delegate();
+
+#if defined(COCOS2D_DEBUG) && (COCOS2D_DEBUG > 0)
+ // Enable debugger here
+ jsb_enable_debugger("0.0.0.0", 6086, false);
+#endif
+
+ se->setExceptionCallback([](const char *location, const char *message, const char *stack) {
+ // Send exception information to server like Tencent Bugly.
+ });
+
+ jsb_register_all_modules();
+
+ se->start();
+
+ se::AutoHandleScope hs;
+ jsb_run_script("jsb-adapter/jsb-builtin.js");
+ jsb_run_script("main.js");
+
+ se->addAfterCleanupHook([]() {
+ JSBClassType::destroy();
+ });
+
+ cocos2d::Device::setKeepScreenOn(true);
+
+ return true;
+}
+
+// This function will be called when the app is inactive. When comes a phone call,it's be invoked too
+void AppDelegate::applicationDidEnterBackground()
+{
+ EventDispatcher::dispatchEnterBackgroundEvent();
+}
+
+// this function will be called when the app is active again
+void AppDelegate::applicationWillEnterForeground()
+{
+ EventDispatcher::dispatchEnterForegroundEvent();
+}
diff --git a/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/Classes/AppDelegate.h b/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/Classes/AppDelegate.h
new file mode 100755
index 0000000..47bad36
--- /dev/null
+++ b/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/Classes/AppDelegate.h
@@ -0,0 +1,57 @@
+/****************************************************************************
+ Copyright (c) 2018 Xiamen Yaji Software Co., Ltd.
+
+ http://www.cocos.com
+
+ Permission is hereby granted, free of charge, to any person obtaining a copy
+ of this software and associated engine source code (the "Software"), a limited,
+ worldwide, royalty-free, non-assignable, revocable and non-exclusive license
+ to use Cocos Creator solely to develop games on your target platforms. You shall
+ not use Cocos Creator software for developing other software or tools that's
+ used for developing games. You are not granted to publish, distribute,
+ sublicense, and/or sell copies of Cocos Creator.
+
+ The software or tools in this License Agreement are licensed, not sold.
+ Xiamen Yaji Software Co., Ltd. reserves all rights not expressly granted to you.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ THE SOFTWARE.
+ ****************************************************************************/
+#pragma once
+
+#include "platform/CCApplication.h"
+/**
+ @brief The cocos2d Application.
+
+ The reason for implement as private inheritance is to hide some interface call by Director.
+ */
+class AppDelegate : public cocos2d::Application
+{
+public:
+ AppDelegate(int width, int height);
+ virtual ~AppDelegate();
+
+ /**
+ @brief Implement Director and Scene init code here.
+ @return true Initialize success, app continue.
+ @return false Initialize failed, app terminate.
+ */
+ virtual bool applicationDidFinishLaunching() override;
+
+ /**
+ @brief The function be called when the application enter background
+ @param the pointer of the application
+ */
+ virtual void applicationDidEnterBackground() override;
+
+ /**
+ @brief The function be called when the application enter foreground
+ @param the pointer of the application
+ */
+ virtual void applicationWillEnterForeground() override;
+};
diff --git a/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/Classes/jsb_module_register.cpp b/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/Classes/jsb_module_register.cpp
new file mode 100644
index 0000000..59c778b
--- /dev/null
+++ b/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/Classes/jsb_module_register.cpp
@@ -0,0 +1,181 @@
+/****************************************************************************
+ Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd.
+
+ http://www.cocos.com
+
+ Permission is hereby granted, free of charge, to any person obtaining a copy
+ of this software and associated engine source code (the "Software"), a limited,
+ worldwide, royalty-free, non-assignable, revocable and non-exclusive license
+ to use Cocos Creator solely to develop games on your target platforms. You shall
+ not use Cocos Creator software for developing other software or tools that's
+ used for developing games. You are not granted to publish, distribute,
+ sublicense, and/or sell copies of Cocos Creator.
+
+ The software or tools in this License Agreement are licensed, not sold.
+ Xiamen Yaji Software Co., Ltd. reserves all rights not expressly granted to you.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ THE SOFTWARE.
+ ****************************************************************************/
+
+#include "cocos2d.h"
+
+#include "cocos/scripting/js-bindings/manual/jsb_module_register.hpp"
+#include "cocos/scripting/js-bindings/jswrapper/SeApi.h"
+
+#include "cocos/scripting/js-bindings/auto/jsb_cocos2dx_auto.hpp"
+
+#include "cocos/scripting/js-bindings/manual/jsb_global.h"
+#include "cocos/scripting/js-bindings/manual/jsb_node.hpp"
+#include "cocos/scripting/js-bindings/manual/jsb_conversions.hpp"
+#include "cocos/scripting/js-bindings/manual/jsb_opengl_manual.hpp"
+#include "cocos/scripting/js-bindings/manual/jsb_platform.h"
+#include "cocos/scripting/js-bindings/manual/jsb_cocos2dx_manual.hpp"
+#include "cocos/scripting/js-bindings/manual/jsb_xmlhttprequest.hpp"
+#include "cocos/scripting/js-bindings/manual/jsb_cocos2dx_network_manual.h"
+#include "cocos/scripting/js-bindings/auto/jsb_cocos2dx_network_auto.hpp"
+#include "cocos/scripting/js-bindings/auto/jsb_cocos2dx_extension_auto.hpp"
+
+#if USE_GFX_RENDERER
+#include "cocos/scripting/js-bindings/auto/jsb_gfx_auto.hpp"
+#include "cocos/scripting/js-bindings/auto/jsb_renderer_auto.hpp"
+#include "cocos/scripting/js-bindings/manual/jsb_gfx_manual.hpp"
+#include "cocos/scripting/js-bindings/manual/jsb_renderer_manual.hpp"
+#endif
+
+#if USE_SOCKET
+#include "cocos/scripting/js-bindings/manual/jsb_websocket.hpp"
+#include "cocos/scripting/js-bindings/manual/jsb_socketio.hpp"
+#endif // USE_SOCKET
+
+#if USE_AUDIO
+#include "cocos/scripting/js-bindings/auto/jsb_cocos2dx_audioengine_auto.hpp"
+#endif
+
+#if (CC_TARGET_PLATFORM == CC_PLATFORM_IOS || CC_TARGET_PLATFORM == CC_PLATFORM_MAC)
+#include "cocos/scripting/js-bindings/manual/JavaScriptObjCBridge.h"
+#endif
+
+#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID)
+#include "cocos/scripting/js-bindings/manual/JavaScriptJavaBridge.h"
+#endif
+
+#if USE_MIDDLEWARE
+#include "cocos/scripting/js-bindings/auto/jsb_cocos2dx_editor_support_auto.hpp"
+
+#if USE_SPINE
+#include "cocos/scripting/js-bindings/auto/jsb_cocos2dx_spine_auto.hpp"
+#include "cocos/scripting/js-bindings/manual/jsb_spine_manual.hpp"
+#endif
+
+#if USE_DRAGONBONES
+#include "cocos/scripting/js-bindings/auto/jsb_cocos2dx_dragonbones_auto.hpp"
+#include "cocos/scripting/js-bindings/manual/jsb_dragonbones_manual.hpp"
+#endif
+
+#endif // USE_MIDDLEWARE
+
+#if (CC_TARGET_PLATFORM == CC_PLATFORM_IOS || CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID)
+
+#if USE_VIDEO
+#include "cocos/scripting/js-bindings/auto/jsb_video_auto.hpp"
+#endif
+
+#if USE_WEB_VIEW
+#include "cocos/scripting/js-bindings/auto/jsb_webview_auto.hpp"
+#endif
+
+#endif // (CC_TARGET_PLATFORM == CC_PLATFORM_IOS || CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID)
+
+using namespace cocos2d;
+
+bool jsb_register_all_modules()
+{
+ se::ScriptEngine* se = se::ScriptEngine::getInstance();
+
+ se->addBeforeInitHook([](){
+ JSBClassType::init();
+ });
+
+ se->addBeforeCleanupHook([se](){
+ se->garbageCollect();
+ PoolManager::getInstance()->getCurrentPool()->clear();
+ se->garbageCollect();
+ PoolManager::getInstance()->getCurrentPool()->clear();
+ });
+
+ se->addRegisterCallback(jsb_register_global_variables);
+ se->addRegisterCallback(JSB_register_opengl);
+ se->addRegisterCallback(register_all_engine);
+ se->addRegisterCallback(register_all_cocos2dx_manual);
+ se->addRegisterCallback(register_platform_bindings);
+
+ se->addRegisterCallback(register_all_network);
+ se->addRegisterCallback(register_all_cocos2dx_network_manual);
+ se->addRegisterCallback(register_all_xmlhttprequest);
+ // extension depend on network
+ se->addRegisterCallback(register_all_extension);
+
+#if USE_GFX_RENDERER
+ se->addRegisterCallback(register_all_gfx);
+ se->addRegisterCallback(jsb_register_gfx_manual);
+ se->addRegisterCallback(register_all_renderer);
+ se->addRegisterCallback(jsb_register_renderer_manual);
+#endif
+
+#if (CC_TARGET_PLATFORM == CC_PLATFORM_IOS || CC_TARGET_PLATFORM == CC_PLATFORM_MAC)
+ se->addRegisterCallback(register_javascript_objc_bridge);
+#endif
+
+#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID)
+ se->addRegisterCallback(register_javascript_java_bridge);
+#endif
+
+#if USE_AUDIO
+ se->addRegisterCallback(register_all_audioengine);
+#endif
+
+
+#if USE_SOCKET
+ se->addRegisterCallback(register_all_websocket);
+ se->addRegisterCallback(register_all_socketio);
+#endif
+
+#if USE_MIDDLEWARE
+ se->addRegisterCallback(register_all_cocos2dx_editor_support);
+
+#if USE_SPINE
+ se->addRegisterCallback(register_all_cocos2dx_spine);
+ se->addRegisterCallback(register_all_spine_manual);
+#endif
+
+#if USE_DRAGONBONES
+ se->addRegisterCallback(register_all_cocos2dx_dragonbones);
+ se->addRegisterCallback(register_all_dragonbones_manual);
+#endif
+
+#endif // USE_MIDDLEWARE
+
+#if (CC_TARGET_PLATFORM == CC_PLATFORM_IOS || CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID)
+
+#if USE_VIDEO
+ se->addRegisterCallback(register_all_video);
+#endif
+
+#if USE_WEB_VIEW
+ se->addRegisterCallback(register_all_webview);
+#endif
+
+#endif // (CC_TARGET_PLATFORM == CC_PLATFORM_IOS || CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID)
+
+ se->addAfterCleanupHook([](){
+ PoolManager::getInstance()->getCurrentPool()->clear();
+ JSBClassType::destroy();
+ });
+ return true;
+}
diff --git a/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.android-studio/.gitignore b/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.android-studio/.gitignore
new file mode 100755
index 0000000..9c4de58
--- /dev/null
+++ b/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.android-studio/.gitignore
@@ -0,0 +1,7 @@
+.gradle
+/local.properties
+/.idea/workspace.xml
+/.idea/libraries
+.DS_Store
+/build
+/captures
diff --git a/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.android-studio/app/.gitignore b/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.android-studio/app/.gitignore
new file mode 100755
index 0000000..1de9949
--- /dev/null
+++ b/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.android-studio/app/.gitignore
@@ -0,0 +1,2 @@
+/build
+/jniLibs
diff --git a/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.android-studio/app/AndroidManifest.xml b/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.android-studio/app/AndroidManifest.xml
new file mode 100755
index 0000000..5c029b9
--- /dev/null
+++ b/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.android-studio/app/AndroidManifest.xml
@@ -0,0 +1,41 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.android-studio/app/build.gradle b/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.android-studio/app/build.gradle
new file mode 100755
index 0000000..40dacc1
--- /dev/null
+++ b/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.android-studio/app/build.gradle
@@ -0,0 +1,140 @@
+import org.apache.tools.ant.taskdefs.condition.Os
+
+apply plugin: 'com.android.application'
+
+android {
+ compileSdkVersion PROP_COMPILE_SDK_VERSION.toInteger()
+ buildToolsVersion PROP_BUILD_TOOLS_VERSION
+
+ defaultConfig {
+ applicationId "Com.Wow.Stepofdoom"
+ minSdkVersion PROP_MIN_SDK_VERSION
+ targetSdkVersion PROP_TARGET_SDK_VERSION
+ versionCode 1
+ versionName "1.0"
+
+ externalNativeBuild {
+ ndkBuild {
+ if (!project.hasProperty("PROP_NDK_MODE") || PROP_NDK_MODE.compareTo('none') != 0) {
+ // skip the NDK Build step if PROP_NDK_MODE is none
+ targets 'cocos2djs'
+ arguments 'NDK_TOOLCHAIN_VERSION=clang'
+
+ def module_paths = [project.file("/Applications/CocosCreator-2.1.3.app/Contents/Resources/cocos2d-x"),
+ project.file("/Applications/CocosCreator-2.1.3.app/Contents/Resources/cocos2d-x/cocos"),
+ project.file("/Applications/CocosCreator-2.1.3.app/Contents/Resources/cocos2d-x/external")]
+ if (Os.isFamily(Os.FAMILY_WINDOWS)) {
+ arguments 'NDK_MODULE_PATH=' + module_paths.join(";")
+ }
+ else {
+ arguments 'NDK_MODULE_PATH=' + module_paths.join(':')
+ }
+
+ arguments '-j' + Runtime.runtime.availableProcessors()
+ abiFilters.addAll(PROP_APP_ABI.split(':').collect{it as String})
+ }
+ }
+ }
+ }
+
+ sourceSets.main {
+ java.srcDir "src"
+ res.srcDir "res"
+ jniLibs.srcDir "libs"
+ manifest.srcFile "AndroidManifest.xml"
+ }
+
+ externalNativeBuild {
+ ndkBuild {
+ if (!project.hasProperty("PROP_NDK_MODE") || PROP_NDK_MODE.compareTo('none') != 0) {
+ // skip the NDK Build step if PROP_NDK_MODE is none
+ path "jni/Android.mk"
+ }
+ }
+ }
+
+ signingConfigs {
+
+ release {
+ if (project.hasProperty("RELEASE_STORE_FILE")) {
+ storeFile file(RELEASE_STORE_FILE)
+ storePassword RELEASE_STORE_PASSWORD
+ keyAlias RELEASE_KEY_ALIAS
+ keyPassword RELEASE_KEY_PASSWORD
+ }
+ }
+ }
+
+ buildTypes {
+ release {
+ debuggable false
+ jniDebuggable false
+ renderscriptDebuggable false
+ minifyEnabled true
+ shrinkResources true
+ proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
+ if (project.hasProperty("RELEASE_STORE_FILE")) {
+ signingConfig signingConfigs.release
+ }
+
+ externalNativeBuild {
+ ndkBuild {
+ arguments 'NDK_DEBUG=0'
+ }
+ }
+ }
+
+ debug {
+ debuggable true
+ jniDebuggable true
+ renderscriptDebuggable true
+ externalNativeBuild {
+ ndkBuild {
+ arguments 'NDK_DEBUG=1'
+ }
+ }
+ }
+ }
+}
+
+android.applicationVariants.all { variant ->
+ // delete previous files first
+ delete "${buildDir}/intermediates/merged_assets/${variant.dirName}"
+
+ variant.mergeAssets.doLast {
+ def sourceDir = "${buildDir}/../../../../.."
+
+ copy {
+ from "${sourceDir}/res"
+ into "${outputDir}/res"
+ }
+
+ copy {
+ from "${sourceDir}/subpackages"
+ into "${outputDir}/subpackages"
+ }
+
+ copy {
+ from "${sourceDir}/src"
+ into "${outputDir}/src"
+ }
+
+ copy {
+ from "${sourceDir}/jsb-adapter"
+ into "${outputDir}/jsb-adapter"
+ }
+
+ copy {
+ from "${sourceDir}/main.js"
+ from "${sourceDir}/project.json"
+ from "${sourceDir}/cacert.pem"
+ into outputDir
+ }
+ }
+}
+
+dependencies {
+ implementation fileTree(dir: 'libs', include: ['*.jar','*.aar'])
+ implementation fileTree(dir: "/Applications/CocosCreator-2.1.3.app/Contents/Resources/cocos2d-x/cocos/platform/android/java/libs", include: ['*.jar'])
+ implementation project(':libcocos2dx')
+}
diff --git a/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.android-studio/app/jni/Android.mk b/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.android-studio/app/jni/Android.mk
new file mode 100755
index 0000000..4962c98
--- /dev/null
+++ b/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.android-studio/app/jni/Android.mk
@@ -0,0 +1,23 @@
+LOCAL_PATH := $(call my-dir)
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE := cocos2djs_shared
+
+LOCAL_MODULE_FILENAME := libcocos2djs
+
+ifeq ($(USE_ARM_MODE),1)
+LOCAL_ARM_MODE := arm
+endif
+
+LOCAL_SRC_FILES := hellojavascript/main.cpp \
+ ../../../Classes/AppDelegate.cpp \
+ ../../../Classes/jsb_module_register.cpp \
+
+LOCAL_C_INCLUDES := $(LOCAL_PATH)/../../../Classes
+
+LOCAL_STATIC_LIBRARIES := cocos2dx_static
+
+include $(BUILD_SHARED_LIBRARY)
+
+$(call import-module, cocos)
diff --git a/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.android-studio/app/jni/Application.mk b/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.android-studio/app/jni/Application.mk
new file mode 100755
index 0000000..f01cbb1
--- /dev/null
+++ b/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.android-studio/app/jni/Application.mk
@@ -0,0 +1,47 @@
+APP_STL := c++_static
+
+# Uncomment this line to compile to armeabi-v7a, your application will run faster but support less devices
+APP_ABI := armeabi-v7a
+
+APP_CPPFLAGS := -frtti -std=c++11 -fsigned-char
+APP_LDFLAGS := -latomic
+
+# To solve windows commands char length too long
+#APP_SHORT_COMMANDS := true
+
+USE_ARM_MODE := 1
+
+# MUST be careful to modify this manually
+# disable module will speed up compile time, and reduce package size
+USE_GFX_RENDERER := 0
+USE_VIDEO := 1
+USE_WEB_VIEW := 1
+USE_AUDIO := 1
+USE_SOCKET := 1
+USE_SPINE := 1
+USE_DRAGONBONES := 1
+USE_TIFF := 1
+USE_MIDDLEWARE := 1
+
+APP_CPPFLAGS += -DUSE_GFX_RENDERER=$(USE_GFX_RENDERER)
+APP_CPPFLAGS += -DUSE_VIDEO=${USE_VIDEO}
+APP_CPPFLAGS += -DUSE_WEB_VIEW=${USE_WEB_VIEW}
+APP_CPPFLAGS += -DUSE_AUDIO=${USE_AUDIO}
+APP_CPPFLAGS += -DUSE_SOCKET=${USE_SOCKET}
+APP_CPPFLAGS += -DUSE_SPINE=${USE_SPINE}
+APP_CPPFLAGS += -DUSE_DRAGONBONES=${USE_DRAGONBONES}
+APP_CPPFLAGS += -DCC_USE_TIFF=${USE_TIFF}
+APP_CPPFLAGS += -DUSE_MIDDLEWARE=${USE_MIDDLEWARE}
+
+ifeq ($(NDK_DEBUG),1)
+ APP_CPPFLAGS += -DCOCOS2D_DEBUG=1
+ APP_CFLAGS += -DCOCOS2D_DEBUG=1
+ APP_OPTIM := debug
+else
+ APP_CPPFLAGS += -DNDEBUG
+ APP_CFLAGS += -DNDEBUG
+ APP_OPTIM := release
+endif
+
+# Some Android Simulators don't support SSE instruction, so disable it for x86 arch.
+APP_CPPFLAGS += -U__SSE__
diff --git a/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.android-studio/app/jni/hellojavascript/main.cpp b/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.android-studio/app/jni/hellojavascript/main.cpp
new file mode 100755
index 0000000..df636ff
--- /dev/null
+++ b/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.android-studio/app/jni/hellojavascript/main.cpp
@@ -0,0 +1,53 @@
+/****************************************************************************
+ Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd.
+
+ http://www.cocos.com
+
+ Permission is hereby granted, free of charge, to any person obtaining a copy
+ of this software and associated engine source code (the "Software"), a limited,
+ worldwide, royalty-free, non-assignable, revocable and non-exclusive license
+ to use Cocos Creator solely to develop games on your target platforms. You shall
+ not use Cocos Creator software for developing other software or tools that's
+ used for developing games. You are not granted to publish, distribute,
+ sublicense, and/or sell copies of Cocos Creator.
+
+ The software or tools in this License Agreement are licensed, not sold.
+ Xiamen Yaji Software Co., Ltd. reserves all rights not expressly granted to you.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ THE SOFTWARE.
+ ****************************************************************************/
+
+#include "AppDelegate.h"
+#include "cocos2d.h"
+#include "platform/android/jni/JniHelper.h"
+#include
+#include
+
+#define LOG_TAG "main"
+#define LOGD(...) __android_log_print(ANDROID_LOG_DEBUG, LOG_TAG, __VA_ARGS__)
+using namespace cocos2d;
+
+//called when JNI_OnLoad()
+void cocos_jni_env_init(JNIEnv *env)
+{
+ LOGD("cocos_jni_env_init");
+}
+
+//called when onSurfaceCreated()
+Application *cocos_android_app_init(JNIEnv *env, int width, int height)
+{
+ LOGD("cocos_android_app_init");
+ auto app = new AppDelegate(width, height);
+ return app;
+}
+
+extern "C"
+{
+ /*JNI_CALL_FUNCTION*/
+}
diff --git a/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.android-studio/app/proguard-rules.pro b/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.android-studio/app/proguard-rules.pro
new file mode 100755
index 0000000..6485510
--- /dev/null
+++ b/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.android-studio/app/proguard-rules.pro
@@ -0,0 +1,37 @@
+# Add project specific ProGuard rules here.
+# By default, the flags in this file are appended to flags specified
+# in E:\developSoftware\Android\SDK/tools/proguard/proguard-android.txt
+# You can edit the include path and order by changing the proguardFiles
+# directive in build.gradle.
+#
+# For more details, see
+# http://developer.android.com/guide/developing/tools/proguard.html
+
+# Add any project specific keep options here:
+
+# If your project uses WebView with JS, uncomment the following
+# and specify the fully qualified class name to the JavaScript interface
+# class:
+#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
+# public *;
+#}
+
+# Proguard Cocos2d-x-lite for release
+-keep public class org.cocos2dx.** { *; }
+-dontwarn org.cocos2dx.**
+
+# Proguard Apache HTTP for release
+-keep class org.apache.http.** { *; }
+-dontwarn org.apache.http.**
+
+# Proguard Android Webivew for release. you can comment if you are not using a webview
+-keep public class android.net.http.SslError
+-keep public class android.webkit.WebViewClient
+
+-dontwarn android.webkit.WebView
+-dontwarn android.net.http.SslError
+-dontwarn android.webkit.WebViewClient
+
+# keep anysdk for release. you can comment if you are not using anysdk
+-keep public class com.anysdk.** { *; }
+-dontwarn com.anysdk.**
diff --git a/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.android-studio/app/project.properties b/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.android-studio/app/project.properties
new file mode 100755
index 0000000..f049142
--- /dev/null
+++ b/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.android-studio/app/project.properties
@@ -0,0 +1,11 @@
+# This file is automatically generated by Android Tools.
+# Do not modify this file -- YOUR CHANGES WILL BE ERASED!
+#
+# This file must be checked in Version Control Systems.
+#
+# To customize properties used by the Ant build system use,
+# "ant.properties", and override values to adapt the script to your
+# project structure.
+
+# Project target.
+target=android-10
diff --git a/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.android-studio/app/res/mipmap-hdpi/ic_launcher.png b/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.android-studio/app/res/mipmap-hdpi/ic_launcher.png
new file mode 100755
index 0000000..8aa4767
Binary files /dev/null and b/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.android-studio/app/res/mipmap-hdpi/ic_launcher.png differ
diff --git a/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.android-studio/app/res/mipmap-mdpi/ic_launcher.png b/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.android-studio/app/res/mipmap-mdpi/ic_launcher.png
new file mode 100755
index 0000000..d53fbdd
Binary files /dev/null and b/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.android-studio/app/res/mipmap-mdpi/ic_launcher.png differ
diff --git a/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.android-studio/app/res/mipmap-xhdpi/ic_launcher.png b/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.android-studio/app/res/mipmap-xhdpi/ic_launcher.png
new file mode 100755
index 0000000..2f72eac
Binary files /dev/null and b/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.android-studio/app/res/mipmap-xhdpi/ic_launcher.png differ
diff --git a/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.android-studio/app/res/mipmap-xxhdpi/ic_launcher.png b/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.android-studio/app/res/mipmap-xxhdpi/ic_launcher.png
new file mode 100755
index 0000000..1526615
Binary files /dev/null and b/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.android-studio/app/res/mipmap-xxhdpi/ic_launcher.png differ
diff --git a/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.android-studio/app/res/values/strings.xml b/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.android-studio/app/res/values/strings.xml
new file mode 100755
index 0000000..1cef5ed
--- /dev/null
+++ b/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.android-studio/app/res/values/strings.xml
@@ -0,0 +1,3 @@
+
+ StepOfDoom
+
diff --git a/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.android-studio/app/src/org/cocos2dx/javascript/AppActivity.java b/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.android-studio/app/src/org/cocos2dx/javascript/AppActivity.java
new file mode 100755
index 0000000..3e7710e
--- /dev/null
+++ b/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.android-studio/app/src/org/cocos2dx/javascript/AppActivity.java
@@ -0,0 +1,137 @@
+/****************************************************************************
+Copyright (c) 2015-2016 Chukong Technologies Inc.
+Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd.
+
+http://www.cocos2d-x.org
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
+****************************************************************************/
+package org.cocos2dx.javascript;
+
+import org.cocos2dx.lib.Cocos2dxActivity;
+import org.cocos2dx.lib.Cocos2dxGLSurfaceView;
+
+import android.os.Bundle;
+
+import android.content.Intent;
+import android.content.res.Configuration;
+
+public class AppActivity extends Cocos2dxActivity {
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ // Workaround in https://stackoverflow.com/questions/16283079/re-launch-of-activity-on-home-button-but-only-the-first-time/16447508
+ if (!isTaskRoot()) {
+ // Android launched another instance of the root activity into an existing task
+ // so just quietly finish and go away, dropping the user back into the activity
+ // at the top of the stack (ie: the last state of this task)
+ // Don't need to finish it again since it's finished in super.onCreate .
+ return;
+ }
+ // DO OTHER INITIALIZATION BELOW
+ SDKWrapper.getInstance().init(this);
+
+ }
+
+ @Override
+ public Cocos2dxGLSurfaceView onCreateView() {
+ Cocos2dxGLSurfaceView glSurfaceView = new Cocos2dxGLSurfaceView(this);
+ // TestCpp should create stencil buffer
+ glSurfaceView.setEGLConfigChooser(5, 6, 5, 0, 16, 8);
+ SDKWrapper.getInstance().setGLSurfaceView(glSurfaceView, this);
+
+ return glSurfaceView;
+ }
+
+ @Override
+ protected void onResume() {
+ super.onResume();
+ SDKWrapper.getInstance().onResume();
+
+ }
+
+ @Override
+ protected void onPause() {
+ super.onPause();
+ SDKWrapper.getInstance().onPause();
+
+ }
+
+ @Override
+ protected void onDestroy() {
+ super.onDestroy();
+ SDKWrapper.getInstance().onDestroy();
+
+ }
+
+ @Override
+ protected void onActivityResult(int requestCode, int resultCode, Intent data) {
+ super.onActivityResult(requestCode, resultCode, data);
+ SDKWrapper.getInstance().onActivityResult(requestCode, resultCode, data);
+ }
+
+ @Override
+ protected void onNewIntent(Intent intent) {
+ super.onNewIntent(intent);
+ SDKWrapper.getInstance().onNewIntent(intent);
+ }
+
+ @Override
+ protected void onRestart() {
+ super.onRestart();
+ SDKWrapper.getInstance().onRestart();
+ }
+
+ @Override
+ protected void onStop() {
+ super.onStop();
+ SDKWrapper.getInstance().onStop();
+ }
+
+ @Override
+ public void onBackPressed() {
+ SDKWrapper.getInstance().onBackPressed();
+ super.onBackPressed();
+ }
+
+ @Override
+ public void onConfigurationChanged(Configuration newConfig) {
+ SDKWrapper.getInstance().onConfigurationChanged(newConfig);
+ super.onConfigurationChanged(newConfig);
+ }
+
+ @Override
+ protected void onRestoreInstanceState(Bundle savedInstanceState) {
+ SDKWrapper.getInstance().onRestoreInstanceState(savedInstanceState);
+ super.onRestoreInstanceState(savedInstanceState);
+ }
+
+ @Override
+ protected void onSaveInstanceState(Bundle outState) {
+ SDKWrapper.getInstance().onSaveInstanceState(outState);
+ super.onSaveInstanceState(outState);
+ }
+
+ @Override
+ protected void onStart() {
+ SDKWrapper.getInstance().onStart();
+ super.onStart();
+ }
+}
diff --git a/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.android-studio/app/src/org/cocos2dx/javascript/SDKWrapper.java b/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.android-studio/app/src/org/cocos2dx/javascript/SDKWrapper.java
new file mode 100644
index 0000000..4cc8cf3
--- /dev/null
+++ b/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.android-studio/app/src/org/cocos2dx/javascript/SDKWrapper.java
@@ -0,0 +1,179 @@
+/****************************************************************************
+ Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd.
+
+ http://www.cocos.com
+
+ Permission is hereby granted, free of charge, to any person obtaining a copy
+ of this software and associated engine source code (the "Software"), a limited,
+ worldwide, royalty-free, non-assignable, revocable and non-exclusive license
+ to use Cocos Creator solely to develop games on your target platforms. You shall
+ not use Cocos Creator software for developing other software or tools that's
+ used for developing games. You are not granted to publish, distribute,
+ sublicense, and/or sell copies of Cocos Creator.
+
+ The software or tools in this License Agreement are licensed, not sold.
+ Xiamen Yaji Software Co., Ltd. reserves all rights not expressly granted to you.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ THE SOFTWARE.
+ ****************************************************************************/
+
+package org.cocos2dx.javascript;
+
+import android.content.Context;
+import android.content.Intent;
+import android.content.res.AssetManager;
+import android.content.res.Configuration;
+import android.opengl.GLSurfaceView;
+import android.os.Bundle;
+import org.cocos2dx.javascript.service.SDKClass;
+import org.json.*;
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.util.ArrayList;
+import java.util.List;
+
+public class SDKWrapper {
+ private Context mainActive = null;
+ private static SDKWrapper mInstace = null;
+ private List sdkClasses;
+
+ public static SDKWrapper getInstance() {
+ if (null == mInstace) {
+ mInstace = new SDKWrapper();
+ }
+ return mInstace;
+ }
+
+ public void init(Context context) {
+ this.mainActive = context;
+ for (SDKClass sdk : this.sdkClasses) {
+ sdk.init(context);
+ }
+ }
+
+ public Context getContext() {
+ return this.mainActive;
+ }
+
+ public void loadSDKClass() {
+ ArrayList classes = new ArrayList();
+ try {
+ String json = this.getJson(this.mainActive, "project.json");
+ JSONObject jsonObject = new JSONObject(json);
+ JSONArray serviceClassPath = jsonObject.getJSONArray("serviceClassPath");
+ if (serviceClassPath == null) return;
+ int length = serviceClassPath.length();
+ for (int i = 0; i < length; i++) {
+ String classPath = serviceClassPath.getString(i);
+ SDKClass sdk = (SDKClass) Class.forName(classPath).newInstance();
+ classes.add(sdk);
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ this.sdkClasses = classes;
+ }
+
+ private String getJson(Context mContext, String fileName) {
+ StringBuilder sb = new StringBuilder();
+ AssetManager am = mContext.getAssets();
+ try {
+ BufferedReader br = new BufferedReader(new InputStreamReader(am.open(fileName)));
+ String next = "";
+ while (null != (next = br.readLine())) {
+ sb.append(next);
+ }
+ } catch (IOException e) {
+ e.printStackTrace();
+ sb.delete(0, sb.length());
+ }
+ return sb.toString().trim();
+ }
+
+ public void setGLSurfaceView(GLSurfaceView view, Context context) {
+ this.mainActive = context;
+ this.loadSDKClass();
+ for (SDKClass sdk : this.sdkClasses) {
+ sdk.setGLSurfaceView(view);
+ }
+ }
+
+ public void onResume() {
+ for (SDKClass sdk : this.sdkClasses) {
+ sdk.onResume();
+ }
+ }
+
+ public void onPause() {
+ for (SDKClass sdk : this.sdkClasses) {
+ sdk.onPause();
+ }
+ }
+
+ public void onDestroy() {
+ for (SDKClass sdk : this.sdkClasses) {
+ sdk.onDestroy();
+ }
+ }
+
+ public void onActivityResult(int requestCode, int resultCode, Intent data) {
+ for (SDKClass sdk : this.sdkClasses) {
+ sdk.onActivityResult(requestCode, resultCode, data);
+ }
+ }
+
+ public void onNewIntent(Intent intent) {
+ for (SDKClass sdk : this.sdkClasses) {
+ sdk.onNewIntent(intent);
+ }
+ }
+
+ public void onRestart() {
+ for (SDKClass sdk : this.sdkClasses) {
+ sdk.onRestart();
+ }
+ }
+
+ public void onStop() {
+ for (SDKClass sdk : this.sdkClasses) {
+ sdk.onStop();
+ }
+ }
+
+ public void onBackPressed() {
+ for (SDKClass sdk : this.sdkClasses) {
+ sdk.onBackPressed();
+ }
+ }
+
+ public void onConfigurationChanged(Configuration newConfig) {
+ for (SDKClass sdk : this.sdkClasses) {
+ sdk.onConfigurationChanged(newConfig);
+ }
+ }
+
+ public void onRestoreInstanceState(Bundle savedInstanceState) {
+ for (SDKClass sdk : this.sdkClasses) {
+ sdk.onRestoreInstanceState(savedInstanceState);
+ }
+ }
+
+ public void onSaveInstanceState(Bundle outState) {
+ for (SDKClass sdk : this.sdkClasses) {
+ sdk.onSaveInstanceState(outState);
+ }
+ }
+
+ public void onStart() {
+ for (SDKClass sdk : this.sdkClasses) {
+ sdk.onStart();
+ }
+ }
+}
diff --git a/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.android-studio/app/src/org/cocos2dx/javascript/service/SDKClass.java b/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.android-studio/app/src/org/cocos2dx/javascript/service/SDKClass.java
new file mode 100644
index 0000000..d296192
--- /dev/null
+++ b/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.android-studio/app/src/org/cocos2dx/javascript/service/SDKClass.java
@@ -0,0 +1,40 @@
+package org.cocos2dx.javascript.service;
+
+import android.content.Context;
+import android.content.Intent;
+import android.content.res.Configuration;
+import android.opengl.GLSurfaceView;
+import android.os.Bundle;
+
+public abstract class SDKClass implements SDKInterface {
+ private Context mainActive = null;
+ public Context getContext(){ return mainActive;}
+ @Override
+ public void init(Context context){ this.mainActive = context; }
+ @Override
+ public void setGLSurfaceView(GLSurfaceView view){}
+ @Override
+ public void onResume(){}
+ @Override
+ public void onPause(){}
+ @Override
+ public void onDestroy(){}
+ @Override
+ public void onActivityResult(int requestCode, int resultCode, Intent data){}
+ @Override
+ public void onNewIntent(Intent intent){}
+ @Override
+ public void onRestart(){}
+ @Override
+ public void onStop(){}
+ @Override
+ public void onBackPressed(){}
+ @Override
+ public void onConfigurationChanged(Configuration newConfig){}
+ @Override
+ public void onRestoreInstanceState(Bundle savedInstanceState){}
+ @Override
+ public void onSaveInstanceState(Bundle outState){}
+ @Override
+ public void onStart(){}
+}
diff --git a/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.android-studio/app/src/org/cocos2dx/javascript/service/SDKInterface.java b/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.android-studio/app/src/org/cocos2dx/javascript/service/SDKInterface.java
new file mode 100644
index 0000000..a13a329
--- /dev/null
+++ b/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.android-studio/app/src/org/cocos2dx/javascript/service/SDKInterface.java
@@ -0,0 +1,24 @@
+package org.cocos2dx.javascript.service;
+
+import android.content.Context;
+import android.content.Intent;
+import android.content.res.Configuration;
+import android.opengl.GLSurfaceView;
+import android.os.Bundle;
+
+public interface SDKInterface {
+ void init(Context context);
+ void setGLSurfaceView(GLSurfaceView view);
+ void onResume();
+ void onPause();
+ void onDestroy();
+ void onActivityResult(int requestCode, int resultCode, Intent data);
+ void onNewIntent(Intent intent);
+ void onRestart();
+ void onStop();
+ void onBackPressed();
+ void onConfigurationChanged(Configuration newConfig);
+ void onRestoreInstanceState(Bundle savedInstanceState);
+ void onSaveInstanceState(Bundle outState);
+ void onStart();
+}
\ No newline at end of file
diff --git a/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.android-studio/build-cfg.json b/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.android-studio/build-cfg.json
new file mode 100755
index 0000000..850facb
--- /dev/null
+++ b/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.android-studio/build-cfg.json
@@ -0,0 +1,8 @@
+{
+ "ndk_module_path" :[
+ "/Applications/CocosCreator-2.1.3.app/Contents/Resources/cocos2d-x",
+ "/Applications/CocosCreator-2.1.3.app/Contents/Resources/cocos2d-x/cocos",
+ "/Applications/CocosCreator-2.1.3.app/Contents/Resources/cocos2d-x/external"
+ ],
+ "copy_resources": []
+}
diff --git a/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.android-studio/build.gradle b/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.android-studio/build.gradle
new file mode 100755
index 0000000..59e17ac
--- /dev/null
+++ b/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.android-studio/build.gradle
@@ -0,0 +1,30 @@
+// Top-level build file where you can add configuration options common to all sub-projects/modules.
+
+buildscript {
+
+ repositories {
+ google()
+ jcenter()
+ }
+ dependencies {
+ classpath 'com.android.tools.build:gradle:3.3.3'
+
+
+ // NOTE: Do not place your application dependencies here; they belong
+ // in the individual module build.gradle files
+ }
+}
+
+allprojects {
+ repositories {
+ google()
+ jcenter()
+ flatDir {
+ dirs 'libs'
+ }
+ }
+}
+
+task clean(type: Delete) {
+ delete rootProject.buildDir
+}
diff --git a/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.android-studio/gradle.properties b/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.android-studio/gradle.properties
new file mode 100755
index 0000000..0e6d187
--- /dev/null
+++ b/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.android-studio/gradle.properties
@@ -0,0 +1,42 @@
+# Project-wide Gradle settings.
+
+# IDE (e.g. Android Studio) users:
+# Gradle settings configured through the IDE *will override*
+# any settings specified in this file.
+
+# For more details on how to configure your build environment visit
+# http://www.gradle.org/docs/current/userguide/build_environment.html
+
+# Specifies the JVM arguments used for the daemon process.
+# The setting is particularly useful for tweaking memory settings.
+# Default value: -Xmx10248m -XX:MaxPermSize=256m
+# org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
+
+# When configured, Gradle will run in incubating parallel mode.
+# This option should only be used with decoupled projects. More details, visit
+# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
+# org.gradle.parallel=true
+
+# Android SDK version that will be used as the compile project
+PROP_COMPILE_SDK_VERSION=27
+
+# Android SDK version that will be used as the earliest version of android this application can run on
+PROP_MIN_SDK_VERSION=16
+
+# Android SDK version that will be used as the latest version of android this application has been tested on
+PROP_TARGET_SDK_VERSION=27
+
+# Android Build Tools version that will be used as the compile project
+PROP_BUILD_TOOLS_VERSION=28.0.3
+
+# List of CPU Archtexture to build that application with
+# Available architextures (armeabi-v7a | arm64-v8a | x86)
+# To build for multiple architexture, use the `:` between them
+# Example - PROP_APP_ABI=armeabi-v7a:arm64-v8a:x86
+PROP_APP_ABI=armeabi-v7a
+
+# fill in sign information for release mode
+RELEASE_STORE_FILE=
+RELEASE_STORE_PASSWORD=
+RELEASE_KEY_ALIAS=
+RELEASE_KEY_PASSWORD=
diff --git a/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.android-studio/gradle/wrapper/gradle-wrapper.jar b/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.android-studio/gradle/wrapper/gradle-wrapper.jar
new file mode 100755
index 0000000..8c0fb64
Binary files /dev/null and b/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.android-studio/gradle/wrapper/gradle-wrapper.jar differ
diff --git a/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.android-studio/gradle/wrapper/gradle-wrapper.properties b/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.android-studio/gradle/wrapper/gradle-wrapper.properties
new file mode 100755
index 0000000..46f17a9
--- /dev/null
+++ b/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.android-studio/gradle/wrapper/gradle-wrapper.properties
@@ -0,0 +1,6 @@
+#Fri Oct 27 10:18:28 CST 2017
+distributionBase=GRADLE_USER_HOME
+distributionPath=wrapper/dists
+zipStoreBase=GRADLE_USER_HOME
+zipStorePath=wrapper/dists
+distributionUrl=https\://services.gradle.org/distributions/gradle-4.10.3-all.zip
diff --git a/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.android-studio/gradlew b/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.android-studio/gradlew
new file mode 100755
index 0000000..64f1d2c
--- /dev/null
+++ b/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.android-studio/gradlew
@@ -0,0 +1,164 @@
+#!/usr/bin/env bash
+
+##############################################################################
+##
+## Gradle start up script for UN*X
+##
+##############################################################################
+
+# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+DEFAULT_JVM_OPTS=""
+
+APP_NAME="Gradle"
+APP_BASE_NAME=`basename "$0"`
+
+# Use the maximum available, or set MAX_FD != -1 to use that value.
+MAX_FD="maximum"
+
+warn ( ) {
+ echo "$*"
+}
+
+die ( ) {
+ echo
+ echo "$*"
+ echo
+ exit 1
+}
+
+# OS specific support (must be 'true' or 'false').
+cygwin=false
+msys=false
+darwin=false
+case "`uname`" in
+ CYGWIN* )
+ cygwin=true
+ ;;
+ Darwin* )
+ darwin=true
+ ;;
+ MINGW* )
+ msys=true
+ ;;
+esac
+
+# For Cygwin, ensure paths are in UNIX format before anything is touched.
+if $cygwin ; then
+ [ -n "$JAVA_HOME" ] && JAVA_HOME=`cygpath --unix "$JAVA_HOME"`
+fi
+
+# Attempt to set APP_HOME
+# Resolve links: $0 may be a link
+PRG="$0"
+# Need this for relative symlinks.
+while [ -h "$PRG" ] ; do
+ ls=`ls -ld "$PRG"`
+ link=`expr "$ls" : '.*-> \(.*\)$'`
+ if expr "$link" : '/.*' > /dev/null; then
+ PRG="$link"
+ else
+ PRG=`dirname "$PRG"`"/$link"
+ fi
+done
+SAVED="`pwd`"
+cd "`dirname \"$PRG\"`/" >&-
+APP_HOME="`pwd -P`"
+cd "$SAVED" >&-
+
+CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
+
+# Determine the Java command to use to start the JVM.
+if [ -n "$JAVA_HOME" ] ; then
+ if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
+ # IBM's JDK on AIX uses strange locations for the executables
+ JAVACMD="$JAVA_HOME/jre/sh/java"
+ else
+ JAVACMD="$JAVA_HOME/bin/java"
+ fi
+ if [ ! -x "$JAVACMD" ] ; then
+ die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+ fi
+else
+ JAVACMD="java"
+ which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+fi
+
+# Increase the maximum file descriptors if we can.
+if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then
+ MAX_FD_LIMIT=`ulimit -H -n`
+ if [ $? -eq 0 ] ; then
+ if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
+ MAX_FD="$MAX_FD_LIMIT"
+ fi
+ ulimit -n $MAX_FD
+ if [ $? -ne 0 ] ; then
+ warn "Could not set maximum file descriptor limit: $MAX_FD"
+ fi
+ else
+ warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
+ fi
+fi
+
+# For Darwin, add options to specify how the application appears in the dock
+if $darwin; then
+ GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
+fi
+
+# For Cygwin, switch paths to Windows format before running java
+if $cygwin ; then
+ APP_HOME=`cygpath --path --mixed "$APP_HOME"`
+ CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
+
+ # We build the pattern for arguments to be converted via cygpath
+ ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
+ SEP=""
+ for dir in $ROOTDIRSRAW ; do
+ ROOTDIRS="$ROOTDIRS$SEP$dir"
+ SEP="|"
+ done
+ OURCYGPATTERN="(^($ROOTDIRS))"
+ # Add a user-defined pattern to the cygpath arguments
+ if [ "$GRADLE_CYGPATTERN" != "" ] ; then
+ OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
+ fi
+ # Now convert the arguments - kludge to limit ourselves to /bin/sh
+ i=0
+ for arg in "$@" ; do
+ CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
+ CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option
+
+ if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition
+ eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
+ else
+ eval `echo args$i`="\"$arg\""
+ fi
+ i=$((i+1))
+ done
+ case $i in
+ (0) set -- ;;
+ (1) set -- "$args0" ;;
+ (2) set -- "$args0" "$args1" ;;
+ (3) set -- "$args0" "$args1" "$args2" ;;
+ (4) set -- "$args0" "$args1" "$args2" "$args3" ;;
+ (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
+ (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
+ (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
+ (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
+ (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
+ esac
+fi
+
+# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules
+function splitJvmOpts() {
+ JVM_OPTS=("$@")
+}
+eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS
+JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME"
+eval "source ~/.bash_profile"
+exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@"
diff --git a/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.android-studio/gradlew.bat b/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.android-studio/gradlew.bat
new file mode 100755
index 0000000..8a0b282
--- /dev/null
+++ b/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.android-studio/gradlew.bat
@@ -0,0 +1,90 @@
+@if "%DEBUG%" == "" @echo off
+@rem ##########################################################################
+@rem
+@rem Gradle startup script for Windows
+@rem
+@rem ##########################################################################
+
+@rem Set local scope for the variables with windows NT shell
+if "%OS%"=="Windows_NT" setlocal
+
+@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+set DEFAULT_JVM_OPTS=
+
+set DIRNAME=%~dp0
+if "%DIRNAME%" == "" set DIRNAME=.
+set APP_BASE_NAME=%~n0
+set APP_HOME=%DIRNAME%
+
+@rem Find java.exe
+if defined JAVA_HOME goto findJavaFromJavaHome
+
+set JAVA_EXE=java.exe
+%JAVA_EXE% -version >NUL 2>&1
+if "%ERRORLEVEL%" == "0" goto init
+
+echo.
+echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+echo.
+echo Please set the JAVA_HOME variable in your environment to match the
+echo location of your Java installation.
+
+goto fail
+
+:findJavaFromJavaHome
+set JAVA_HOME=%JAVA_HOME:"=%
+set JAVA_EXE=%JAVA_HOME%/bin/java.exe
+
+if exist "%JAVA_EXE%" goto init
+
+echo.
+echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
+echo.
+echo Please set the JAVA_HOME variable in your environment to match the
+echo location of your Java installation.
+
+goto fail
+
+:init
+@rem Get command-line arguments, handling Windowz variants
+
+if not "%OS%" == "Windows_NT" goto win9xME_args
+if "%@eval[2+2]" == "4" goto 4NT_args
+
+:win9xME_args
+@rem Slurp the command line arguments.
+set CMD_LINE_ARGS=
+set _SKIP=2
+
+:win9xME_args_slurp
+if "x%~1" == "x" goto execute
+
+set CMD_LINE_ARGS=%*
+goto execute
+
+:4NT_args
+@rem Get arguments from the 4NT Shell from JP Software
+set CMD_LINE_ARGS=%$
+
+:execute
+@rem Setup the command line
+
+set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
+
+@rem Execute Gradle
+"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
+
+:end
+@rem End local scope for the variables with windows NT shell
+if "%ERRORLEVEL%"=="0" goto mainEnd
+
+:fail
+rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
+rem the _cmd.exe /c_ return code!
+if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
+exit /b 1
+
+:mainEnd
+if "%OS%"=="Windows_NT" endlocal
+
+:omega
diff --git a/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.android-studio/settings.gradle b/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.android-studio/settings.gradle
new file mode 100755
index 0000000..f8ee2ec
--- /dev/null
+++ b/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.android-studio/settings.gradle
@@ -0,0 +1,4 @@
+include ':libcocos2dx'
+project(':libcocos2dx').projectDir = new File('/Applications/CocosCreator-2.1.3.app/Contents/Resources/cocos2d-x/cocos/platform/android/libcocos2dx')
+include ':StepOfDoom'
+project(':StepOfDoom').projectDir = new File(settingsDir, 'app')
diff --git a/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.ios_mac/.DS_Store b/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.ios_mac/.DS_Store
new file mode 100644
index 0000000..416646d
Binary files /dev/null and b/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.ios_mac/.DS_Store differ
diff --git a/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.ios_mac/StepOfDoom.xcodeproj/project.pbxproj b/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.ios_mac/StepOfDoom.xcodeproj/project.pbxproj
new file mode 100755
index 0000000..c235272
--- /dev/null
+++ b/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.ios_mac/StepOfDoom.xcodeproj/project.pbxproj
@@ -0,0 +1,781 @@
+// !$*UTF8*$!
+{
+ archiveVersion = 1;
+ classes = {
+ };
+ objectVersion = 46;
+ objects = {
+
+/* Begin PBXBuildFile section */
+ 1A37E9DA200DEF120078AF72 /* SystemConfiguration.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1A37E9D9200DEF110078AF72 /* SystemConfiguration.framework */; };
+ 1A37E9DC200DEF190078AF72 /* SystemConfiguration.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1A37E9DB200DEF190078AF72 /* SystemConfiguration.framework */; };
+ 1A499EBB1F0CDDC3004E6AEC /* CFNetwork.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1A499EBA1F0CDDC3004E6AEC /* CFNetwork.framework */; };
+ 1A499EBD1F0CDDD9004E6AEC /* libicucore.A.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 1A499EBC1F0CDDD9004E6AEC /* libicucore.A.tbd */; };
+ 1A82F5FB169AC92500C4B13A /* libsqlite3.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 1A82F5FA169AC92500C4B13A /* libsqlite3.dylib */; };
+ 1AC22EDE18CA0E11007112B9 /* project.json in Resources */ = {isa = PBXBuildFile; fileRef = 1A1A081B18C9DF05005C6854 /* project.json */; };
+ 1ACA99231F550A20002DE225 /* JavaScriptCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1ACA99221F550A20002DE225 /* JavaScriptCore.framework */; };
+ 1ACA99251F550A28002DE225 /* JavaScriptCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1ACA99241F550A28002DE225 /* JavaScriptCore.framework */; };
+ 1AD7E0A818C9DB93004817A6 /* main.js in Resources */ = {isa = PBXBuildFile; fileRef = 1A6BF21418C9DB5900FB0E1C /* main.js */; };
+ 1AD7E0A918C9DBE3004817A6 /* main.js in Resources */ = {isa = PBXBuildFile; fileRef = 1A6BF21418C9DB5900FB0E1C /* main.js */; };
+ 1AE159EC18C9DF3600FCA372 /* project.json in Resources */ = {isa = PBXBuildFile; fileRef = 1A1A081B18C9DF05005C6854 /* project.json */; };
+ 1AFFCD7E1F7A5D5400628F2C /* LaunchScreenBackground.png in Resources */ = {isa = PBXBuildFile; fileRef = 1AFFCD7B1F7A5D4F00628F2C /* LaunchScreenBackground.png */; };
+ 1AFFCD7F1F7A5D5400628F2C /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 1ABC56911F7A005D00826282 /* Images.xcassets */; };
+ 22CC757121BA5B5C00FBF2F7 /* SDKWrapper.m in Sources */ = {isa = PBXBuildFile; fileRef = 22CC756D21BA5B5C00FBF2F7 /* SDKWrapper.m */; };
+ 28A34C10225B462E00926306 /* subpackages in Resources */ = {isa = PBXBuildFile; fileRef = 28A34C0F225B462E00926306 /* subpackages */; };
+ 294D7D801D0D668F002CE7B7 /* CoreText.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 294D7D7F1D0D668F002CE7B7 /* CoreText.framework */; };
+ 4011F9CF212BD6750091CC5B /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 4011F9D1212BD6750091CC5B /* LaunchScreen.storyboard */; };
+ 4011F9D5212BD7050091CC5B /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = 4011F9D7212BD7050091CC5B /* Localizable.strings */; };
+ 4033CDBC20E4935100DAA37B /* jsb-adapter in Resources */ = {isa = PBXBuildFile; fileRef = 4033CDBB20E4935000DAA37B /* jsb-adapter */; };
+ 4033CDBD20E4935100DAA37B /* jsb-adapter in Resources */ = {isa = PBXBuildFile; fileRef = 4033CDBB20E4935000DAA37B /* jsb-adapter */; };
+ 467AF6082321FBED00770112 /* WebKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 467AF6072321FBED00770112 /* WebKit.framework */; };
+ 467AF613232881E400770112 /* AVKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 467AF612232881E400770112 /* AVKit.framework */; };
+ 467AF615232881EB00770112 /* CoreMedia.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 467AF614232881EB00770112 /* CoreMedia.framework */; };
+ 4DD5E6AB1CDAF6430046171E /* libcocos2d Mac.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 4DD0DB561CDAF5F40099AD86 /* libcocos2d Mac.a */; };
+ 4DD5E6B11CDAF65C0046171E /* libcocos2d iOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 4DD0DB581CDAF5F40099AD86 /* libcocos2d iOS.a */; };
+ 502380DC17EBB88200990C9B /* libcurl.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 502380DB17EBB88200990C9B /* libcurl.dylib */; };
+ 509D4A8117EBB24E00697056 /* AppDelegate.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D4545215156E28EF00887EB5 /* AppDelegate.cpp */; };
+ 509D4A8817EBB24E00697056 /* libsqlite3.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 1A82F5FA169AC92500C4B13A /* libsqlite3.dylib */; };
+ 509D4A8917EBB24E00697056 /* libz.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = D454520B156E22BD00887EB5 /* libz.dylib */; };
+ 509D4A8A17EBB24E00697056 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A92275411517C094001B78AA /* QuartzCore.framework */; };
+ 509D4A8C17EBB24E00697056 /* OpenAL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A92275451517C094001B78AA /* OpenAL.framework */; };
+ 509D4A8D17EBB24E00697056 /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A92275471517C094001B78AA /* AudioToolbox.framework */; };
+ 509D4A8E17EBB24E00697056 /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A92275491517C094001B78AA /* AVFoundation.framework */; };
+ 509D4A9017EBB24E00697056 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A922754D1517C094001B78AA /* Foundation.framework */; };
+ 509D4A9117EBB24E00697056 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A922754F1517C094001B78AA /* CoreGraphics.framework */; };
+ 509D4ABC17EBB2AB00697056 /* AppController.mm in Sources */ = {isa = PBXBuildFile; fileRef = 509D4AAC17EBB2AB00697056 /* AppController.mm */; };
+ 509D4AC817EBB2AB00697056 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 509D4AB817EBB2AB00697056 /* main.m */; };
+ 509D4AC917EBB2AB00697056 /* RootViewController.mm in Sources */ = {isa = PBXBuildFile; fileRef = 509D4ABB17EBB2AB00697056 /* RootViewController.mm */; };
+ 509D4ACF17EBB2BE00697056 /* Icon.icns in Resources */ = {isa = PBXBuildFile; fileRef = 509D4ACB17EBB2BE00697056 /* Icon.icns */; };
+ 509D4AE717EBB81800697056 /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 509D4AE617EBB81800697056 /* OpenGL.framework */; };
+ 509D4AE917EBB82000697056 /* AppKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 509D4AE817EBB82000697056 /* AppKit.framework */; };
+ 509D4AEB17EBB82600697056 /* IOKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 509D4AEA17EBB82600697056 /* IOKit.framework */; };
+ A92275421517C094001B78AA /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A92275411517C094001B78AA /* QuartzCore.framework */; };
+ A92275441517C094001B78AA /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A92275431517C094001B78AA /* OpenGLES.framework */; };
+ A92275461517C094001B78AA /* OpenAL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A92275451517C094001B78AA /* OpenAL.framework */; };
+ A92275481517C094001B78AA /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A92275471517C094001B78AA /* AudioToolbox.framework */; };
+ A922754A1517C094001B78AA /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A92275491517C094001B78AA /* AVFoundation.framework */; };
+ A922754C1517C094001B78AA /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A922754B1517C094001B78AA /* UIKit.framework */; };
+ A922754E1517C094001B78AA /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A922754D1517C094001B78AA /* Foundation.framework */; };
+ A92275501517C094001B78AA /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A922754F1517C094001B78AA /* CoreGraphics.framework */; };
+ ABE456E31D34F87300F1F400 /* CFNetwork.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = ABE456E21D34F87300F1F400 /* CFNetwork.framework */; };
+ ABE456E51D34F87A00F1F400 /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = ABE456E41D34F87A00F1F400 /* CoreFoundation.framework */; };
+ ABE456E71D34F87F00F1F400 /* MobileCoreServices.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = ABE456E61D34F87F00F1F400 /* MobileCoreServices.framework */; };
+ ABE456E91D34F88A00F1F400 /* SystemConfiguration.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = ABE456E81D34F88A00F1F400 /* SystemConfiguration.framework */; };
+ ABE456EB1D34F89000F1F400 /* GameController.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = ABE456EA1D34F89000F1F400 /* GameController.framework */; };
+ BA3A85EC1A724AE900924D24 /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BA3A85EB1A724AE900924D24 /* Security.framework */; };
+ BAEE4D841AC40C11003BEB0F /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BAEE4D831AC40C11003BEB0F /* Security.framework */; };
+ C03780EB18BEE0E400FE4F13 /* src in Resources */ = {isa = PBXBuildFile; fileRef = C03780EA18BEE0E400FE4F13 /* src */; };
+ C03780EC18BEE0E400FE4F13 /* src in Resources */ = {isa = PBXBuildFile; fileRef = C03780EA18BEE0E400FE4F13 /* src */; };
+ C06E23CC18CEFE680093C81A /* main.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C06E23CB18CEFE680093C81A /* main.cpp */; };
+ C0799CB918BAE62000E9C828 /* res in Resources */ = {isa = PBXBuildFile; fileRef = C0799CB518BAE62000E9C828 /* res */; };
+ C0799CBA18BAE62000E9C828 /* res in Resources */ = {isa = PBXBuildFile; fileRef = C0799CB518BAE62000E9C828 /* res */; };
+ D454520C156E22BD00887EB5 /* libz.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = D454520B156E22BD00887EB5 /* libz.dylib */; };
+ D4545227156E28EF00887EB5 /* AppDelegate.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D4545215156E28EF00887EB5 /* AppDelegate.cpp */; };
+ D6B061241803AB9F0077942B /* CoreMotion.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D6B061231803AB9F0077942B /* CoreMotion.framework */; };
+ FA676C761C71AFA200E091E3 /* libiconv.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = FA676C751C71AFA200E091E3 /* libiconv.dylib */; };
+ FA676C781C71AFAB00E091E3 /* libiconv.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = FA676C771C71AFAB00E091E3 /* libiconv.dylib */; };
+/* End PBXBuildFile section */
+
+/* Begin PBXContainerItemProxy section */
+ 4DD0DB551CDAF5F40099AD86 /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = 1AC6FB34180E9ACB004C840B /* cocos2d_libs.xcodeproj */;
+ proxyType = 2;
+ remoteGlobalIDString = 1551A33F158F2AB200E66CFE;
+ remoteInfo = "libcocos2d Mac";
+ };
+ 4DD0DB571CDAF5F40099AD86 /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = 1AC6FB34180E9ACB004C840B /* cocos2d_libs.xcodeproj */;
+ proxyType = 2;
+ remoteGlobalIDString = A07A4D641783777C0073F6A7;
+ remoteInfo = "libcocos2d iOS";
+ };
+ 4DD5E6A91CDAF6330046171E /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = 1AC6FB34180E9ACB004C840B /* cocos2d_libs.xcodeproj */;
+ proxyType = 1;
+ remoteGlobalIDString = 1551A33E158F2AB200E66CFE;
+ remoteInfo = "libcocos2d Mac";
+ };
+ 4DD5E6AF1CDAF6520046171E /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = 1AC6FB34180E9ACB004C840B /* cocos2d_libs.xcodeproj */;
+ proxyType = 1;
+ remoteGlobalIDString = A07A4C241783777C0073F6A7;
+ remoteInfo = "libcocos2d iOS";
+ };
+/* End PBXContainerItemProxy section */
+
+/* Begin PBXFileReference section */
+ 051C018121E32AE400D4A347 /* UserConfigIOS.release.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = UserConfigIOS.release.xcconfig; path = ios/UserConfigIOS.release.xcconfig; sourceTree = ""; };
+ 051C018221E32AE400D4A347 /* UserConfigIOS.debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = UserConfigIOS.debug.xcconfig; path = ios/UserConfigIOS.debug.xcconfig; sourceTree = ""; };
+ 051C018521E32AF000D4A347 /* UserConfigMac.release.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = UserConfigMac.release.xcconfig; sourceTree = ""; };
+ 051C018621E32AF100D4A347 /* UserConfigMac.debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = UserConfigMac.debug.xcconfig; sourceTree = ""; };
+ 1A1A081B18C9DF05005C6854 /* project.json */ = {isa = PBXFileReference; lastKnownFileType = text.json; name = project.json; path = ../../../project.json; sourceTree = ""; };
+ 1A37E9D9200DEF110078AF72 /* SystemConfiguration.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SystemConfiguration.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS11.2.sdk/System/Library/Frameworks/SystemConfiguration.framework; sourceTree = DEVELOPER_DIR; };
+ 1A37E9DB200DEF190078AF72 /* SystemConfiguration.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SystemConfiguration.framework; path = System/Library/Frameworks/SystemConfiguration.framework; sourceTree = SDKROOT; };
+ 1A499EBA1F0CDDC3004E6AEC /* CFNetwork.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CFNetwork.framework; path = System/Library/Frameworks/CFNetwork.framework; sourceTree = SDKROOT; };
+ 1A499EBC1F0CDDD9004E6AEC /* libicucore.A.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libicucore.A.tbd; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS10.3.sdk/usr/lib/libicucore.A.tbd; sourceTree = DEVELOPER_DIR; };
+ 1A6BF21418C9DB5900FB0E1C /* main.js */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.javascript; name = main.js; path = ../../../main.js; sourceTree = ""; };
+ 1A82F5FA169AC92500C4B13A /* libsqlite3.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libsqlite3.dylib; path = usr/lib/libsqlite3.dylib; sourceTree = SDKROOT; };
+ 1A96A4F2174A3432008653A9 /* libcurl.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libcurl.a; path = "../../cocos2d-x/cocos2dx/platform/third_party/ios/libraries/libcurl.a"; sourceTree = ""; };
+ 1ABC56911F7A005D00826282 /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Images.xcassets; path = ios/Images.xcassets; sourceTree = ""; };
+ 1AC6FB34180E9ACB004C840B /* cocos2d_libs.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = cocos2d_libs.xcodeproj; path = "/Applications/CocosCreator-2.1.3.app/Contents/Resources/cocos2d-x/build/cocos2d_libs.xcodeproj"; sourceTree = ""; };
+ 1ACA99221F550A20002DE225 /* JavaScriptCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = JavaScriptCore.framework; path = System/Library/Frameworks/JavaScriptCore.framework; sourceTree = SDKROOT; };
+ 1ACA99241F550A28002DE225 /* JavaScriptCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = JavaScriptCore.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS10.3.sdk/System/Library/Frameworks/JavaScriptCore.framework; sourceTree = DEVELOPER_DIR; };
+ 1AFFCD7B1F7A5D4F00628F2C /* LaunchScreenBackground.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = LaunchScreenBackground.png; path = ios/LaunchScreenBackground.png; sourceTree = ""; };
+ 22CC756D21BA5B5C00FBF2F7 /* SDKWrapper.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDKWrapper.m; path = ios/SDKWrapper.m; sourceTree = ""; };
+ 22CC756F21BA5B5C00FBF2F7 /* SDKDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDKDelegate.h; sourceTree = ""; };
+ 22CC757021BA5B5C00FBF2F7 /* SDKWrapper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDKWrapper.h; path = ios/SDKWrapper.h; sourceTree = ""; };
+ 28A34C0F225B462E00926306 /* subpackages */ = {isa = PBXFileReference; lastKnownFileType = folder; name = subpackages; path = ../../../subpackages; sourceTree = ""; };
+ 294D7D7F1D0D668F002CE7B7 /* CoreText.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreText.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS9.3.sdk/System/Library/Frameworks/CoreText.framework; sourceTree = DEVELOPER_DIR; };
+ 4011F9D2212BD6810091CC5B /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; };
+ 4011F9D8212BD7150091CC5B /* Base */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = Base; path = Base.lproj/Localizable.strings; sourceTree = ""; };
+ 4011F9D9212BD73A0091CC5B /* zh-Hans */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hans"; path = "zh-Hans.lproj/Localizable.strings"; sourceTree = ""; };
+ 4033CDBB20E4935000DAA37B /* jsb-adapter */ = {isa = PBXFileReference; lastKnownFileType = folder; name = "jsb-adapter"; path = "../../../jsb-adapter"; sourceTree = ""; };
+ 467AF6072321FBED00770112 /* WebKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = WebKit.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/System/Library/Frameworks/WebKit.framework; sourceTree = DEVELOPER_DIR; };
+ 467AF612232881E400770112 /* AVKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AVKit.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/System/Library/Frameworks/AVKit.framework; sourceTree = DEVELOPER_DIR; };
+ 467AF614232881EB00770112 /* CoreMedia.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreMedia.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/System/Library/Frameworks/CoreMedia.framework; sourceTree = DEVELOPER_DIR; };
+ 4D697BD91CBD301C00A5AF29 /* libjs_static.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libjs_static.a; path = "/Applications/CocosCreator-2.1.3.app/Contents/Resources/cocos2d-x/external/ios/libs/libjs_static.a"; sourceTree = ""; };
+ 4D697BDC1CBD303100A5AF29 /* libjs_static.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libjs_static.a; path = "/Applications/CocosCreator-2.1.3.app/Contents/Resources/cocos2d-x/external/mac/libs/libjs_static.a"; sourceTree = ""; };
+ 502380DB17EBB88200990C9B /* libcurl.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libcurl.dylib; path = usr/lib/libcurl.dylib; sourceTree = SDKROOT; };
+ 509D4AAA17EBB24E00697056 /* StepOfDoom-desktop.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "StepOfDoom-desktop.app"; sourceTree = BUILT_PRODUCTS_DIR; };
+ 509D4AAB17EBB2AB00697056 /* AppController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AppController.h; path = ios/AppController.h; sourceTree = ""; };
+ 509D4AAC17EBB2AB00697056 /* AppController.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = AppController.mm; path = ios/AppController.mm; sourceTree = ""; };
+ 509D4AB717EBB2AB00697056 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Info.plist; path = ios/Info.plist; sourceTree = ""; };
+ 509D4AB817EBB2AB00697056 /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = main.m; path = ios/main.m; sourceTree = ""; };
+ 509D4AB917EBB2AB00697056 /* Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Prefix.pch; path = ios/Prefix.pch; sourceTree = ""; };
+ 509D4ABA17EBB2AB00697056 /* RootViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RootViewController.h; path = ios/RootViewController.h; sourceTree = ""; };
+ 509D4ABB17EBB2AB00697056 /* RootViewController.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = RootViewController.mm; path = ios/RootViewController.mm; sourceTree = ""; };
+ 509D4ACB17EBB2BE00697056 /* Icon.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; path = Icon.icns; sourceTree = ""; };
+ 509D4ACC17EBB2BE00697056 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
+ 509D4ACE17EBB2BE00697056 /* Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Prefix.pch; sourceTree = ""; };
+ 509D4AE617EBB81800697056 /* OpenGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGL.framework; path = System/Library/Frameworks/OpenGL.framework; sourceTree = SDKROOT; };
+ 509D4AE817EBB82000697056 /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = System/Library/Frameworks/AppKit.framework; sourceTree = SDKROOT; };
+ 509D4AEA17EBB82600697056 /* IOKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = IOKit.framework; path = System/Library/Frameworks/IOKit.framework; sourceTree = SDKROOT; };
+ A922753D1517C094001B78AA /* StepOfDoom-mobile.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "StepOfDoom-mobile.app"; sourceTree = BUILT_PRODUCTS_DIR; };
+ A92275411517C094001B78AA /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = System/Library/Frameworks/QuartzCore.framework; sourceTree = SDKROOT; };
+ A92275431517C094001B78AA /* OpenGLES.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGLES.framework; path = System/Library/Frameworks/OpenGLES.framework; sourceTree = SDKROOT; };
+ A92275451517C094001B78AA /* OpenAL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenAL.framework; path = System/Library/Frameworks/OpenAL.framework; sourceTree = SDKROOT; };
+ A92275471517C094001B78AA /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioToolbox.framework; path = System/Library/Frameworks/AudioToolbox.framework; sourceTree = SDKROOT; };
+ A92275491517C094001B78AA /* AVFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AVFoundation.framework; path = System/Library/Frameworks/AVFoundation.framework; sourceTree = SDKROOT; };
+ A922754B1517C094001B78AA /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; };
+ A922754D1517C094001B78AA /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; };
+ A922754F1517C094001B78AA /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; };
+ ABE456E21D34F87300F1F400 /* CFNetwork.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CFNetwork.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS9.3.sdk/System/Library/Frameworks/CFNetwork.framework; sourceTree = DEVELOPER_DIR; };
+ ABE456E41D34F87A00F1F400 /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreFoundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS9.3.sdk/System/Library/Frameworks/CoreFoundation.framework; sourceTree = DEVELOPER_DIR; };
+ ABE456E61D34F87F00F1F400 /* MobileCoreServices.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MobileCoreServices.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS9.3.sdk/System/Library/Frameworks/MobileCoreServices.framework; sourceTree = DEVELOPER_DIR; };
+ ABE456E81D34F88A00F1F400 /* SystemConfiguration.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SystemConfiguration.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS9.3.sdk/System/Library/Frameworks/SystemConfiguration.framework; sourceTree = DEVELOPER_DIR; };
+ ABE456EA1D34F89000F1F400 /* GameController.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = GameController.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS9.3.sdk/System/Library/Frameworks/GameController.framework; sourceTree = DEVELOPER_DIR; };
+ BA3A85EB1A724AE900924D24 /* Security.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Security.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS8.1.sdk/System/Library/Frameworks/Security.framework; sourceTree = DEVELOPER_DIR; };
+ BA4E718019EB6E3E00932425 /* MediaPlayer.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MediaPlayer.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS8.0.sdk/System/Library/Frameworks/MediaPlayer.framework; sourceTree = DEVELOPER_DIR; };
+ BA4E718219EB6E4600932425 /* GameController.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = GameController.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS8.0.sdk/System/Library/Frameworks/GameController.framework; sourceTree = DEVELOPER_DIR; };
+ BAEE4D831AC40C11003BEB0F /* Security.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Security.framework; path = System/Library/Frameworks/Security.framework; sourceTree = SDKROOT; };
+ C03780EA18BEE0E400FE4F13 /* src */ = {isa = PBXFileReference; lastKnownFileType = folder; name = src; path = ../../../src; sourceTree = ""; };
+ C06E23CB18CEFE680093C81A /* main.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = main.cpp; sourceTree = ""; };
+ C0799CB518BAE62000E9C828 /* res */ = {isa = PBXFileReference; lastKnownFileType = folder; name = res; path = ../../../res; sourceTree = ""; };
+ D454520B156E22BD00887EB5 /* libz.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libz.dylib; path = usr/lib/libz.dylib; sourceTree = SDKROOT; };
+ D4545215156E28EF00887EB5 /* AppDelegate.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AppDelegate.cpp; sourceTree = ""; };
+ D4545216156E28EF00887EB5 /* AppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = ""; };
+ D6B061231803AB9F0077942B /* CoreMotion.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreMotion.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS7.0.sdk/System/Library/Frameworks/CoreMotion.framework; sourceTree = DEVELOPER_DIR; };
+ FA676C751C71AFA200E091E3 /* libiconv.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libiconv.dylib; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS8.4.sdk/usr/lib/libiconv.dylib; sourceTree = DEVELOPER_DIR; };
+ FA676C771C71AFAB00E091E3 /* libiconv.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libiconv.dylib; path = usr/lib/libiconv.dylib; sourceTree = SDKROOT; };
+ FA81D1222BD43A37008B5689 /* MessageUI.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MessageUI.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS17.4.sdk/System/Library/Frameworks/MessageUI.framework; sourceTree = DEVELOPER_DIR; };
+ FA81D1242BD43A40008B5689 /* Photos.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Photos.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS17.4.sdk/System/Library/Frameworks/Photos.framework; sourceTree = DEVELOPER_DIR; };
+/* End PBXFileReference section */
+
+/* Begin PBXFrameworksBuildPhase section */
+ 509D4A8217EBB24E00697056 /* Frameworks */ = {
+ isa = PBXFrameworksBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 1A37E9DC200DEF190078AF72 /* SystemConfiguration.framework in Frameworks */,
+ 1ACA99231F550A20002DE225 /* JavaScriptCore.framework in Frameworks */,
+ 1A499EBB1F0CDDC3004E6AEC /* CFNetwork.framework in Frameworks */,
+ 4DD5E6AB1CDAF6430046171E /* libcocos2d Mac.a in Frameworks */,
+ FA676C781C71AFAB00E091E3 /* libiconv.dylib in Frameworks */,
+ BAEE4D841AC40C11003BEB0F /* Security.framework in Frameworks */,
+ 502380DC17EBB88200990C9B /* libcurl.dylib in Frameworks */,
+ 509D4A8817EBB24E00697056 /* libsqlite3.dylib in Frameworks */,
+ 509D4A8917EBB24E00697056 /* libz.dylib in Frameworks */,
+ 509D4AEB17EBB82600697056 /* IOKit.framework in Frameworks */,
+ 509D4AE917EBB82000697056 /* AppKit.framework in Frameworks */,
+ 509D4AE717EBB81800697056 /* OpenGL.framework in Frameworks */,
+ 509D4A8A17EBB24E00697056 /* QuartzCore.framework in Frameworks */,
+ 509D4A8C17EBB24E00697056 /* OpenAL.framework in Frameworks */,
+ 509D4A8D17EBB24E00697056 /* AudioToolbox.framework in Frameworks */,
+ 509D4A8E17EBB24E00697056 /* AVFoundation.framework in Frameworks */,
+ 509D4A9017EBB24E00697056 /* Foundation.framework in Frameworks */,
+ 509D4A9117EBB24E00697056 /* CoreGraphics.framework in Frameworks */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ A922753A1517C094001B78AA /* Frameworks */ = {
+ isa = PBXFrameworksBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 467AF615232881EB00770112 /* CoreMedia.framework in Frameworks */,
+ 467AF613232881E400770112 /* AVKit.framework in Frameworks */,
+ 467AF6082321FBED00770112 /* WebKit.framework in Frameworks */,
+ 1A37E9DA200DEF120078AF72 /* SystemConfiguration.framework in Frameworks */,
+ 1ACA99251F550A28002DE225 /* JavaScriptCore.framework in Frameworks */,
+ 1A499EBD1F0CDDD9004E6AEC /* libicucore.A.tbd in Frameworks */,
+ ABE456EB1D34F89000F1F400 /* GameController.framework in Frameworks */,
+ ABE456E91D34F88A00F1F400 /* SystemConfiguration.framework in Frameworks */,
+ ABE456E71D34F87F00F1F400 /* MobileCoreServices.framework in Frameworks */,
+ ABE456E51D34F87A00F1F400 /* CoreFoundation.framework in Frameworks */,
+ ABE456E31D34F87300F1F400 /* CFNetwork.framework in Frameworks */,
+ 294D7D801D0D668F002CE7B7 /* CoreText.framework in Frameworks */,
+ 4DD5E6B11CDAF65C0046171E /* libcocos2d iOS.a in Frameworks */,
+ FA676C761C71AFA200E091E3 /* libiconv.dylib in Frameworks */,
+ BA3A85EC1A724AE900924D24 /* Security.framework in Frameworks */,
+ D6B061241803AB9F0077942B /* CoreMotion.framework in Frameworks */,
+ 1A82F5FB169AC92500C4B13A /* libsqlite3.dylib in Frameworks */,
+ D454520C156E22BD00887EB5 /* libz.dylib in Frameworks */,
+ A92275421517C094001B78AA /* QuartzCore.framework in Frameworks */,
+ A92275441517C094001B78AA /* OpenGLES.framework in Frameworks */,
+ A92275461517C094001B78AA /* OpenAL.framework in Frameworks */,
+ A92275481517C094001B78AA /* AudioToolbox.framework in Frameworks */,
+ A922754A1517C094001B78AA /* AVFoundation.framework in Frameworks */,
+ A922754C1517C094001B78AA /* UIKit.framework in Frameworks */,
+ A922754E1517C094001B78AA /* Foundation.framework in Frameworks */,
+ A92275501517C094001B78AA /* CoreGraphics.framework in Frameworks */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXFrameworksBuildPhase section */
+
+/* Begin PBXGroup section */
+ 15628F5B15F0F5C2000CF24B /* Resources */ = {
+ isa = PBXGroup;
+ children = (
+ 4033CDBB20E4935000DAA37B /* jsb-adapter */,
+ 1A1A081B18C9DF05005C6854 /* project.json */,
+ 1A6BF21418C9DB5900FB0E1C /* main.js */,
+ C0799CB518BAE62000E9C828 /* res */,
+ C03780EA18BEE0E400FE4F13 /* src */,
+ 4011F9D7212BD7050091CC5B /* Localizable.strings */,
+ );
+ name = Resources;
+ sourceTree = "";
+ };
+ 22CC756E21BA5B5C00FBF2F7 /* service */ = {
+ isa = PBXGroup;
+ children = (
+ 22CC756F21BA5B5C00FBF2F7 /* SDKDelegate.h */,
+ );
+ name = service;
+ path = ios/service;
+ sourceTree = "";
+ };
+ 4DD0DB511CDAF5F40099AD86 /* Products */ = {
+ isa = PBXGroup;
+ children = (
+ 4DD0DB561CDAF5F40099AD86 /* libcocos2d Mac.a */,
+ 4DD0DB581CDAF5F40099AD86 /* libcocos2d iOS.a */,
+ );
+ name = Products;
+ sourceTree = "";
+ };
+ 509D4ACA17EBB2BE00697056 /* mac */ = {
+ isa = PBXGroup;
+ children = (
+ 051C018621E32AF100D4A347 /* UserConfigMac.debug.xcconfig */,
+ 051C018521E32AF000D4A347 /* UserConfigMac.release.xcconfig */,
+ C06E23CB18CEFE680093C81A /* main.cpp */,
+ 509D4ACB17EBB2BE00697056 /* Icon.icns */,
+ 509D4ACC17EBB2BE00697056 /* Info.plist */,
+ 509D4ACE17EBB2BE00697056 /* Prefix.pch */,
+ );
+ path = mac;
+ sourceTree = "";
+ };
+ A92275321517C094001B78AA = {
+ isa = PBXGroup;
+ children = (
+ 28A34C0F225B462E00926306 /* subpackages */,
+ 1AC6FB34180E9ACB004C840B /* cocos2d_libs.xcodeproj */,
+ D4545214156E28EF00887EB5 /* Classes */,
+ A92275401517C094001B78AA /* Frameworks */,
+ D45446CC156DE73F00887EB5 /* ios */,
+ 509D4ACA17EBB2BE00697056 /* mac */,
+ A922753E1517C094001B78AA /* Products */,
+ 15628F5B15F0F5C2000CF24B /* Resources */,
+ );
+ sourceTree = "";
+ };
+ A922753E1517C094001B78AA /* Products */ = {
+ isa = PBXGroup;
+ children = (
+ A922753D1517C094001B78AA /* StepOfDoom-mobile.app */,
+ 509D4AAA17EBB24E00697056 /* StepOfDoom-desktop.app */,
+ );
+ name = Products;
+ sourceTree = "";
+ };
+ A92275401517C094001B78AA /* Frameworks */ = {
+ isa = PBXGroup;
+ children = (
+ FA81D1242BD43A40008B5689 /* Photos.framework */,
+ FA81D1222BD43A37008B5689 /* MessageUI.framework */,
+ 467AF614232881EB00770112 /* CoreMedia.framework */,
+ 467AF612232881E400770112 /* AVKit.framework */,
+ 467AF6072321FBED00770112 /* WebKit.framework */,
+ 1A37E9D9200DEF110078AF72 /* SystemConfiguration.framework */,
+ 1A37E9DB200DEF190078AF72 /* SystemConfiguration.framework */,
+ 1ACA99241F550A28002DE225 /* JavaScriptCore.framework */,
+ 1ACA99221F550A20002DE225 /* JavaScriptCore.framework */,
+ 1A499EBC1F0CDDD9004E6AEC /* libicucore.A.tbd */,
+ 1A499EBA1F0CDDC3004E6AEC /* CFNetwork.framework */,
+ ABE456EA1D34F89000F1F400 /* GameController.framework */,
+ ABE456E81D34F88A00F1F400 /* SystemConfiguration.framework */,
+ ABE456E61D34F87F00F1F400 /* MobileCoreServices.framework */,
+ ABE456E41D34F87A00F1F400 /* CoreFoundation.framework */,
+ ABE456E21D34F87300F1F400 /* CFNetwork.framework */,
+ 294D7D7F1D0D668F002CE7B7 /* CoreText.framework */,
+ 4D697BDC1CBD303100A5AF29 /* libjs_static.a */,
+ 4D697BD91CBD301C00A5AF29 /* libjs_static.a */,
+ FA676C771C71AFAB00E091E3 /* libiconv.dylib */,
+ FA676C751C71AFA200E091E3 /* libiconv.dylib */,
+ BAEE4D831AC40C11003BEB0F /* Security.framework */,
+ BA3A85EB1A724AE900924D24 /* Security.framework */,
+ BA4E718219EB6E4600932425 /* GameController.framework */,
+ BA4E718019EB6E3E00932425 /* MediaPlayer.framework */,
+ D6B061231803AB9F0077942B /* CoreMotion.framework */,
+ 502380DB17EBB88200990C9B /* libcurl.dylib */,
+ 509D4AEA17EBB82600697056 /* IOKit.framework */,
+ 509D4AE817EBB82000697056 /* AppKit.framework */,
+ 509D4AE617EBB81800697056 /* OpenGL.framework */,
+ 1A96A4F2174A3432008653A9 /* libcurl.a */,
+ 1A82F5FA169AC92500C4B13A /* libsqlite3.dylib */,
+ D454520B156E22BD00887EB5 /* libz.dylib */,
+ A92275411517C094001B78AA /* QuartzCore.framework */,
+ A92275431517C094001B78AA /* OpenGLES.framework */,
+ A92275451517C094001B78AA /* OpenAL.framework */,
+ A92275471517C094001B78AA /* AudioToolbox.framework */,
+ A92275491517C094001B78AA /* AVFoundation.framework */,
+ A922754B1517C094001B78AA /* UIKit.framework */,
+ A922754D1517C094001B78AA /* Foundation.framework */,
+ A922754F1517C094001B78AA /* CoreGraphics.framework */,
+ );
+ name = Frameworks;
+ sourceTree = "";
+ };
+ D45446CC156DE73F00887EB5 /* ios */ = {
+ isa = PBXGroup;
+ children = (
+ 051C018221E32AE400D4A347 /* UserConfigIOS.debug.xcconfig */,
+ 051C018121E32AE400D4A347 /* UserConfigIOS.release.xcconfig */,
+ 22CC756E21BA5B5C00FBF2F7 /* service */,
+ 4011F9D1212BD6750091CC5B /* LaunchScreen.storyboard */,
+ 1AFFCD7B1F7A5D4F00628F2C /* LaunchScreenBackground.png */,
+ 1ABC56911F7A005D00826282 /* Images.xcassets */,
+ 509D4AAB17EBB2AB00697056 /* AppController.h */,
+ 509D4AAC17EBB2AB00697056 /* AppController.mm */,
+ 509D4AB717EBB2AB00697056 /* Info.plist */,
+ 509D4AB817EBB2AB00697056 /* main.m */,
+ 509D4AB917EBB2AB00697056 /* Prefix.pch */,
+ 509D4ABA17EBB2AB00697056 /* RootViewController.h */,
+ 509D4ABB17EBB2AB00697056 /* RootViewController.mm */,
+ 22CC757021BA5B5C00FBF2F7 /* SDKWrapper.h */,
+ 22CC756D21BA5B5C00FBF2F7 /* SDKWrapper.m */,
+ );
+ name = ios;
+ sourceTree = "";
+ };
+ D4545214156E28EF00887EB5 /* Classes */ = {
+ isa = PBXGroup;
+ children = (
+ D4545215156E28EF00887EB5 /* AppDelegate.cpp */,
+ D4545216156E28EF00887EB5 /* AppDelegate.h */,
+ );
+ name = Classes;
+ path = ../Classes;
+ sourceTree = "";
+ };
+/* End PBXGroup section */
+
+/* Begin PBXNativeTarget section */
+ 509D4A7517EBB24E00697056 /* StepOfDoom-desktop */ = {
+ isa = PBXNativeTarget;
+ buildConfigurationList = 509D4AA717EBB24E00697056 /* Build configuration list for PBXNativeTarget "StepOfDoom-desktop" */;
+ buildPhases = (
+ 509D4A8017EBB24E00697056 /* Sources */,
+ 509D4A9317EBB24E00697056 /* Resources */,
+ 509D4A8217EBB24E00697056 /* Frameworks */,
+ );
+ buildRules = (
+ );
+ dependencies = (
+ 4DD5E6AA1CDAF6330046171E /* PBXTargetDependency */,
+ );
+ name = "StepOfDoom-desktop";
+ productName = StepOfDoom;
+ productReference = 509D4AAA17EBB24E00697056 /* StepOfDoom-desktop.app */;
+ productType = "com.apple.product-type.application";
+ };
+ A922753C1517C094001B78AA /* StepOfDoom-mobile */ = {
+ isa = PBXNativeTarget;
+ buildConfigurationList = A92277001517C097001B78AA /* Build configuration list for PBXNativeTarget "StepOfDoom-mobile" */;
+ buildPhases = (
+ A92275391517C094001B78AA /* Sources */,
+ A922753A1517C094001B78AA /* Frameworks */,
+ A922753B1517C094001B78AA /* Resources */,
+ );
+ buildRules = (
+ );
+ dependencies = (
+ 4DD5E6B01CDAF6520046171E /* PBXTargetDependency */,
+ );
+ name = "StepOfDoom-mobile";
+ productName = StepOfDoom;
+ productReference = A922753D1517C094001B78AA /* StepOfDoom-mobile.app */;
+ productType = "com.apple.product-type.application";
+ };
+/* End PBXNativeTarget section */
+
+/* Begin PBXProject section */
+ A92275341517C094001B78AA /* Project object */ = {
+ isa = PBXProject;
+ attributes = {
+ LastUpgradeCheck = 0500;
+ };
+ buildConfigurationList = A92275371517C094001B78AA /* Build configuration list for PBXProject "StepOfDoom" */;
+ compatibilityVersion = "Xcode 3.2";
+ developmentRegion = English;
+ hasScannedForEncodings = 0;
+ knownRegions = (
+ English,
+ en,
+ Base,
+ "zh-Hans",
+ );
+ mainGroup = A92275321517C094001B78AA;
+ productRefGroup = A922753E1517C094001B78AA /* Products */;
+ projectDirPath = "";
+ projectReferences = (
+ {
+ ProductGroup = 4DD0DB511CDAF5F40099AD86 /* Products */;
+ ProjectRef = 1AC6FB34180E9ACB004C840B /* cocos2d_libs.xcodeproj */;
+ },
+ );
+ projectRoot = "";
+ targets = (
+ A922753C1517C094001B78AA /* StepOfDoom-mobile */,
+ 509D4A7517EBB24E00697056 /* StepOfDoom-desktop */,
+ );
+ };
+/* End PBXProject section */
+
+/* Begin PBXReferenceProxy section */
+ 4DD0DB561CDAF5F40099AD86 /* libcocos2d Mac.a */ = {
+ isa = PBXReferenceProxy;
+ fileType = archive.ar;
+ path = "libcocos2d Mac.a";
+ remoteRef = 4DD0DB551CDAF5F40099AD86 /* PBXContainerItemProxy */;
+ sourceTree = BUILT_PRODUCTS_DIR;
+ };
+ 4DD0DB581CDAF5F40099AD86 /* libcocos2d iOS.a */ = {
+ isa = PBXReferenceProxy;
+ fileType = archive.ar;
+ path = "libcocos2d iOS.a";
+ remoteRef = 4DD0DB571CDAF5F40099AD86 /* PBXContainerItemProxy */;
+ sourceTree = BUILT_PRODUCTS_DIR;
+ };
+/* End PBXReferenceProxy section */
+
+/* Begin PBXResourcesBuildPhase section */
+ 509D4A9317EBB24E00697056 /* Resources */ = {
+ isa = PBXResourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 1AC22EDE18CA0E11007112B9 /* project.json in Resources */,
+ 1AD7E0A918C9DBE3004817A6 /* main.js in Resources */,
+ 4033CDBD20E4935100DAA37B /* jsb-adapter in Resources */,
+ C0799CBA18BAE62000E9C828 /* res in Resources */,
+ 509D4ACF17EBB2BE00697056 /* Icon.icns in Resources */,
+ C03780EC18BEE0E400FE4F13 /* src in Resources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ A922753B1517C094001B78AA /* Resources */ = {
+ isa = PBXResourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 28A34C10225B462E00926306 /* subpackages in Resources */,
+ 4033CDBC20E4935100DAA37B /* jsb-adapter in Resources */,
+ 1AFFCD7F1F7A5D5400628F2C /* Images.xcassets in Resources */,
+ 1AFFCD7E1F7A5D5400628F2C /* LaunchScreenBackground.png in Resources */,
+ 1AE159EC18C9DF3600FCA372 /* project.json in Resources */,
+ 1AD7E0A818C9DB93004817A6 /* main.js in Resources */,
+ C03780EB18BEE0E400FE4F13 /* src in Resources */,
+ C0799CB918BAE62000E9C828 /* res in Resources */,
+ 4011F9CF212BD6750091CC5B /* LaunchScreen.storyboard in Resources */,
+ 4011F9D5212BD7050091CC5B /* Localizable.strings in Resources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXResourcesBuildPhase section */
+
+/* Begin PBXSourcesBuildPhase section */
+ 509D4A8017EBB24E00697056 /* Sources */ = {
+ isa = PBXSourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 509D4A8117EBB24E00697056 /* AppDelegate.cpp in Sources */,
+ C06E23CC18CEFE680093C81A /* main.cpp in Sources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ A92275391517C094001B78AA /* Sources */ = {
+ isa = PBXSourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 509D4AC917EBB2AB00697056 /* RootViewController.mm in Sources */,
+ D4545227156E28EF00887EB5 /* AppDelegate.cpp in Sources */,
+ 509D4AC817EBB2AB00697056 /* main.m in Sources */,
+ 22CC757121BA5B5C00FBF2F7 /* SDKWrapper.m in Sources */,
+ 509D4ABC17EBB2AB00697056 /* AppController.mm in Sources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXSourcesBuildPhase section */
+
+/* Begin PBXTargetDependency section */
+ 4DD5E6AA1CDAF6330046171E /* PBXTargetDependency */ = {
+ isa = PBXTargetDependency;
+ name = "libcocos2d Mac";
+ targetProxy = 4DD5E6A91CDAF6330046171E /* PBXContainerItemProxy */;
+ };
+ 4DD5E6B01CDAF6520046171E /* PBXTargetDependency */ = {
+ isa = PBXTargetDependency;
+ name = "libcocos2d iOS";
+ targetProxy = 4DD5E6AF1CDAF6520046171E /* PBXContainerItemProxy */;
+ };
+/* End PBXTargetDependency section */
+
+/* Begin PBXVariantGroup section */
+ 4011F9D1212BD6750091CC5B /* LaunchScreen.storyboard */ = {
+ isa = PBXVariantGroup;
+ children = (
+ 4011F9D2212BD6810091CC5B /* Base */,
+ );
+ name = LaunchScreen.storyboard;
+ path = ios;
+ sourceTree = "";
+ };
+ 4011F9D7212BD7050091CC5B /* Localizable.strings */ = {
+ isa = PBXVariantGroup;
+ children = (
+ 4011F9D8212BD7150091CC5B /* Base */,
+ 4011F9D9212BD73A0091CC5B /* zh-Hans */,
+ );
+ name = Localizable.strings;
+ path = ios;
+ sourceTree = "";
+ };
+/* End PBXVariantGroup section */
+
+/* Begin XCBuildConfiguration section */
+ 509D4AA817EBB24E00697056 /* Debug */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = 051C018621E32AF100D4A347 /* UserConfigMac.debug.xcconfig */;
+ buildSettings = {
+ ALWAYS_SEARCH_USER_PATHS = YES;
+ ARCHS = "$(ARCHS_STANDARD_64_BIT)";
+ COMBINE_HIDPI_IMAGES = YES;
+ DEAD_CODE_STRIPPING = YES;
+ GCC_DYNAMIC_NO_PIC = NO;
+ GCC_PRECOMPILE_PREFIX_HEADER = YES;
+ GCC_PREFIX_HEADER = mac/Prefix.pch;
+ GCC_PREPROCESSOR_DEFINITIONS = (
+ CC_TARGET_OS_MAC,
+ "$(inherited)",
+ );
+ GCC_SYMBOLS_PRIVATE_EXTERN = YES;
+ HEADER_SEARCH_PATHS = "";
+ INFOPLIST_FILE = mac/Info.plist;
+ LIBRARY_SEARCH_PATHS = "/Applications/CocosCreator-2.1.3.app/Contents/Resources/cocos2d-x/external/mac/libs";
+ OTHER_LDFLAGS = "";
+ SDKROOT = macosx;
+ USER_HEADER_SEARCH_PATHS = "$(inherited) /Applications/CocosCreator-2.1.3.app/Contents/Resources/cocos2d-x/cocos/platform/mac /Applications/CocosCreator-2.1.3.app/Contents/Resources/cocos2d-x/external/glfw3/include/mac /Applications/CocosCreator-2.1.3.app/Contents/Resources/cocos2d-x/external/mac/include/ /Applications/CocosCreator-2.1.3.app/Contents/Resources/cocos2d-x/external/mac/include/spidermonkey";
+ };
+ name = Debug;
+ };
+ 509D4AA917EBB24E00697056 /* Release */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = 051C018521E32AF000D4A347 /* UserConfigMac.release.xcconfig */;
+ buildSettings = {
+ ALWAYS_SEARCH_USER_PATHS = YES;
+ ARCHS = "$(ARCHS_STANDARD_64_BIT)";
+ COMBINE_HIDPI_IMAGES = YES;
+ DEAD_CODE_STRIPPING = YES;
+ GCC_GENERATE_DEBUGGING_SYMBOLS = NO;
+ GCC_PRECOMPILE_PREFIX_HEADER = YES;
+ GCC_PREFIX_HEADER = mac/Prefix.pch;
+ GCC_PREPROCESSOR_DEFINITIONS = (
+ CC_TARGET_OS_MAC,
+ "$(inherited)",
+ );
+ GCC_SYMBOLS_PRIVATE_EXTERN = YES;
+ HEADER_SEARCH_PATHS = "";
+ INFOPLIST_FILE = mac/Info.plist;
+ LIBRARY_SEARCH_PATHS = "/Applications/CocosCreator-2.1.3.app/Contents/Resources/cocos2d-x/external/mac/libs";
+ OTHER_LDFLAGS = "";
+ SDKROOT = macosx;
+ USER_HEADER_SEARCH_PATHS = "$(inherited) /Applications/CocosCreator-2.1.3.app/Contents/Resources/cocos2d-x/cocos/platform/mac /Applications/CocosCreator-2.1.3.app/Contents/Resources/cocos2d-x/external/glfw3/include/mac /Applications/CocosCreator-2.1.3.app/Contents/Resources/cocos2d-x/external/mac/include/ /Applications/CocosCreator-2.1.3.app/Contents/Resources/cocos2d-x/external/mac/include/spidermonkey";
+ };
+ name = Release;
+ };
+ A92276FE1517C097001B78AA /* Debug */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;
+ CLANG_CXX_LANGUAGE_STANDARD = "c++0x";
+ CLANG_CXX_LIBRARY = "libc++";
+ COPY_PHASE_STRIP = NO;
+ GCC_C_LANGUAGE_STANDARD = c99;
+ GCC_OPTIMIZATION_LEVEL = 0;
+ GCC_PREPROCESSOR_DEFINITIONS = (
+ "COCOS2D_DEBUG=1",
+ USE_FILE32API,
+ COCOS2D_JAVASCRIPT,
+ );
+ GCC_SYMBOLS_PRIVATE_EXTERN = NO;
+ GCC_WARN_ABOUT_RETURN_TYPE = YES;
+ GCC_WARN_UNUSED_VARIABLE = YES;
+ HEADER_SEARCH_PATHS = "";
+ IPHONEOS_DEPLOYMENT_TARGET = 8.0;
+ MACOSX_DEPLOYMENT_TARGET = 10.9;
+ ONLY_ACTIVE_ARCH = YES;
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ USER_HEADER_SEARCH_PATHS = "/Applications/CocosCreator-2.1.3.app/Contents/Resources/cocos2d-x /Applications/CocosCreator-2.1.3.app/Contents/Resources/cocos2d-x/cocos /Applications/CocosCreator-2.1.3.app/Contents/Resources/cocos2d-x/cocos/base /Applications/CocosCreator-2.1.3.app/Contents/Resources/cocos2d-x/cocos/physics /Applications/CocosCreator-2.1.3.app/Contents/Resources/cocos2d-x/cocos/math/kazmath /Applications/CocosCreator-2.1.3.app/Contents/Resources/cocos2d-x/cocos/2d /Applications/CocosCreator-2.1.3.app/Contents/Resources/cocos2d-x/cocos/gui /Applications/CocosCreator-2.1.3.app/Contents/Resources/cocos2d-x/cocos/network /Applications/CocosCreator-2.1.3.app/Contents/Resources/cocos2d-x/cocos/audio/include /Applications/CocosCreator-2.1.3.app/Contents/Resources/cocos2d-x/cocos/editor-support /Applications/CocosCreator-2.1.3.app/Contents/Resources/cocos2d-x/extensions /Applications/CocosCreator-2.1.3.app/Contents/Resources/cocos2d-x/external /Applications/CocosCreator-2.1.3.app/Contents/Resources/cocos2d-x/external/sources /Applications/CocosCreator-2.1.3.app/Contents/Resources/cocos2d-x/external/chipmunk/include/chipmunk /Applications/CocosCreator-2.1.3.app/Contents/Resources/cocos2d-x/external/mac/include/v8 /Applications/CocosCreator-2.1.3.app/Contents/Resources/cocos2d-x/cocos/scripting/js-bindings/auto /Applications/CocosCreator-2.1.3.app/Contents/Resources/cocos2d-x/cocos/scripting/js-bindings/manual /Applications/CocosCreator-2.1.3.app/Contents/Resources/cocos2d-x/cocos/renderer";
+ };
+ name = Debug;
+ };
+ A92276FF1517C097001B78AA /* Release */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;
+ CLANG_CXX_LANGUAGE_STANDARD = "c++0x";
+ CLANG_CXX_LIBRARY = "libc++";
+ GCC_C_LANGUAGE_STANDARD = c99;
+ GCC_PREPROCESSOR_DEFINITIONS = (
+ NDEBUG,
+ USE_FILE32API,
+ COCOS2D_JAVASCRIPT,
+ );
+ GCC_WARN_ABOUT_RETURN_TYPE = YES;
+ GCC_WARN_UNUSED_VARIABLE = YES;
+ HEADER_SEARCH_PATHS = "";
+ IPHONEOS_DEPLOYMENT_TARGET = 8.0;
+ MACOSX_DEPLOYMENT_TARGET = 10.9;
+ OTHER_CFLAGS = "-DNS_BLOCK_ASSERTIONS=1";
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ USER_HEADER_SEARCH_PATHS = "/Applications/CocosCreator-2.1.3.app/Contents/Resources/cocos2d-x /Applications/CocosCreator-2.1.3.app/Contents/Resources/cocos2d-x/cocos /Applications/CocosCreator-2.1.3.app/Contents/Resources/cocos2d-x/cocos/base /Applications/CocosCreator-2.1.3.app/Contents/Resources/cocos2d-x/cocos/physics /Applications/CocosCreator-2.1.3.app/Contents/Resources/cocos2d-x/cocos/math/kazmath /Applications/CocosCreator-2.1.3.app/Contents/Resources/cocos2d-x/cocos/2d /Applications/CocosCreator-2.1.3.app/Contents/Resources/cocos2d-x/cocos/gui /Applications/CocosCreator-2.1.3.app/Contents/Resources/cocos2d-x/cocos/network /Applications/CocosCreator-2.1.3.app/Contents/Resources/cocos2d-x/cocos/audio/include /Applications/CocosCreator-2.1.3.app/Contents/Resources/cocos2d-x/cocos/editor-support /Applications/CocosCreator-2.1.3.app/Contents/Resources/cocos2d-x/extensions /Applications/CocosCreator-2.1.3.app/Contents/Resources/cocos2d-x/external /Applications/CocosCreator-2.1.3.app/Contents/Resources/cocos2d-x/external/sources /Applications/CocosCreator-2.1.3.app/Contents/Resources/cocos2d-x/external/chipmunk/include/chipmunk /Applications/CocosCreator-2.1.3.app/Contents/Resources/cocos2d-x/external/mac/include/v8 /Applications/CocosCreator-2.1.3.app/Contents/Resources/cocos2d-x/cocos/scripting/js-bindings/auto /Applications/CocosCreator-2.1.3.app/Contents/Resources/cocos2d-x/cocos/scripting/js-bindings/manual /Applications/CocosCreator-2.1.3.app/Contents/Resources/cocos2d-x/cocos/renderer";
+ VALIDATE_PRODUCT = YES;
+ };
+ name = Release;
+ };
+ A92277011517C097001B78AA /* Debug */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = 051C018221E32AE400D4A347 /* UserConfigIOS.debug.xcconfig */;
+ buildSettings = {
+ ALWAYS_SEARCH_USER_PATHS = YES;
+ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
+ CODE_SIGN_IDENTITY = "iPhone Developer";
+ COMPRESS_PNG_FILES = NO;
+ ENABLE_BITCODE = NO;
+ GCC_DYNAMIC_NO_PIC = NO;
+ GCC_GENERATE_DEBUGGING_SYMBOLS = YES;
+ GCC_PRECOMPILE_PREFIX_HEADER = YES;
+ GCC_PREFIX_HEADER = ios/Prefix.pch;
+ GCC_PREPROCESSOR_DEFINITIONS = (
+ CC_TARGET_OS_IPHONE,
+ "$(inherited)",
+ );
+ GCC_SYMBOLS_PRIVATE_EXTERN = YES;
+ HEADER_SEARCH_PATHS = "";
+ INFOPLIST_FILE = ios/Info.plist;
+ IPHONEOS_DEPLOYMENT_TARGET = 10.0;
+ LIBRARY_SEARCH_PATHS = "/Applications/CocosCreator-2.1.3.app/Contents/Resources/cocos2d-x/external/ios/libs";
+ OTHER_LDFLAGS = (
+ "-ObjC",
+ "$(inherited)",
+ );
+ SDKROOT = iphoneos;
+ STRIP_PNG_TEXT = NO;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ USER_HEADER_SEARCH_PATHS = "$(inherited) /Applications/CocosCreator-2.1.3.app/Contents/Resources/cocos2d-x/cocos/platform/ios /Applications/CocosCreator-2.1.3.app/Contents/Resources/cocos2d-x/plugin/jsbindings/auto /Applications/CocosCreator-2.1.3.app/Contents/Resources/cocos2d-x/plugin/jsbindings/manual /Applications/CocosCreator-2.1.3.app/Contents/Resources/cocos2d-x/external/ios/include /Applications/CocosCreator-2.1.3.app/Contents/Resources/cocos2d-x/external/ios/include/spidermonkey";
+ VALID_ARCHS = "arm64 armv7";
+ };
+ name = Debug;
+ };
+ A92277021517C097001B78AA /* Release */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = 051C018121E32AE400D4A347 /* UserConfigIOS.release.xcconfig */;
+ buildSettings = {
+ ALWAYS_SEARCH_USER_PATHS = YES;
+ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
+ CODE_SIGN_IDENTITY = "iPhone Developer";
+ COMPRESS_PNG_FILES = NO;
+ ENABLE_BITCODE = NO;
+ GCC_GENERATE_DEBUGGING_SYMBOLS = NO;
+ GCC_PRECOMPILE_PREFIX_HEADER = YES;
+ GCC_PREFIX_HEADER = ios/Prefix.pch;
+ GCC_PREPROCESSOR_DEFINITIONS = (
+ CC_TARGET_OS_IPHONE,
+ "$(inherited)",
+ );
+ GCC_SYMBOLS_PRIVATE_EXTERN = YES;
+ HEADER_SEARCH_PATHS = "";
+ INFOPLIST_FILE = ios/Info.plist;
+ IPHONEOS_DEPLOYMENT_TARGET = 10.0;
+ LIBRARY_SEARCH_PATHS = "/Applications/CocosCreator-2.1.3.app/Contents/Resources/cocos2d-x/external/ios/libs";
+ OTHER_LDFLAGS = (
+ "-ObjC",
+ "$(inherited)",
+ );
+ SDKROOT = iphoneos;
+ STRIP_PNG_TEXT = NO;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ USER_HEADER_SEARCH_PATHS = "$(inherited) /Applications/CocosCreator-2.1.3.app/Contents/Resources/cocos2d-x/cocos/platform/ios /Applications/CocosCreator-2.1.3.app/Contents/Resources/cocos2d-x/plugin/jsbindings/auto /Applications/CocosCreator-2.1.3.app/Contents/Resources/cocos2d-x/plugin/jsbindings/manual /Applications/CocosCreator-2.1.3.app/Contents/Resources/cocos2d-x/external/ios/include /Applications/CocosCreator-2.1.3.app/Contents/Resources/cocos2d-x/external/ios/include/spidermonkey";
+ VALID_ARCHS = "arm64 armv7";
+ };
+ name = Release;
+ };
+/* End XCBuildConfiguration section */
+
+/* Begin XCConfigurationList section */
+ 509D4AA717EBB24E00697056 /* Build configuration list for PBXNativeTarget "StepOfDoom-desktop" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ 509D4AA817EBB24E00697056 /* Debug */,
+ 509D4AA917EBB24E00697056 /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
+ A92275371517C094001B78AA /* Build configuration list for PBXProject "StepOfDoom" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ A92276FE1517C097001B78AA /* Debug */,
+ A92276FF1517C097001B78AA /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
+ A92277001517C097001B78AA /* Build configuration list for PBXNativeTarget "StepOfDoom-mobile" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ A92277011517C097001B78AA /* Debug */,
+ A92277021517C097001B78AA /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
+/* End XCConfigurationList section */
+ };
+ rootObject = A92275341517C094001B78AA /* Project object */;
+}
diff --git a/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.ios_mac/ios/.DS_Store b/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.ios_mac/ios/.DS_Store
new file mode 100644
index 0000000..affdc7a
Binary files /dev/null and b/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.ios_mac/ios/.DS_Store differ
diff --git a/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.ios_mac/ios/AppController.h b/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.ios_mac/ios/AppController.h
new file mode 100755
index 0000000..10d55da
--- /dev/null
+++ b/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.ios_mac/ios/AppController.h
@@ -0,0 +1,37 @@
+/****************************************************************************
+ Copyright (c) 2010-2013 cocos2d-x.org
+ Copyright (c) 2013-2016 Chukong Technologies Inc.
+ Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd.
+
+ http://www.cocos2d-x.org
+
+ Permission is hereby granted, free of charge, to any person obtaining a copy
+ of this software and associated documentation files (the "Software"), to deal
+ in the Software without restriction, including without limitation the rights
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ copies of the Software, and to permit persons to whom the Software is
+ furnished to do so, subject to the following conditions:
+
+ The above copyright notice and this permission notice shall be included in
+ all copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ THE SOFTWARE.
+ ****************************************************************************/
+#import
+
+@class RootViewController;
+
+@interface AppController : NSObject
+{
+}
+
+@property(nonatomic, readonly) RootViewController* viewController;
+
+@end
+
diff --git a/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.ios_mac/ios/AppController.mm b/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.ios_mac/ios/AppController.mm
new file mode 100755
index 0000000..f1c4ca4
--- /dev/null
+++ b/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.ios_mac/ios/AppController.mm
@@ -0,0 +1,139 @@
+/****************************************************************************
+ Copyright (c) 2010-2013 cocos2d-x.org
+ Copyright (c) 2013-2016 Chukong Technologies Inc.
+ Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd.
+
+ http://www.cocos2d-x.org
+
+ Permission is hereby granted, free of charge, to any person obtaining a copy
+ of this software and associated documentation files (the "Software"), to deal
+ in the Software without restriction, including without limitation the rights
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ copies of the Software, and to permit persons to whom the Software is
+ furnished to do so, subject to the following conditions:
+
+ The above copyright notice and this permission notice shall be included in
+ all copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ THE SOFTWARE.
+ ****************************************************************************/
+
+#import "AppController.h"
+#import "cocos2d.h"
+#import "AppDelegate.h"
+#import "RootViewController.h"
+#import "SDKWrapper.h"
+#import "platform/ios/CCEAGLView-ios.h"
+
+
+
+using namespace cocos2d;
+
+@implementation AppController
+
+Application* app = nullptr;
+@synthesize window;
+
+#pragma mark -
+#pragma mark Application lifecycle
+
+- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
+ [[SDKWrapper getInstance] application:application didFinishLaunchingWithOptions:launchOptions];
+ // Add the view controller's view to the window and display.
+ float scale = [[UIScreen mainScreen] scale];
+ CGRect bounds = [[UIScreen mainScreen] bounds];
+ window = [[UIWindow alloc] initWithFrame: bounds];
+
+ // cocos2d application instance
+ app = new AppDelegate(bounds.size.width * scale, bounds.size.height * scale);
+ app->setMultitouch(true);
+
+ // Use RootViewController to manage CCEAGLView
+ _viewController = [[RootViewController alloc]init];
+#ifdef NSFoundationVersionNumber_iOS_7_0
+ _viewController.automaticallyAdjustsScrollViewInsets = NO;
+ _viewController.extendedLayoutIncludesOpaqueBars = NO;
+ _viewController.edgesForExtendedLayout = UIRectEdgeAll;
+#else
+ _viewController.wantsFullScreenLayout = YES;
+#endif
+ // Set RootViewController to window
+ if ( [[UIDevice currentDevice].systemVersion floatValue] < 6.0)
+ {
+ // warning: addSubView doesn't work on iOS6
+ [window addSubview: _viewController.view];
+ }
+ else
+ {
+ // use this method on ios6
+ [window setRootViewController:_viewController];
+ }
+
+ [window makeKeyAndVisible];
+
+ [[UIApplication sharedApplication] setStatusBarHidden:YES];
+
+ //run the cocos2d-x game scene
+ app->start();
+
+ return YES;
+}
+
+- (void)applicationWillResignActive:(UIApplication *)application {
+ /*
+ Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state.
+ Use this method to pause ongoing tasks, disable timers, and throttle down OpenGL ES frame rates. Games should use this method to pause the game.
+ */
+ [[SDKWrapper getInstance] applicationWillResignActive:application];
+}
+
+- (void)applicationDidBecomeActive:(UIApplication *)application {
+ /*
+ Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface.
+ */
+ [[SDKWrapper getInstance] applicationDidBecomeActive:application];
+}
+
+- (void)applicationDidEnterBackground:(UIApplication *)application {
+ /*
+ Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later.
+ If your application supports background execution, called instead of applicationWillTerminate: when the user quits.
+ */
+ [[SDKWrapper getInstance] applicationDidEnterBackground:application];
+ app->applicationDidEnterBackground();
+
+}
+
+- (void)applicationWillEnterForeground:(UIApplication *)application {
+ /*
+ Called as part of transition from the background to the inactive state: here you can undo many of the changes made on entering the background.
+ */
+ [[SDKWrapper getInstance] applicationWillEnterForeground:application];
+ app->applicationWillEnterForeground();
+
+}
+
+- (void)applicationWillTerminate:(UIApplication *)application
+{
+ [[SDKWrapper getInstance] applicationWillTerminate:application];
+ delete app;
+ app = nil;
+}
+
+
+#pragma mark -
+#pragma mark Memory management
+
+- (void)applicationDidReceiveMemoryWarning:(UIApplication *)application {
+ /*
+ Free up as much memory as possible by purging cached data objects that can be recreated (or reloaded from disk) later.
+ */
+}
+
+@end
diff --git a/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.ios_mac/ios/Base.lproj/LaunchScreen.storyboard b/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.ios_mac/ios/Base.lproj/LaunchScreen.storyboard
new file mode 100644
index 0000000..068bbaa
--- /dev/null
+++ b/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.ios_mac/ios/Base.lproj/LaunchScreen.storyboard
@@ -0,0 +1,45 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.ios_mac/ios/Base.lproj/Localizable.strings b/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.ios_mac/ios/Base.lproj/Localizable.strings
new file mode 100644
index 0000000..2a177ff
--- /dev/null
+++ b/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.ios_mac/ios/Base.lproj/Localizable.strings
@@ -0,0 +1,9 @@
+/*
+ Localizable.strings
+ */
+
+"done" = "Done";
+"next" = "Next";
+"search" = "Search";
+"go" = "Go";
+"send" = "Send";
diff --git a/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.ios_mac/ios/Images.xcassets/AppIcon.appiconset/Contents.json b/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.ios_mac/ios/Images.xcassets/AppIcon.appiconset/Contents.json
new file mode 100755
index 0000000..51cbd32
--- /dev/null
+++ b/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.ios_mac/ios/Images.xcassets/AppIcon.appiconset/Contents.json
@@ -0,0 +1,157 @@
+{
+ "images" : [
+ {
+ "size" : "20x20",
+ "idiom" : "iphone",
+ "filename" : "Icon-20@2x.png",
+ "scale" : "2x"
+ },
+ {
+ "size" : "20x20",
+ "idiom" : "iphone",
+ "filename" : "Icon-20@3x.png",
+ "scale" : "3x"
+ },
+ {
+ "size" : "29x29",
+ "idiom" : "iphone",
+ "filename" : "Icon-29.png",
+ "scale" : "1x"
+ },
+ {
+ "size" : "29x29",
+ "idiom" : "iphone",
+ "filename" : "Icon-29@2x.png",
+ "scale" : "2x"
+ },
+ {
+ "size" : "29x29",
+ "idiom" : "iphone",
+ "filename" : "Icon-29@3x.png",
+ "scale" : "3x"
+ },
+ {
+ "size" : "40x40",
+ "idiom" : "iphone",
+ "filename" : "Icon-40@2x.png",
+ "scale" : "2x"
+ },
+ {
+ "size" : "40x40",
+ "idiom" : "iphone",
+ "filename" : "Icon-40@3x.png",
+ "scale" : "3x"
+ },
+ {
+ "size" : "57x57",
+ "idiom" : "iphone",
+ "filename" : "Icon-57.png",
+ "scale" : "1x"
+ },
+ {
+ "size" : "57x57",
+ "idiom" : "iphone",
+ "filename" : "Icon-57@2x.png",
+ "scale" : "2x"
+ },
+ {
+ "size" : "60x60",
+ "idiom" : "iphone",
+ "filename" : "Icon-60@2x.png",
+ "scale" : "2x"
+ },
+ {
+ "size" : "60x60",
+ "idiom" : "iphone",
+ "filename" : "Icon-60@3x.png",
+ "scale" : "3x"
+ },
+ {
+ "size" : "20x20",
+ "idiom" : "ipad",
+ "filename" : "Icon-20.png",
+ "scale" : "1x"
+ },
+ {
+ "size" : "20x20",
+ "idiom" : "ipad",
+ "filename" : "Icon-20@2x.png",
+ "scale" : "2x"
+ },
+ {
+ "size" : "29x29",
+ "idiom" : "ipad",
+ "filename" : "Icon-29.png",
+ "scale" : "1x"
+ },
+ {
+ "size" : "29x29",
+ "idiom" : "ipad",
+ "filename" : "Icon-29@2x.png",
+ "scale" : "2x"
+ },
+ {
+ "size" : "40x40",
+ "idiom" : "ipad",
+ "filename" : "Icon-40.png",
+ "scale" : "1x"
+ },
+ {
+ "size" : "40x40",
+ "idiom" : "ipad",
+ "filename" : "Icon-40@2x.png",
+ "scale" : "2x"
+ },
+ {
+ "size" : "50x50",
+ "idiom" : "ipad",
+ "filename" : "Icon-50.png",
+ "scale" : "1x"
+ },
+ {
+ "size" : "50x50",
+ "idiom" : "ipad",
+ "filename" : "Icon-50@2x.png",
+ "scale" : "2x"
+ },
+ {
+ "size" : "72x72",
+ "idiom" : "ipad",
+ "filename" : "Icon-72.png",
+ "scale" : "1x"
+ },
+ {
+ "size" : "72x72",
+ "idiom" : "ipad",
+ "filename" : "Icon-72@2x.png",
+ "scale" : "2x"
+ },
+ {
+ "size" : "76x76",
+ "idiom" : "ipad",
+ "filename" : "Icon-76.png",
+ "scale" : "1x"
+ },
+ {
+ "size" : "76x76",
+ "idiom" : "ipad",
+ "filename" : "Icon-76@2x.png",
+ "scale" : "2x"
+ },
+ {
+ "size" : "83.5x83.5",
+ "idiom" : "ipad",
+ "filename" : "Icon-83.5@2x.png",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "ios-marketing",
+ "size" : "1024x1024",
+ "scale" : "1x"
+ }
+ ],
+ "info" : {
+ "version" : 1,
+ "author" : "xcode"
+ }
+}
\ No newline at end of file
diff --git a/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.ios_mac/ios/Images.xcassets/AppIcon.appiconset/Icon-20.png b/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.ios_mac/ios/Images.xcassets/AppIcon.appiconset/Icon-20.png
new file mode 100755
index 0000000..8ead23e
Binary files /dev/null and b/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.ios_mac/ios/Images.xcassets/AppIcon.appiconset/Icon-20.png differ
diff --git a/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.ios_mac/ios/Images.xcassets/AppIcon.appiconset/Icon-20@2x.png b/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.ios_mac/ios/Images.xcassets/AppIcon.appiconset/Icon-20@2x.png
new file mode 100755
index 0000000..775685d
Binary files /dev/null and b/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.ios_mac/ios/Images.xcassets/AppIcon.appiconset/Icon-20@2x.png differ
diff --git a/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.ios_mac/ios/Images.xcassets/AppIcon.appiconset/Icon-20@3x.png b/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.ios_mac/ios/Images.xcassets/AppIcon.appiconset/Icon-20@3x.png
new file mode 100755
index 0000000..a5b49cc
Binary files /dev/null and b/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.ios_mac/ios/Images.xcassets/AppIcon.appiconset/Icon-20@3x.png differ
diff --git a/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.ios_mac/ios/Images.xcassets/AppIcon.appiconset/Icon-29.png b/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.ios_mac/ios/Images.xcassets/AppIcon.appiconset/Icon-29.png
new file mode 100755
index 0000000..0500184
Binary files /dev/null and b/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.ios_mac/ios/Images.xcassets/AppIcon.appiconset/Icon-29.png differ
diff --git a/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.ios_mac/ios/Images.xcassets/AppIcon.appiconset/Icon-29@2x.png b/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.ios_mac/ios/Images.xcassets/AppIcon.appiconset/Icon-29@2x.png
new file mode 100755
index 0000000..f0f8b7f
Binary files /dev/null and b/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.ios_mac/ios/Images.xcassets/AppIcon.appiconset/Icon-29@2x.png differ
diff --git a/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.ios_mac/ios/Images.xcassets/AppIcon.appiconset/Icon-29@3x.png b/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.ios_mac/ios/Images.xcassets/AppIcon.appiconset/Icon-29@3x.png
new file mode 100755
index 0000000..5287e50
Binary files /dev/null and b/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.ios_mac/ios/Images.xcassets/AppIcon.appiconset/Icon-29@3x.png differ
diff --git a/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.ios_mac/ios/Images.xcassets/AppIcon.appiconset/Icon-40.png b/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.ios_mac/ios/Images.xcassets/AppIcon.appiconset/Icon-40.png
new file mode 100755
index 0000000..775685d
Binary files /dev/null and b/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.ios_mac/ios/Images.xcassets/AppIcon.appiconset/Icon-40.png differ
diff --git a/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.ios_mac/ios/Images.xcassets/AppIcon.appiconset/Icon-40@2x.png b/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.ios_mac/ios/Images.xcassets/AppIcon.appiconset/Icon-40@2x.png
new file mode 100755
index 0000000..d9c7ab4
Binary files /dev/null and b/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.ios_mac/ios/Images.xcassets/AppIcon.appiconset/Icon-40@2x.png differ
diff --git a/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.ios_mac/ios/Images.xcassets/AppIcon.appiconset/Icon-40@3x.png b/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.ios_mac/ios/Images.xcassets/AppIcon.appiconset/Icon-40@3x.png
new file mode 100755
index 0000000..a5b49cc
Binary files /dev/null and b/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.ios_mac/ios/Images.xcassets/AppIcon.appiconset/Icon-40@3x.png differ
diff --git a/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.ios_mac/ios/Images.xcassets/AppIcon.appiconset/Icon-50.png b/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.ios_mac/ios/Images.xcassets/AppIcon.appiconset/Icon-50.png
new file mode 100755
index 0000000..ac381bc
Binary files /dev/null and b/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.ios_mac/ios/Images.xcassets/AppIcon.appiconset/Icon-50.png differ
diff --git a/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.ios_mac/ios/Images.xcassets/AppIcon.appiconset/Icon-50@2x.png b/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.ios_mac/ios/Images.xcassets/AppIcon.appiconset/Icon-50@2x.png
new file mode 100755
index 0000000..ef38d45
Binary files /dev/null and b/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.ios_mac/ios/Images.xcassets/AppIcon.appiconset/Icon-50@2x.png differ
diff --git a/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.ios_mac/ios/Images.xcassets/AppIcon.appiconset/Icon-57.png b/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.ios_mac/ios/Images.xcassets/AppIcon.appiconset/Icon-57.png
new file mode 100755
index 0000000..4fcc6fd
Binary files /dev/null and b/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.ios_mac/ios/Images.xcassets/AppIcon.appiconset/Icon-57.png differ
diff --git a/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.ios_mac/ios/Images.xcassets/AppIcon.appiconset/Icon-57@2x.png b/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.ios_mac/ios/Images.xcassets/AppIcon.appiconset/Icon-57@2x.png
new file mode 100644
index 0000000..c380786
Binary files /dev/null and b/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.ios_mac/ios/Images.xcassets/AppIcon.appiconset/Icon-57@2x.png differ
diff --git a/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.ios_mac/ios/Images.xcassets/AppIcon.appiconset/Icon-60@2x.png b/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.ios_mac/ios/Images.xcassets/AppIcon.appiconset/Icon-60@2x.png
new file mode 100755
index 0000000..a5b49cc
Binary files /dev/null and b/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.ios_mac/ios/Images.xcassets/AppIcon.appiconset/Icon-60@2x.png differ
diff --git a/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.ios_mac/ios/Images.xcassets/AppIcon.appiconset/Icon-60@3x.png b/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.ios_mac/ios/Images.xcassets/AppIcon.appiconset/Icon-60@3x.png
new file mode 100644
index 0000000..d4bc531
Binary files /dev/null and b/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.ios_mac/ios/Images.xcassets/AppIcon.appiconset/Icon-60@3x.png differ
diff --git a/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.ios_mac/ios/Images.xcassets/AppIcon.appiconset/Icon-72.png b/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.ios_mac/ios/Images.xcassets/AppIcon.appiconset/Icon-72.png
new file mode 100755
index 0000000..2c573c8
Binary files /dev/null and b/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.ios_mac/ios/Images.xcassets/AppIcon.appiconset/Icon-72.png differ
diff --git a/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.ios_mac/ios/Images.xcassets/AppIcon.appiconset/Icon-72@2x.png b/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.ios_mac/ios/Images.xcassets/AppIcon.appiconset/Icon-72@2x.png
new file mode 100755
index 0000000..1526615
Binary files /dev/null and b/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.ios_mac/ios/Images.xcassets/AppIcon.appiconset/Icon-72@2x.png differ
diff --git a/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.ios_mac/ios/Images.xcassets/AppIcon.appiconset/Icon-76.png b/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.ios_mac/ios/Images.xcassets/AppIcon.appiconset/Icon-76.png
new file mode 100755
index 0000000..8a1fa18
Binary files /dev/null and b/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.ios_mac/ios/Images.xcassets/AppIcon.appiconset/Icon-76.png differ
diff --git a/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.ios_mac/ios/Images.xcassets/AppIcon.appiconset/Icon-76@2x.png b/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.ios_mac/ios/Images.xcassets/AppIcon.appiconset/Icon-76@2x.png
new file mode 100755
index 0000000..8aa8250
Binary files /dev/null and b/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.ios_mac/ios/Images.xcassets/AppIcon.appiconset/Icon-76@2x.png differ
diff --git a/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.ios_mac/ios/Images.xcassets/AppIcon.appiconset/Icon-83.5@2x.png b/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.ios_mac/ios/Images.xcassets/AppIcon.appiconset/Icon-83.5@2x.png
new file mode 100644
index 0000000..6bf801d
Binary files /dev/null and b/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.ios_mac/ios/Images.xcassets/AppIcon.appiconset/Icon-83.5@2x.png differ
diff --git a/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.ios_mac/ios/Images.xcassets/Contents.json b/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.ios_mac/ios/Images.xcassets/Contents.json
new file mode 100644
index 0000000..da4a164
--- /dev/null
+++ b/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.ios_mac/ios/Images.xcassets/Contents.json
@@ -0,0 +1,6 @@
+{
+ "info" : {
+ "version" : 1,
+ "author" : "xcode"
+ }
+}
\ No newline at end of file
diff --git a/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.ios_mac/ios/Info.plist b/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.ios_mac/ios/Info.plist
new file mode 100755
index 0000000..ac13590
--- /dev/null
+++ b/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.ios_mac/ios/Info.plist
@@ -0,0 +1,54 @@
+
+
+
+
+ CFBundleDevelopmentRegion
+ English
+ CFBundleDisplayName
+ ${PRODUCT_NAME}
+ CFBundleExecutable
+ ${EXECUTABLE_NAME}
+ CFBundleIcons~ipad
+
+ CFBundleIdentifier
+ Com.Wow.Stepofdoom
+ CFBundleInfoDictionaryVersion
+ 6.0
+ CFBundleName
+ ${PRODUCT_NAME}
+ CFBundlePackageType
+ APPL
+ CFBundleShortVersionString
+ 1.0.0
+ CFBundleSignature
+ ????
+ CFBundleVersion
+ 1.0
+ LSRequiresIPhoneOS
+
+ NSAppTransportSecurity
+
+ NSAllowsArbitraryLoads
+
+
+ UILaunchStoryboardName
+ LaunchScreen
+ UIPrerenderedIcon
+
+ UIRequiredDeviceCapabilities
+
+ accelerometer
+
+ opengles-1
+
+
+ UIRequiresFullScreen
+
+ UIStatusBarHidden
+
+ UISupportedInterfaceOrientations
+
+ UIInterfaceOrientationPortrait
+
+
+
\ No newline at end of file
diff --git a/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.ios_mac/ios/LaunchScreenBackground.png b/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.ios_mac/ios/LaunchScreenBackground.png
new file mode 100644
index 0000000..dadccee
Binary files /dev/null and b/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.ios_mac/ios/LaunchScreenBackground.png differ
diff --git a/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.ios_mac/ios/Prefix.pch b/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.ios_mac/ios/Prefix.pch
new file mode 100755
index 0000000..7b4c9d7
--- /dev/null
+++ b/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.ios_mac/ios/Prefix.pch
@@ -0,0 +1,8 @@
+//
+// Prefix header for all source files of the 'StepOfDoom' target in the 'StepOfDoom' project
+//
+
+#ifdef __OBJC__
+ #import
+ #import
+#endif
diff --git a/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.ios_mac/ios/RootViewController.h b/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.ios_mac/ios/RootViewController.h
new file mode 100755
index 0000000..47aa9ed
--- /dev/null
+++ b/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.ios_mac/ios/RootViewController.h
@@ -0,0 +1,34 @@
+/****************************************************************************
+ Copyright (c) 2013 cocos2d-x.org
+ Copyright (c) 2013-2016 Chukong Technologies Inc.
+ Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd.
+
+ http://www.cocos2d-x.org
+
+ Permission is hereby granted, free of charge, to any person obtaining a copy
+ of this software and associated documentation files (the "Software"), to deal
+ in the Software without restriction, including without limitation the rights
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ copies of the Software, and to permit persons to whom the Software is
+ furnished to do so, subject to the following conditions:
+
+ The above copyright notice and this permission notice shall be included in
+ all copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ THE SOFTWARE.
+ ****************************************************************************/
+
+#import
+
+
+@interface RootViewController : UIViewController {
+
+}
+- (BOOL)prefersStatusBarHidden;
+@end
diff --git a/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.ios_mac/ios/RootViewController.mm b/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.ios_mac/ios/RootViewController.mm
new file mode 100755
index 0000000..7f476be
--- /dev/null
+++ b/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.ios_mac/ios/RootViewController.mm
@@ -0,0 +1,98 @@
+/****************************************************************************
+ Copyright (c) 2013 cocos2d-x.org
+ Copyright (c) 2013-2016 Chukong Technologies Inc.
+ Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd.
+
+ http://www.cocos2d-x.org
+
+ Permission is hereby granted, free of charge, to any person obtaining a copy
+ of this software and associated documentation files (the "Software"), to deal
+ in the Software without restriction, including without limitation the rights
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ copies of the Software, and to permit persons to whom the Software is
+ furnished to do so, subject to the following conditions:
+
+ The above copyright notice and this permission notice shall be included in
+ all copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ THE SOFTWARE.
+****************************************************************************/
+
+#import "RootViewController.h"
+#import "cocos2d.h"
+
+#include "platform/CCApplication.h"
+#include "platform/ios/CCEAGLView-ios.h"
+
+@implementation RootViewController
+
+/*
+// The designated initializer. Override if you create the controller programmatically and want to perform customization that is not appropriate for viewDidLoad.
+- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil {
+if ((self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil])) {
+// Custom initialization
+}
+return self;
+}
+*/
+
+// Implement loadView to create a view hierarchy programmatically, without using a nib.
+- (void)loadView {
+ // Set EAGLView as view of RootViewController
+ self.view = (__bridge CCEAGLView *)cocos2d::Application::getInstance()->getView();
+}
+
+// Implement viewDidLoad to do additional setup after loading the view, typically from a nib.
+- (void)viewDidLoad {
+ [super viewDidLoad];
+}
+
+- (void)viewWillAppear:(BOOL)animated {
+ [super viewWillAppear:animated];
+}
+
+- (void)viewDidDisappear:(BOOL)animated {
+ [super viewDidDisappear:animated];
+}
+
+
+// For ios6, use supportedInterfaceOrientations & shouldAutorotate instead
+#ifdef __IPHONE_6_0
+- (NSUInteger) supportedInterfaceOrientations{
+ return UIInterfaceOrientationMaskAllButUpsideDown;
+}
+#endif
+
+- (BOOL) shouldAutorotate {
+ return YES;
+}
+
+- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation {
+ [super didRotateFromInterfaceOrientation:fromInterfaceOrientation];
+}
+
+//fix not hide status on ios7
+- (BOOL)prefersStatusBarHidden {
+ return YES;
+}
+
+// Controls the application's preferred home indicator auto-hiding when this view controller is shown.
+- (BOOL)prefersHomeIndicatorAutoHidden {
+ return YES;
+}
+
+- (void)didReceiveMemoryWarning {
+ // Releases the view if it doesn't have a superview.
+ [super didReceiveMemoryWarning];
+
+ // Release any cached data, images, etc that aren't in use.
+}
+
+
+@end
diff --git a/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.ios_mac/ios/SDKWrapper.h b/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.ios_mac/ios/SDKWrapper.h
new file mode 100644
index 0000000..03b0401
--- /dev/null
+++ b/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.ios_mac/ios/SDKWrapper.h
@@ -0,0 +1,24 @@
+//
+// SDKWrapper.h
+// polish_project-mobile
+//
+// Created by 杨欣 on 2018/10/20.
+//
+
+#import
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface SDKWrapper : NSObject
+@property(nonatomic,strong) NSString *name;
++ (instancetype)getInstance;
+// iOS应用生命周期
+- (void)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions;
+- (void)applicationDidBecomeActive:(UIApplication *)application;
+- (void)applicationWillResignActive:(UIApplication *)application;
+- (void)applicationDidEnterBackground:(UIApplication *)application;
+- (void)applicationWillEnterForeground:(UIApplication *)application;
+- (void)applicationWillTerminate:(UIApplication *)application;
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.ios_mac/ios/SDKWrapper.m b/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.ios_mac/ios/SDKWrapper.m
new file mode 100644
index 0000000..2b8fd03
--- /dev/null
+++ b/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.ios_mac/ios/SDKWrapper.m
@@ -0,0 +1,133 @@
+//
+// SDKWrapper.m
+// polish_project-mobile
+//
+// Created by 杨欣 on 2018/10/20.
+//
+
+#import "SDKWrapper.h"
+#import "SDKDelegate.h"
+
+@interface SDKWrapper ()
+
+@property (nonatomic, strong) NSArray *sdkClasses;
+
+@end
+
+@implementation SDKWrapper
+
+#pragma mark -
+#pragma mark Singleton
+
+static SDKWrapper *mInstace = nil;
+
++ (instancetype)getInstance {
+ static dispatch_once_t onceToken;
+ dispatch_once(&onceToken, ^{
+ mInstace = [[super allocWithZone:NULL] init];
+ [mInstace initSDKWrapper];
+ });
+ return mInstace;
+}
++ (id)allocWithZone:(struct _NSZone *)zone {
+ return [SDKWrapper getInstance];
+}
+
++ (id)copyWithZone:(struct _NSZone *)zone {
+ return [SDKWrapper getInstance];
+}
+
+#pragma mark -
+#pragma mark Application lifecycle
+- (void)initSDKWrapper {
+ [self loadSDKClass];
+}
+
+- (void)loadSDKClass {
+ NSString *path = [NSString stringWithFormat:@"%@/project.json",
+ [[NSBundle mainBundle] resourcePath]];
+ NSData *data = [NSData dataWithContentsOfFile:path options:NSDataReadingMappedIfSafe error:nil];
+ id obj = [NSJSONSerialization JSONObjectWithData:data options:0 error:nil];
+ id dic = obj[@"serviceClassPath"];
+ NSLog(@"%@",dic);
+ NSMutableArray *sdks = [NSMutableArray array];
+ for (NSString *str in dic) {
+ @try {
+ NSString *className = [[str componentsSeparatedByString:@"."] lastObject];
+ NSLog(@"%@",className);
+ Class c = NSClassFromString(className);
+ id sdk = [[c alloc] init];
+ [sdks addObject:sdk];
+ NSLog(@"%@",sdk);
+ } @catch (NSException *e) {
+ NSLog(@"%@",@"NSException");
+ NSLog(@"%@",e);
+ }
+ }
+ self.sdkClasses = [NSArray arrayWithArray:sdks];
+}
+
+/**
+ app显示给用户之前执行最后的初始化操作
+ */
+- (void)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
+ for (id sdk in self.sdkClasses) {
+ if ([sdk respondsToSelector:@selector(application:didFinishLaunchingWithOptions:)]) {
+ [sdk application:application didFinishLaunchingWithOptions:launchOptions];
+ }
+ }
+
+}
+
+/**
+ app已经切换到active状态后需要执行的操作
+ */
+- (void)applicationDidBecomeActive:(UIApplication *)application {
+ for (id sdk in self.sdkClasses) {
+ if ([sdk respondsToSelector:@selector(applicationDidBecomeActive:)]) {
+ [sdk applicationDidBecomeActive:application];
+ }
+ }
+}
+/**
+ app将要从前台切换到后台时需要执行的操作
+ */
+- (void)applicationWillResignActive:(UIApplication *)application {
+ for (id sdk in self.sdkClasses) {
+ if ([sdk respondsToSelector:@selector(applicationWillResignActive:)]) {
+ [sdk applicationWillResignActive:application];
+ }
+ }
+}
+/**
+ app已经进入后台后需要执行的操作
+ */
+- (void)applicationDidEnterBackground:(UIApplication *)application {
+ for (id sdk in self.sdkClasses) {
+ if ([sdk respondsToSelector:@selector(applicationDidEnterBackground:)]) {
+ [sdk applicationDidEnterBackground:application];
+ }
+ }
+}
+/**
+ app将要从后台切换到前台需要执行的操作,但app还不是active状态
+ */
+- (void)applicationWillEnterForeground:(UIApplication *)application {
+ for (id sdk in self.sdkClasses) {
+ if ([sdk respondsToSelector:@selector(applicationWillEnterForeground:)]) {
+ [sdk applicationWillEnterForeground:application];
+ }
+ }
+}
+/**
+ app将要结束时需要执行的操作
+ */
+- (void)applicationWillTerminate:(UIApplication *)application {
+ for (id sdk in self.sdkClasses) {
+ if ([sdk respondsToSelector:@selector(applicationWillTerminate:)]) {
+ [sdk applicationWillTerminate:application];
+ }
+ }
+}
+
+@end
diff --git a/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.ios_mac/ios/UserConfigIOS.debug.xcconfig b/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.ios_mac/ios/UserConfigIOS.debug.xcconfig
new file mode 100644
index 0000000..31dd375
--- /dev/null
+++ b/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.ios_mac/ios/UserConfigIOS.debug.xcconfig
@@ -0,0 +1,4 @@
+// Configuration settings file format documentation can be found at:
+// https://help.apple.com/xcode/#/dev745c5c974
+
+#include "/Applications/CocosCreator-2.1.3.app/Contents/Resources/cocos2d-x/cocos/platform/ios/CCModuleConfigIOS.debug.xcconfig"
diff --git a/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.ios_mac/ios/UserConfigIOS.release.xcconfig b/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.ios_mac/ios/UserConfigIOS.release.xcconfig
new file mode 100644
index 0000000..d91b4c6
--- /dev/null
+++ b/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.ios_mac/ios/UserConfigIOS.release.xcconfig
@@ -0,0 +1,4 @@
+// Configuration settings file format documentation can be found at:
+// https://help.apple.com/xcode/#/dev745c5c974
+
+#include "/Applications/CocosCreator-2.1.3.app/Contents/Resources/cocos2d-x/cocos/platform/ios/CCModuleConfigIOS.release.xcconfig"
diff --git a/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.ios_mac/ios/main.m b/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.ios_mac/ios/main.m
new file mode 100755
index 0000000..b1286e3
--- /dev/null
+++ b/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.ios_mac/ios/main.m
@@ -0,0 +1,11 @@
+
+
+#import
+
+int main(int argc, char *argv[]) {
+
+ NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
+ int retVal = UIApplicationMain(argc, argv, nil, @"AppController");
+ [pool release];
+ return retVal;
+}
diff --git a/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.ios_mac/ios/service/SDKDelegate.h b/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.ios_mac/ios/service/SDKDelegate.h
new file mode 100644
index 0000000..7d88d15
--- /dev/null
+++ b/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.ios_mac/ios/service/SDKDelegate.h
@@ -0,0 +1,25 @@
+//
+// SDKWrapperDelegate.h
+// polish_project-mobile
+//
+// Created by 杨欣 on 2018/10/22.
+//
+
+#import
+
+NS_ASSUME_NONNULL_BEGIN
+
+@protocol SDKDelegate
+
+@optional
+- (void) optionalFunction;
+- (void)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions;
+- (void)applicationDidBecomeActive:(UIApplication *)application;
+- (void)applicationWillResignActive:(UIApplication *)application;
+- (void)applicationDidEnterBackground:(UIApplication *)application;
+- (void)applicationWillEnterForeground:(UIApplication *)application;
+- (void)applicationWillTerminate:(UIApplication *)application;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.ios_mac/ios/zh-Hans.lproj/Localizable.strings b/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.ios_mac/ios/zh-Hans.lproj/Localizable.strings
new file mode 100644
index 0000000..5524fc7
--- /dev/null
+++ b/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.ios_mac/ios/zh-Hans.lproj/Localizable.strings
@@ -0,0 +1,9 @@
+/*
+ Localizable.strings
+ */
+
+"done" = "完成";
+"next" = "下一个";
+"search" = "搜索";
+"go" = "前往";
+"send" = "发送";
diff --git a/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.ios_mac/mac/Icon.icns b/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.ios_mac/mac/Icon.icns
new file mode 100755
index 0000000..2040fc6
Binary files /dev/null and b/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.ios_mac/mac/Icon.icns differ
diff --git a/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.ios_mac/mac/Info.plist b/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.ios_mac/mac/Info.plist
new file mode 100755
index 0000000..f3d6e40
--- /dev/null
+++ b/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.ios_mac/mac/Info.plist
@@ -0,0 +1,41 @@
+
+
+
+
+ CFBundleDevelopmentRegion
+ en
+ CFBundleExecutable
+ ${EXECUTABLE_NAME}
+ CFBundleIconFile
+ Icon
+ CFBundleIdentifier
+ Com.Wow.Stepofdoom
+ CFBundleInfoDictionaryVersion
+ 6.0
+ CFBundleName
+ ${PRODUCT_NAME}
+ CFBundlePackageType
+ APPL
+ CFBundleShortVersionString
+ 1.0
+ CFBundleSignature
+ ????
+ CFBundleVersion
+ 1
+ LSApplicationCategoryType
+ public.app-category.games
+ LSMinimumSystemVersion
+ ${MACOSX_DEPLOYMENT_TARGET}
+ NSHumanReadableCopyright
+ Copyright © 2013. All rights reserved.
+ NSMainNibFile
+ MainMenu
+ NSPrincipalClass
+ NSApplication
+ NSAppTransportSecurity
+
+ NSAllowsArbitraryLoads
+
+
+
+
diff --git a/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.ios_mac/mac/Prefix.pch b/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.ios_mac/mac/Prefix.pch
new file mode 100755
index 0000000..46c36a7
--- /dev/null
+++ b/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.ios_mac/mac/Prefix.pch
@@ -0,0 +1,7 @@
+//
+// Prefix header for all source files of the 'Paralaxer' target in the 'Paralaxer' project
+//
+
+#ifdef __OBJC__
+ #import
+#endif
diff --git a/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.ios_mac/mac/UserConfigMac.debug.xcconfig b/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.ios_mac/mac/UserConfigMac.debug.xcconfig
new file mode 100644
index 0000000..457b64a
--- /dev/null
+++ b/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.ios_mac/mac/UserConfigMac.debug.xcconfig
@@ -0,0 +1,4 @@
+// Configuration settings file format documentation can be found at:
+// https://help.apple.com/xcode/#/dev745c5c974
+
+#include "/Applications/CocosCreator-2.1.3.app/Contents/Resources/cocos2d-x/cocos/platform/mac/CCModuleConfigMac.debug.xcconfig"
diff --git a/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.ios_mac/mac/UserConfigMac.release.xcconfig b/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.ios_mac/mac/UserConfigMac.release.xcconfig
new file mode 100644
index 0000000..80640bb
--- /dev/null
+++ b/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.ios_mac/mac/UserConfigMac.release.xcconfig
@@ -0,0 +1,4 @@
+// Configuration settings file format documentation can be found at:
+// https://help.apple.com/xcode/#/dev745c5c974
+
+#include "/Applications/CocosCreator-2.1.3.app/Contents/Resources/cocos2d-x/cocos/platform/mac/CCModuleConfigMac.release.xcconfig"
diff --git a/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.ios_mac/mac/main.cpp b/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.ios_mac/mac/main.cpp
new file mode 100755
index 0000000..510a7bd
--- /dev/null
+++ b/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.ios_mac/mac/main.cpp
@@ -0,0 +1,34 @@
+/****************************************************************************
+ Copyright (c) 2010 cocos2d-x.org
+ Copyright (c) 2013-2016 Chukong Technologies Inc.
+ Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd.
+
+ http://www.cocos2d-x.org
+
+ Permission is hereby granted, free of charge, to any person obtaining a copy
+ of this software and associated documentation files (the "Software"), to deal
+ in the Software without restriction, including without limitation the rights
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ copies of the Software, and to permit persons to whom the Software is
+ furnished to do so, subject to the following conditions:
+
+ The above copyright notice and this permission notice shall be included in
+ all copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ THE SOFTWARE.
+ ****************************************************************************/
+
+#include "AppDelegate.h"
+
+int main(int argc, char *argv[])
+{
+ AppDelegate app(960, 640);
+ app.start();
+ return 0;
+}
diff --git a/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.win32/StepOfDoom.sln b/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.win32/StepOfDoom.sln
new file mode 100644
index 0000000..5d525b1
--- /dev/null
+++ b/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.win32/StepOfDoom.sln
@@ -0,0 +1,53 @@
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio 2013
+VisualStudioVersion = 12.0.21005.1
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "StepOfDoom", "StepOfDoom.vcxproj", "{3B0B58B1-2734-488E-A542-ECEC11EB2455}"
+ ProjectSection(ProjectDependencies) = postProject
+ {39379840-825A-45A0-B363-C09FFEF864BD} = {39379840-825A-45A0-B363-C09FFEF864BD}
+ {98A51BA8-FC3A-415B-AC8F-8C7BD464E93E} = {98A51BA8-FC3A-415B-AC8F-8C7BD464E93E}
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libcocos2d", "/Applications/CocosCreator-2.1.3.app/Contents/Resources/cocos2d-x\build\libcocos2d.vcxproj", "{98A51BA8-FC3A-415B-AC8F-8C7BD464E93E}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|Win32 = Debug|Win32
+ Release|Win32 = Release|Win32
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {3B0B58B1-2734-488E-A542-ECEC11EB2455}.Debug|Win32.ActiveCfg = Debug|Win32
+ {3B0B58B1-2734-488E-A542-ECEC11EB2455}.Debug|Win32.Build.0 = Debug|Win32
+ {3B0B58B1-2734-488E-A542-ECEC11EB2455}.Release|Win32.ActiveCfg = Release|Win32
+ {3B0B58B1-2734-488E-A542-ECEC11EB2455}.Release|Win32.Build.0 = Release|Win32
+ {B7C2A162-DEC9-4418-972E-240AB3CBFCAE}.Debug|Win32.ActiveCfg = Debug|Win32
+ {B7C2A162-DEC9-4418-972E-240AB3CBFCAE}.Debug|Win32.Build.0 = Debug|Win32
+ {B7C2A162-DEC9-4418-972E-240AB3CBFCAE}.Release|Win32.ActiveCfg = Release|Win32
+ {B7C2A162-DEC9-4418-972E-240AB3CBFCAE}.Release|Win32.Build.0 = Release|Win32
+ {98A51BA8-FC3A-415B-AC8F-8C7BD464E93E}.Debug|Win32.ActiveCfg = Debug|Win32
+ {98A51BA8-FC3A-415B-AC8F-8C7BD464E93E}.Debug|Win32.Build.0 = Debug|Win32
+ {98A51BA8-FC3A-415B-AC8F-8C7BD464E93E}.Release|Win32.ActiveCfg = Release|Win32
+ {98A51BA8-FC3A-415B-AC8F-8C7BD464E93E}.Release|Win32.Build.0 = Release|Win32
+ {39379840-825A-45A0-B363-C09FFEF864BD}.Debug|Win32.ActiveCfg = Debug|Win32
+ {39379840-825A-45A0-B363-C09FFEF864BD}.Debug|Win32.Build.0 = Debug|Win32
+ {39379840-825A-45A0-B363-C09FFEF864BD}.Release|Win32.ActiveCfg = Release|Win32
+ {39379840-825A-45A0-B363-C09FFEF864BD}.Release|Win32.Build.0 = Release|Win32
+ {6B494955-1E66-40DA-830D-0D31B8D301EF}.Debug|Win32.ActiveCfg = Debug|Win32
+ {6B494955-1E66-40DA-830D-0D31B8D301EF}.Debug|Win32.Build.0 = Debug|Win32
+ {6B494955-1E66-40DA-830D-0D31B8D301EF}.Release|Win32.ActiveCfg = Release|Win32
+ {6B494955-1E66-40DA-830D-0D31B8D301EF}.Release|Win32.Build.0 = Release|Win32
+ {EB7E5610-C178-49C9-8B4C-1C283E616ED9}.Debug|Win32.ActiveCfg = Debug|Win32
+ {EB7E5610-C178-49C9-8B4C-1C283E616ED9}.Debug|Win32.Build.0 = Debug|Win32
+ {EB7E5610-C178-49C9-8B4C-1C283E616ED9}.Release|Win32.ActiveCfg = Release|Win32
+ {EB7E5610-C178-49C9-8B4C-1C283E616ED9}.Release|Win32.Build.0 = Release|Win32
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+ GlobalSection(NestedProjects) = preSolution
+ {B7C2A162-DEC9-4418-972E-240AB3CBFCAE} = {8C6B0381-B325-4D7F-B1BB-474ABACE46AC}
+ {6B494955-1E66-40DA-830D-0D31B8D301EF} = {8C6B0381-B325-4D7F-B1BB-474ABACE46AC}
+ {EB7E5610-C178-49C9-8B4C-1C283E616ED9} = {8C6B0381-B325-4D7F-B1BB-474ABACE46AC}
+ EndGlobalSection
+EndGlobal
diff --git a/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.win32/StepOfDoom.vcxproj b/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.win32/StepOfDoom.vcxproj
new file mode 100755
index 0000000..f55951d
--- /dev/null
+++ b/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.win32/StepOfDoom.vcxproj
@@ -0,0 +1,203 @@
+
+
+
+
+ Debug
+ Win32
+
+
+ Release
+ Win32
+
+
+
+ {3B0B58B1-2734-488E-A542-ECEC11EB2455}
+ StepOfDoom
+
+
+
+ Application
+ Unicode
+ v120
+ v120_xp
+ v140
+ v140_xp
+ v140
+ v140_xp
+
+
+ Application
+ Unicode
+ v120
+ v120_xp
+ v140
+ v140_xp
+ v140
+ v140_xp
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <_ProjectFileVersion>12.0.21005.1
+ $(SolutionDir)$(Configuration).win32\
+ $(Configuration).win32\
+ false
+ $(SolutionDir)$(Configuration).win32\
+ $(Configuration).win32\
+ false
+ AllRules.ruleset
+
+
+ AllRules.ruleset
+
+
+
+
+ $(MSBuildProgramFiles32)\Microsoft SDKs\Windows\v7.1A\lib;$(LibraryPath)
+
+
+ $(MSBuildProgramFiles32)\Microsoft SDKs\Windows\v7.1A\lib;$(LibraryPath)
+
+
+
+ _DEBUG;%(PreprocessorDefinitions)
+ false
+ Win32
+ true
+ $(IntDir)game.tlb
+ game.h
+
+
+ game_i.c
+ game_p.c
+
+
+ Disabled
+ $(ProjectDir)..\Classes;$(EngineRoot);$(EngineRoot)cocos;$(EngineRoot)cocos\base;$(EngineRoot)cocos\scripting\js-bindings\auto;$(EngineRoot)cocos\scripting\js-bindings\manual;$(EngineRoot)cocos\audio\include;$(EngineRoot)external\win32\include\;$(EngineRoot)external\win32\include\v8;$(EngineRoot)extensions;$(EngineRoot)cocos\editor-support;%(AdditionalIncludeDirectories)
+ WIN32;_WINDOWS;STRICT;_DEBUG;XP_WIN;JS_HAVE___INTN;JS_INTPTR_TYPE=int;COCOS2D_DEBUG=1;_CRT_SECURE_NO_WARNINGS;_SCL_SECURE_NO_WARNINGS;_USRLIBSIMSTATIC;%(PreprocessorDefinitions)
+ false
+ EnableFastChecks
+ MultiThreadedDebugDLL
+
+
+ Level3
+ EditAndContinue
+ 4267;4251;4244;4800;%(DisableSpecificWarnings)
+ true
+
+
+ _DEBUG;%(PreprocessorDefinitions)
+ 0x0409
+ $(MSBuildProgramFiles32)\Microsoft SDKs\Windows\v7.1A\include;$(IntDir);%(AdditionalIncludeDirectories)
+
+
+
+
+
+
+ v8.dll.lib;v8_libbase.dll.lib;v8_libplatform.dll.lib;libuv.lib;%(AdditionalDependencies)
+ $(OutDir);%(AdditionalLibraryDirectories)
+ true
+ Windows
+ MachineX86
+
+
+
+
+
+
+
+
+
+
+
+
+ xcopy "$(ProjectDir)..\..\..\src" "$(OutDir)\src" /D /E /I /F /Y
+xcopy "$(ProjectDir)..\..\..\res" "$(OutDir)\res" /D /E /I /F /Y
+xcopy "$(ProjectDir)..\..\..\jsb-adapter" "$(OutDir)\jsb-adapter" /D /E /I /F /Y
+copy "$(ProjectDir)..\..\..\main.js" "$(OutDir)\" /Y
+copy "$(ProjectDir)..\..\..\project.json" "$(OutDir)\" /Y
+ $(TargetName).cab
+ $(TargetFileName)
+
+
+
+
+ NDEBUG;%(PreprocessorDefinitions)
+ false
+ Win32
+ true
+ $(IntDir)game.tlb
+ game.h
+
+
+ game_i.c
+ game_p.c
+
+
+ $(ProjectDir)..\Classes;$(EngineRoot);$(EngineRoot)cocos;$(EngineRoot)cocos\base;$(EngineRoot)cocos\scripting\js-bindings\auto;$(EngineRoot)cocos\scripting\js-bindings\manual;$(EngineRoot)cocos\audio\include;$(EngineRoot)external\win32\include\;$(EngineRoot)external\win32\include\v8;$(EngineRoot)extensions;$(EngineRoot)cocos\editor-support;%(AdditionalIncludeDirectories)
+ WIN32;_WINDOWS;STRICT;NDEBUG;XP_WIN;JS_HAVE___INTN;JS_INTPTR_TYPE=int;_CRT_SECURE_NO_WARNINGS;_SCL_SECURE_NO_WARNINGS;_USRLIBSIMSTATIC;%(PreprocessorDefinitions)
+
+
+ MultiThreadedDLL
+
+
+ Level3
+
+
+ 4267;4251;4244;4800;%(DisableSpecificWarnings)
+ true
+
+
+ NDEBUG;%(PreprocessorDefinitions)
+ 0x0409
+ $(MSBuildProgramFiles32)\Microsoft SDKs\Windows\v7.1A\include;$(IntDir);%(AdditionalIncludeDirectories)
+
+
+
+
+
+
+ v8.dll.lib;v8_libbase.dll.lib;v8_libplatform.dll.lib;libuv.lib;%(AdditionalDependencies)
+ $(OutDir);%(AdditionalLibraryDirectories)
+ Windows
+ MachineX86
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.win32/StepOfDoom.vcxproj.filters b/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.win32/StepOfDoom.vcxproj.filters
new file mode 100755
index 0000000..3410e72
--- /dev/null
+++ b/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.win32/StepOfDoom.vcxproj.filters
@@ -0,0 +1,45 @@
+
+
+
+
+ {ca9c9e15-d942-43a1-aa7a-5f0b74ca1afd}
+ rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;jpg;jpeg;jpe;png;manifest
+
+
+ {ccb2323b-1cfa-41ea-bcf4-ba5f07309396}
+
+
+ {e93a77e1-af1e-4400-87d3-504b62ebdbb0}
+
+
+
+
+ win32
+
+
+ Classes
+
+
+ Classes
+
+
+
+
+ Classes
+
+
+ win32
+
+
+
+
+
+ resource
+
+
+
+
+ resource
+
+
+
\ No newline at end of file
diff --git a/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.win32/StepOfDoom.vcxproj.user b/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.win32/StepOfDoom.vcxproj.user
new file mode 100644
index 0000000..8cf1d60
--- /dev/null
+++ b/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.win32/StepOfDoom.vcxproj.user
@@ -0,0 +1,11 @@
+
+
+
+ $(OutDir)
+ WindowsLocalDebugger
+
+
+ $(OutDir)
+ WindowsLocalDebugger
+
+
\ No newline at end of file
diff --git a/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.win32/build-cfg.json b/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.win32/build-cfg.json
new file mode 100755
index 0000000..d854c66
--- /dev/null
+++ b/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.win32/build-cfg.json
@@ -0,0 +1,28 @@
+{
+ "copy_resources": [
+ {
+ "from": "../../../src",
+ "to": "src"
+ },
+ {
+ "from": "../../../res",
+ "to": "res"
+ },
+ {
+ "from": "../../../subpackages",
+ "to": "subpackages"
+ },
+ {
+ "from": "../../../main.js",
+ "to": ""
+ },
+ {
+ "from": "../../../project.json",
+ "to": ""
+ },
+ {
+ "from": "../../../jsb-adapter",
+ "to": "jsb-adapter"
+ }
+ ]
+}
diff --git a/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.win32/game.rc b/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.win32/game.rc
new file mode 100755
index 0000000..491e970
--- /dev/null
+++ b/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.win32/game.rc
@@ -0,0 +1,126 @@
+// Microsoft Visual C++ generated resource script.
+//
+#include "resource.h"
+
+#define APSTUDIO_READONLY_SYMBOLS
+/////////////////////////////////////////////////////////////////////////////
+//
+// Generated from the TEXTINCLUDE 2 resource.
+//
+#include "winresrc.h"
+
+/////////////////////////////////////////////////////////////////////////////
+#undef APSTUDIO_READONLY_SYMBOLS
+
+/////////////////////////////////////////////////////////////////////////////
+// Chinese (Simplified, PRC) resources
+
+#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_CHS)
+LANGUAGE LANG_CHINESE, SUBLANG_CHINESE_SIMPLIFIED
+#pragma code_page(936)
+
+#ifdef APSTUDIO_INVOKED
+/////////////////////////////////////////////////////////////////////////////
+//
+// TEXTINCLUDE
+//
+
+2 TEXTINCLUDE
+BEGIN
+ "#include ""winresrc.h""\r\n"
+ "\0"
+END
+
+3 TEXTINCLUDE
+BEGIN
+ "\r\n"
+ "\0"
+END
+
+#endif // APSTUDIO_INVOKED
+
+#endif // Chinese (Simplified, PRC) resources
+/////////////////////////////////////////////////////////////////////////////
+
+
+/////////////////////////////////////////////////////////////////////////////
+// English (United States) resources
+
+#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
+LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
+#pragma code_page(1252)
+
+#ifdef APSTUDIO_INVOKED
+/////////////////////////////////////////////////////////////////////////////
+//
+// TEXTINCLUDE
+//
+
+1 TEXTINCLUDE
+BEGIN
+ "resource.h\0"
+END
+
+#endif // APSTUDIO_INVOKED
+
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Icon
+//
+
+// Icon with lowest ID value placed first to ensure application icon
+// remains consistent on all systems.
+GLFW_ICON ICON "res\\game.ico"
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Version
+//
+
+VS_VERSION_INFO VERSIONINFO
+ FILEVERSION 1,0,0,1
+ PRODUCTVERSION 1,0,0,1
+ FILEFLAGSMASK 0x3fL
+#ifdef _DEBUG
+ FILEFLAGS 0x1L
+#else
+ FILEFLAGS 0x0L
+#endif
+ FILEOS 0x4L
+ FILETYPE 0x2L
+ FILESUBTYPE 0x0L
+BEGIN
+ BLOCK "StringFileInfo"
+ BEGIN
+ BLOCK "040904B0"
+ BEGIN
+ VALUE "FileDescription", "game Module"
+ VALUE "FileVersion", "1, 0, 0, 1"
+ VALUE "InternalName", "game"
+ VALUE "LegalCopyright", "Copyright "
+ VALUE "OriginalFilename", "game.exe"
+ VALUE "ProductName", "game Module"
+ VALUE "ProductVersion", "1, 0, 0, 1"
+ END
+ END
+ BLOCK "VarFileInfo"
+ BEGIN
+ VALUE "Translation", 0x409, 1200
+ END
+END
+
+#endif // English (United States) resources
+/////////////////////////////////////////////////////////////////////////////
+
+
+
+#ifndef APSTUDIO_INVOKED
+/////////////////////////////////////////////////////////////////////////////
+//
+// Generated from the TEXTINCLUDE 3 resource.
+//
+
+
+/////////////////////////////////////////////////////////////////////////////
+#endif // not APSTUDIO_INVOKED
\ No newline at end of file
diff --git a/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.win32/main.cpp b/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.win32/main.cpp
new file mode 100755
index 0000000..2c368a2
--- /dev/null
+++ b/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.win32/main.cpp
@@ -0,0 +1,58 @@
+/****************************************************************************
+ Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd.
+
+ http://www.cocos.com
+
+ Permission is hereby granted, free of charge, to any person obtaining a copy
+ of this software and associated engine source code (the "Software"), a limited,
+ worldwide, royalty-free, non-assignable, revocable and non-exclusive license
+ to use Cocos Creator solely to develop games on your target platforms. You shall
+ not use Cocos Creator software for developing other software or tools that's
+ used for developing games. You are not granted to publish, distribute,
+ sublicense, and/or sell copies of Cocos Creator.
+
+ The software or tools in this License Agreement are licensed, not sold.
+ Xiamen Yaji Software Co., Ltd. reserves all rights not expressly granted to you.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ THE SOFTWARE.
+ ****************************************************************************/
+
+#include "main.h"
+#include "AppDelegate.h"
+
+USING_NS_CC;
+
+// uncomment below line, open debug console
+// #define USE_WIN32_CONSOLE
+
+int APIENTRY _tWinMain(HINSTANCE hInstance,
+ HINSTANCE hPrevInstance,
+ LPTSTR lpCmdLine,
+ int nCmdShow)
+{
+ UNREFERENCED_PARAMETER(hPrevInstance);
+ UNREFERENCED_PARAMETER(lpCmdLine);
+
+#ifdef USE_WIN32_CONSOLE
+ AllocConsole();
+ freopen("CONIN$", "r", stdin);
+ freopen("CONOUT$", "w", stdout);
+ freopen("CONOUT$", "w", stderr);
+#endif
+
+ // create the application instance
+ AppDelegate app(960, 640);
+ app.start();
+
+#ifdef USE_WIN32_CONSOLE
+ FreeConsole();
+#endif
+
+ return 0;
+}
diff --git a/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.win32/main.h b/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.win32/main.h
new file mode 100755
index 0000000..1f01f63
--- /dev/null
+++ b/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.win32/main.h
@@ -0,0 +1,37 @@
+/****************************************************************************
+ Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd.
+
+ http://www.cocos.com
+
+ Permission is hereby granted, free of charge, to any person obtaining a copy
+ of this software and associated engine source code (the "Software"), a limited,
+ worldwide, royalty-free, non-assignable, revocable and non-exclusive license
+ to use Cocos Creator solely to develop games on your target platforms. You shall
+ not use Cocos Creator software for developing other software or tools that's
+ used for developing games. You are not granted to publish, distribute,
+ sublicense, and/or sell copies of Cocos Creator.
+
+ The software or tools in this License Agreement are licensed, not sold.
+ Xiamen Yaji Software Co., Ltd. reserves all rights not expressly granted to you.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ THE SOFTWARE.
+ ****************************************************************************/
+
+#ifndef __MAIN_H__
+#define __MAIN_H__
+
+#define WIN32_LEAN_AND_MEAN // Exclude rarely-used stuff from Windows headers
+
+// Windows Header Files:
+#include
+
+// C RunTime Header Files
+#include "CCStdC.h"
+
+#endif // __WINMAIN_H__
diff --git a/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.win32/res/game.ico b/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.win32/res/game.ico
new file mode 100755
index 0000000..feaf932
Binary files /dev/null and b/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.win32/res/game.ico differ
diff --git a/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.win32/resource.h b/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.win32/resource.h
new file mode 100755
index 0000000..9201190
--- /dev/null
+++ b/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/frameworks/runtime-src/proj.win32/resource.h
@@ -0,0 +1,17 @@
+//{{NO_DEPENDENCIES}}
+// Microsoft Visual C++ generated include file.
+// Used by game.rc
+//
+#define IDS_PROJNAME 100
+#define IDR_TESTJS 100
+
+// Next default values for new objects
+//
+#ifdef APSTUDIO_INVOKED
+#ifndef APSTUDIO_READONLY_SYMBOLS
+#define _APS_NEXT_RESOURCE_VALUE 204
+#define _APS_NEXT_COMMAND_VALUE 32785
+#define _APS_NEXT_CONTROL_VALUE 1001
+#define _APS_NEXT_SYMED_VALUE 101
+#endif
+#endif
diff --git a/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/js backups (useful for debugging)/cocos2d-jsb.js b/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/js backups (useful for debugging)/cocos2d-jsb.js
new file mode 100644
index 0000000..bd7bac8
--- /dev/null
+++ b/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/js backups (useful for debugging)/cocos2d-jsb.js
@@ -0,0 +1,64859 @@
+(function() {
+(function(t, e, i) {
+function n(i, r) {
+var s = e[i];
+if (!s) {
+var o = t[i];
+if (!o) return;
+var a = {};
+s = e[i] = {
+exports: a
+};
+o[0]((function(t) {
+return n(o[1][t] || t);
+}), s, a);
+}
+return s.exports;
+}
+for (var r = 0; r < i.length; r++) n(i[r]);
+})({
+1: [ (function(t, e, i) {
+"use strict";
+t("../core/platform/CCClass");
+var n = t("../core/utils/misc");
+cc.Action = cc.Class({
+name: "cc.Action",
+ctor: function() {
+this.originalTarget = null;
+this.target = null;
+this.tag = cc.Action.TAG_INVALID;
+},
+clone: function() {
+var t = new cc.Action();
+t.originalTarget = null;
+t.target = null;
+t.tag = this.tag;
+return t;
+},
+isDone: function() {
+return !0;
+},
+startWithTarget: function(t) {
+this.originalTarget = t;
+this.target = t;
+},
+stop: function() {
+this.target = null;
+},
+step: function(t) {
+cc.logID(1006);
+},
+update: function(t) {
+cc.logID(1007);
+},
+getTarget: function() {
+return this.target;
+},
+setTarget: function(t) {
+this.target = t;
+},
+getOriginalTarget: function() {
+return this.originalTarget;
+},
+setOriginalTarget: function(t) {
+this.originalTarget = t;
+},
+getTag: function() {
+return this.tag;
+},
+setTag: function(t) {
+this.tag = t;
+},
+retain: function() {},
+release: function() {}
+});
+cc.Action.TAG_INVALID = -1;
+cc.FiniteTimeAction = cc.Class({
+name: "cc.FiniteTimeAction",
+extends: cc.Action,
+ctor: function() {
+this._duration = 0;
+},
+getDuration: function() {
+return this._duration * (this._timesForRepeat || 1);
+},
+setDuration: function(t) {
+this._duration = t;
+},
+reverse: function() {
+cc.logID(1008);
+return null;
+},
+clone: function() {
+return new cc.FiniteTimeAction();
+}
+});
+cc.Speed = cc.Class({
+name: "cc.Speed",
+extends: cc.Action,
+ctor: function(t, e) {
+this._speed = 0;
+this._innerAction = null;
+t && this.initWithAction(t, e);
+},
+getSpeed: function() {
+return this._speed;
+},
+setSpeed: function(t) {
+this._speed = t;
+},
+initWithAction: function(t, e) {
+if (!t) {
+cc.errorID(1021);
+return !1;
+}
+this._innerAction = t;
+this._speed = e;
+return !0;
+},
+clone: function() {
+var t = new cc.Speed();
+t.initWithAction(this._innerAction.clone(), this._speed);
+return t;
+},
+startWithTarget: function(t) {
+cc.Action.prototype.startWithTarget.call(this, t);
+this._innerAction.startWithTarget(t);
+},
+stop: function() {
+this._innerAction.stop();
+cc.Action.prototype.stop.call(this);
+},
+step: function(t) {
+this._innerAction.step(t * this._speed);
+},
+isDone: function() {
+return this._innerAction.isDone();
+},
+reverse: function() {
+return new cc.Speed(this._innerAction.reverse(), this._speed);
+},
+setInnerAction: function(t) {
+this._innerAction !== t && (this._innerAction = t);
+},
+getInnerAction: function() {
+return this._innerAction;
+}
+});
+cc.speed = function(t, e) {
+return new cc.Speed(t, e);
+};
+cc.Follow = cc.Class({
+name: "cc.Follow",
+extends: cc.Action,
+ctor: function(t, e) {
+this._followedNode = null;
+this._boundarySet = !1;
+this._boundaryFullyCovered = !1;
+this._halfScreenSize = null;
+this._fullScreenSize = null;
+this.leftBoundary = 0;
+this.rightBoundary = 0;
+this.topBoundary = 0;
+this.bottomBoundary = 0;
+this._worldRect = cc.rect(0, 0, 0, 0);
+t && (e ? this.initWithTarget(t, e) : this.initWithTarget(t));
+},
+clone: function() {
+var t = new cc.Follow(), e = this._worldRect, i = new cc.Rect(e.x, e.y, e.width, e.height);
+t.initWithTarget(this._followedNode, i);
+return t;
+},
+isBoundarySet: function() {
+return this._boundarySet;
+},
+setBoudarySet: function(t) {
+this._boundarySet = t;
+},
+initWithTarget: function(t, e) {
+if (!t) {
+cc.errorID(1022);
+return !1;
+}
+e = e || cc.rect(0, 0, 0, 0);
+this._followedNode = t;
+this._worldRect = e;
+this._boundarySet = !(0 === e.width && 0 === e.height);
+this._boundaryFullyCovered = !1;
+var i = cc.winSize;
+this._fullScreenSize = cc.v2(i.width, i.height);
+this._halfScreenSize = this._fullScreenSize.mul(.5);
+if (this._boundarySet) {
+this.leftBoundary = -(e.x + e.width - this._fullScreenSize.x);
+this.rightBoundary = -e.x;
+this.topBoundary = -e.y;
+this.bottomBoundary = -(e.y + e.height - this._fullScreenSize.y);
+this.rightBoundary < this.leftBoundary && (this.rightBoundary = this.leftBoundary = (this.leftBoundary + this.rightBoundary) / 2);
+this.topBoundary < this.bottomBoundary && (this.topBoundary = this.bottomBoundary = (this.topBoundary + this.bottomBoundary) / 2);
+this.topBoundary === this.bottomBoundary && this.leftBoundary === this.rightBoundary && (this._boundaryFullyCovered = !0);
+}
+return !0;
+},
+step: function(t) {
+var e = this.target.convertToWorldSpaceAR(cc.Vec2.ZERO), i = this._followedNode.convertToWorldSpaceAR(cc.Vec2.ZERO), r = e.sub(i), s = this.target.parent.convertToNodeSpaceAR(r.add(this._halfScreenSize));
+if (this._boundarySet) {
+if (this._boundaryFullyCovered) return;
+this.target.setPosition(n.clampf(s.x, this.leftBoundary, this.rightBoundary), n.clampf(s.y, this.bottomBoundary, this.topBoundary));
+} else this.target.setPosition(s.x, s.y);
+},
+isDone: function() {
+return !this._followedNode.activeInHierarchy;
+},
+stop: function() {
+this.target = null;
+cc.Action.prototype.stop.call(this);
+}
+});
+cc.follow = function(t, e) {
+return new cc.Follow(t, e);
+};
+}), {
+"../core/platform/CCClass": 201,
+"../core/utils/misc": 297
+} ],
+2: [ (function(t, e, i) {
+"use strict";
+function n(t, e, i, n, r, s) {
+var o = s * s, a = o * s, c = (1 - r) / 2, l = c * (2 * o - a - s), h = c * (-a + o) + (2 * a - 3 * o + 1), u = c * (a - 2 * o + s) + (-2 * a + 3 * o), _ = c * (a - o), f = t.x * l + e.x * h + i.x * u + n.x * _, d = t.y * l + e.y * h + i.y * u + n.y * _;
+return cc.v2(f, d);
+}
+function r(t, e) {
+return t[Math.min(t.length - 1, Math.max(e, 0))];
+}
+function s(t) {
+for (var e = [], i = t.length - 1; i >= 0; i--) e.push(cc.v2(t[i].x, t[i].y));
+return e;
+}
+function o(t) {
+for (var e = [], i = 0; i < t.length; i++) e.push(cc.v2(t[i].x, t[i].y));
+return e;
+}
+cc.CardinalSplineTo = cc.Class({
+name: "cc.CardinalSplineTo",
+extends: cc.ActionInterval,
+ctor: function(t, e, i) {
+this._points = [];
+this._deltaT = 0;
+this._tension = 0;
+this._previousPosition = null;
+this._accumulatedDiff = null;
+void 0 !== i && cc.CardinalSplineTo.prototype.initWithDuration.call(this, t, e, i);
+},
+initWithDuration: function(t, e, i) {
+if (!e || 0 === e.length) {
+cc.errorID(1024);
+return !1;
+}
+if (cc.ActionInterval.prototype.initWithDuration.call(this, t)) {
+this.setPoints(e);
+this._tension = i;
+return !0;
+}
+return !1;
+},
+clone: function() {
+var t = new cc.CardinalSplineTo();
+t.initWithDuration(this._duration, o(this._points), this._tension);
+return t;
+},
+startWithTarget: function(t) {
+cc.ActionInterval.prototype.startWithTarget.call(this, t);
+this._deltaT = 1 / (this._points.length - 1);
+this._previousPosition = cc.v2(this.target.x, this.target.y);
+this._accumulatedDiff = cc.v2(0, 0);
+},
+update: function(t) {
+t = this._computeEaseTime(t);
+var e, i, s = this._points;
+if (1 === t) {
+e = s.length - 1;
+i = 1;
+} else {
+var o = this._deltaT;
+i = (t - o * (e = 0 | t / o)) / o;
+}
+var a = n(r(s, e - 1), r(s, e - 0), r(s, e + 1), r(s, e + 2), this._tension, i);
+if (cc.macro.ENABLE_STACKABLE_ACTIONS) {
+var c, l;
+c = this.target.x - this._previousPosition.x;
+l = this.target.y - this._previousPosition.y;
+if (0 !== c || 0 !== l) {
+var h = this._accumulatedDiff;
+c = h.x + c;
+l = h.y + l;
+h.x = c;
+h.y = l;
+a.x += c;
+a.y += l;
+}
+}
+this.updatePosition(a);
+},
+reverse: function() {
+var t = s(this._points);
+return cc.cardinalSplineTo(this._duration, t, this._tension);
+},
+updatePosition: function(t) {
+this.target.setPosition(t);
+this._previousPosition = t;
+},
+getPoints: function() {
+return this._points;
+},
+setPoints: function(t) {
+this._points = t;
+}
+});
+cc.cardinalSplineTo = function(t, e, i) {
+return new cc.CardinalSplineTo(t, e, i);
+};
+cc.CardinalSplineBy = cc.Class({
+name: "cc.CardinalSplineBy",
+extends: cc.CardinalSplineTo,
+ctor: function(t, e, i) {
+this._startPosition = cc.v2(0, 0);
+void 0 !== i && this.initWithDuration(t, e, i);
+},
+startWithTarget: function(t) {
+cc.CardinalSplineTo.prototype.startWithTarget.call(this, t);
+this._startPosition.x = t.x;
+this._startPosition.y = t.y;
+},
+reverse: function() {
+for (var t, e = this._points.slice(), i = e[0], n = 1; n < e.length; ++n) {
+t = e[n];
+e[n] = t.sub(i);
+i = t;
+}
+var r = s(e);
+i = r[r.length - 1];
+r.pop();
+i.x = -i.x;
+i.y = -i.y;
+r.unshift(i);
+for (n = 1; n < r.length; ++n) {
+(t = r[n]).x = -t.x;
+t.y = -t.y;
+t.x += i.x;
+t.y += i.y;
+r[n] = t;
+i = t;
+}
+return cc.cardinalSplineBy(this._duration, r, this._tension);
+},
+updatePosition: function(t) {
+var e = this._startPosition, i = t.x + e.x, n = t.y + e.y;
+this._previousPosition.x = i;
+this._previousPosition.y = n;
+this.target.setPosition(i, n);
+},
+clone: function() {
+var t = new cc.CardinalSplineBy();
+t.initWithDuration(this._duration, o(this._points), this._tension);
+return t;
+}
+});
+cc.cardinalSplineBy = function(t, e, i) {
+return new cc.CardinalSplineBy(t, e, i);
+};
+cc.CatmullRomTo = cc.Class({
+name: "cc.CatmullRomTo",
+extends: cc.CardinalSplineTo,
+ctor: function(t, e) {
+e && this.initWithDuration(t, e);
+},
+initWithDuration: function(t, e) {
+return cc.CardinalSplineTo.prototype.initWithDuration.call(this, t, e, .5);
+},
+clone: function() {
+var t = new cc.CatmullRomTo();
+t.initWithDuration(this._duration, o(this._points));
+return t;
+}
+});
+cc.catmullRomTo = function(t, e) {
+return new cc.CatmullRomTo(t, e);
+};
+cc.CatmullRomBy = cc.Class({
+name: "cc.CatmullRomBy",
+extends: cc.CardinalSplineBy,
+ctor: function(t, e) {
+e && this.initWithDuration(t, e);
+},
+initWithDuration: function(t, e) {
+return cc.CardinalSplineTo.prototype.initWithDuration.call(this, t, e, .5);
+},
+clone: function() {
+var t = new cc.CatmullRomBy();
+t.initWithDuration(this._duration, o(this._points));
+return t;
+}
+});
+cc.catmullRomBy = function(t, e) {
+return new cc.CatmullRomBy(t, e);
+};
+}), {} ],
+3: [ (function(t, e, i) {
+"use strict";
+cc.easeIn = function(t) {
+return {
+_rate: t,
+easing: function(t) {
+return Math.pow(t, this._rate);
+},
+reverse: function() {
+return cc.easeIn(1 / this._rate);
+}
+};
+};
+cc.easeOut = function(t) {
+return {
+_rate: t,
+easing: function(t) {
+return Math.pow(t, 1 / this._rate);
+},
+reverse: function() {
+return cc.easeOut(1 / this._rate);
+}
+};
+};
+cc.easeInOut = function(t) {
+return {
+_rate: t,
+easing: function(t) {
+return (t *= 2) < 1 ? .5 * Math.pow(t, this._rate) : 1 - .5 * Math.pow(2 - t, this._rate);
+},
+reverse: function() {
+return cc.easeInOut(this._rate);
+}
+};
+};
+var n = {
+easing: function(t) {
+return 0 === t ? 0 : Math.pow(2, 10 * (t - 1));
+},
+reverse: function() {
+return r;
+}
+};
+cc.easeExponentialIn = function() {
+return n;
+};
+var r = {
+easing: function(t) {
+return 1 === t ? 1 : 1 - Math.pow(2, -10 * t);
+},
+reverse: function() {
+return n;
+}
+};
+cc.easeExponentialOut = function() {
+return r;
+};
+var s = {
+easing: function(t) {
+return 1 !== t && 0 !== t ? (t *= 2) < 1 ? .5 * Math.pow(2, 10 * (t - 1)) : .5 * (2 - Math.pow(2, -10 * (t - 1))) : t;
+},
+reverse: function() {
+return s;
+}
+};
+cc.easeExponentialInOut = function() {
+return s;
+};
+var o = {
+easing: function(t) {
+return 0 === t || 1 === t ? t : -1 * Math.cos(t * Math.PI / 2) + 1;
+},
+reverse: function() {
+return a;
+}
+};
+cc.easeSineIn = function() {
+return o;
+};
+var a = {
+easing: function(t) {
+return 0 === t || 1 === t ? t : Math.sin(t * Math.PI / 2);
+},
+reverse: function() {
+return o;
+}
+};
+cc.easeSineOut = function() {
+return a;
+};
+var c = {
+easing: function(t) {
+return 0 === t || 1 === t ? t : -.5 * (Math.cos(Math.PI * t) - 1);
+},
+reverse: function() {
+return c;
+}
+};
+cc.easeSineInOut = function() {
+return c;
+};
+var l = {
+easing: function(t) {
+if (0 === t || 1 === t) return t;
+t -= 1;
+return -Math.pow(2, 10 * t) * Math.sin((t - .075) * Math.PI * 2 / .3);
+},
+reverse: function() {
+return h;
+}
+};
+cc.easeElasticIn = function(t) {
+return t && .3 !== t ? {
+_period: t,
+easing: function(t) {
+if (0 === t || 1 === t) return t;
+t -= 1;
+return -Math.pow(2, 10 * t) * Math.sin((t - this._period / 4) * Math.PI * 2 / this._period);
+},
+reverse: function() {
+return cc.easeElasticOut(this._period);
+}
+} : l;
+};
+var h = {
+easing: function(t) {
+return 0 === t || 1 === t ? t : Math.pow(2, -10 * t) * Math.sin((t - .075) * Math.PI * 2 / .3) + 1;
+},
+reverse: function() {
+return l;
+}
+};
+cc.easeElasticOut = function(t) {
+return t && .3 !== t ? {
+_period: t,
+easing: function(t) {
+return 0 === t || 1 === t ? t : Math.pow(2, -10 * t) * Math.sin((t - this._period / 4) * Math.PI * 2 / this._period) + 1;
+},
+reverse: function() {
+return cc.easeElasticIn(this._period);
+}
+} : h;
+};
+cc.easeElasticInOut = function(t) {
+return {
+_period: t = t || .3,
+easing: function(t) {
+var e = 0, i = this._period;
+if (0 === t || 1 === t) e = t; else {
+t *= 2;
+i || (i = this._period = .3 * 1.5);
+var n = i / 4;
+e = (t -= 1) < 0 ? -.5 * Math.pow(2, 10 * t) * Math.sin((t - n) * Math.PI * 2 / i) : Math.pow(2, -10 * t) * Math.sin((t - n) * Math.PI * 2 / i) * .5 + 1;
+}
+return e;
+},
+reverse: function() {
+return cc.easeElasticInOut(this._period);
+}
+};
+};
+function u(t) {
+return t < 1 / 2.75 ? 7.5625 * t * t : t < 2 / 2.75 ? 7.5625 * (t -= 1.5 / 2.75) * t + .75 : t < 2.5 / 2.75 ? 7.5625 * (t -= 2.25 / 2.75) * t + .9375 : 7.5625 * (t -= 2.625 / 2.75) * t + .984375;
+}
+var _ = {
+easing: function(t) {
+return 1 - u(1 - t);
+},
+reverse: function() {
+return f;
+}
+};
+cc.easeBounceIn = function() {
+return _;
+};
+var f = {
+easing: function(t) {
+return u(t);
+},
+reverse: function() {
+return _;
+}
+};
+cc.easeBounceOut = function() {
+return f;
+};
+var d = {
+easing: function(t) {
+return t < .5 ? .5 * (1 - u(1 - (t *= 2))) : .5 * u(2 * t - 1) + .5;
+},
+reverse: function() {
+return d;
+}
+};
+cc.easeBounceInOut = function() {
+return d;
+};
+var m = {
+easing: function(t) {
+return 0 === t || 1 === t ? t : t * t * (2.70158 * t - 1.70158);
+},
+reverse: function() {
+return p;
+}
+};
+cc.easeBackIn = function() {
+return m;
+};
+var p = {
+easing: function(t) {
+return (t -= 1) * t * (2.70158 * t + 1.70158) + 1;
+},
+reverse: function() {
+return m;
+}
+};
+cc.easeBackOut = function() {
+return p;
+};
+var v = {
+easing: function(t) {
+return (t *= 2) < 1 ? t * t * (3.5949095 * t - 2.5949095) / 2 : (t -= 2) * t * (3.5949095 * t + 2.5949095) / 2 + 1;
+},
+reverse: function() {
+return v;
+}
+};
+cc.easeBackInOut = function() {
+return v;
+};
+cc.easeBezierAction = function(t, e, i, n) {
+return {
+easing: function(r) {
+return Math.pow(1 - r, 3) * t + 3 * r * Math.pow(1 - r, 2) * e + 3 * Math.pow(r, 2) * (1 - r) * i + Math.pow(r, 3) * n;
+},
+reverse: function() {
+return cc.easeBezierAction(n, i, e, t);
+}
+};
+};
+var y = {
+easing: function(t) {
+return Math.pow(t, 2);
+},
+reverse: function() {
+return y;
+}
+};
+cc.easeQuadraticActionIn = function() {
+return y;
+};
+var g = {
+easing: function(t) {
+return -t * (t - 2);
+},
+reverse: function() {
+return g;
+}
+};
+cc.easeQuadraticActionOut = function() {
+return g;
+};
+var x = {
+easing: function(t) {
+return (t *= 2) < 1 ? t * t * .5 : -.5 * (--t * (t - 2) - 1);
+},
+reverse: function() {
+return x;
+}
+};
+cc.easeQuadraticActionInOut = function() {
+return x;
+};
+var C = {
+easing: function(t) {
+return t * t * t * t;
+},
+reverse: function() {
+return C;
+}
+};
+cc.easeQuarticActionIn = function() {
+return C;
+};
+var b = {
+easing: function(t) {
+return -((t -= 1) * t * t * t - 1);
+},
+reverse: function() {
+return b;
+}
+};
+cc.easeQuarticActionOut = function() {
+return b;
+};
+var A = {
+easing: function(t) {
+return (t *= 2) < 1 ? .5 * t * t * t * t : -.5 * ((t -= 2) * t * t * t - 2);
+},
+reverse: function() {
+return A;
+}
+};
+cc.easeQuarticActionInOut = function() {
+return A;
+};
+var S = {
+easing: function(t) {
+return t * t * t * t * t;
+},
+reverse: function() {
+return S;
+}
+};
+cc.easeQuinticActionIn = function() {
+return S;
+};
+var w = {
+easing: function(t) {
+return (t -= 1) * t * t * t * t + 1;
+},
+reverse: function() {
+return w;
+}
+};
+cc.easeQuinticActionOut = function() {
+return w;
+};
+var T = {
+easing: function(t) {
+return (t *= 2) < 1 ? .5 * t * t * t * t * t : .5 * ((t -= 2) * t * t * t * t + 2);
+},
+reverse: function() {
+return T;
+}
+};
+cc.easeQuinticActionInOut = function() {
+return T;
+};
+var E = {
+easing: function(t) {
+return -1 * (Math.sqrt(1 - t * t) - 1);
+},
+reverse: function() {
+return E;
+}
+};
+cc.easeCircleActionIn = function() {
+return E;
+};
+var M = {
+easing: function(t) {
+t -= 1;
+return Math.sqrt(1 - t * t);
+},
+reverse: function() {
+return M;
+}
+};
+cc.easeCircleActionOut = function() {
+return M;
+};
+var B = {
+easing: function(t) {
+if ((t *= 2) < 1) return -.5 * (Math.sqrt(1 - t * t) - 1);
+t -= 2;
+return .5 * (Math.sqrt(1 - t * t) + 1);
+},
+reverse: function() {
+return B;
+}
+};
+cc.easeCircleActionInOut = function() {
+return B;
+};
+var D = {
+easing: function(t) {
+return t * t * t;
+},
+reverse: function() {
+return D;
+}
+};
+cc.easeCubicActionIn = function() {
+return D;
+};
+var I = {
+easing: function(t) {
+return (t -= 1) * t * t + 1;
+},
+reverse: function() {
+return I;
+}
+};
+cc.easeCubicActionOut = function() {
+return I;
+};
+var P = {
+easing: function(t) {
+return (t *= 2) < 1 ? .5 * t * t * t : .5 * ((t -= 2) * t * t + 2);
+},
+reverse: function() {
+return P;
+}
+};
+cc.easeCubicActionInOut = function() {
+return P;
+};
+}), {} ],
+4: [ (function(t, e, i) {
+"use strict";
+cc.ActionInstant = cc.Class({
+name: "cc.ActionInstant",
+extends: cc.FiniteTimeAction,
+isDone: function() {
+return !0;
+},
+step: function(t) {
+this.update(1);
+},
+update: function(t) {},
+reverse: function() {
+return this.clone();
+},
+clone: function() {
+return new cc.ActionInstant();
+}
+});
+cc.Show = cc.Class({
+name: "cc.Show",
+extends: cc.ActionInstant,
+update: function(t) {
+for (var e = this.target.getComponentsInChildren(cc.RenderComponent), i = 0; i < e.length; ++i) {
+e[i].enabled = !0;
+}
+},
+reverse: function() {
+return new cc.Hide();
+},
+clone: function() {
+return new cc.Show();
+}
+});
+cc.show = function() {
+return new cc.Show();
+};
+cc.Hide = cc.Class({
+name: "cc.Hide",
+extends: cc.ActionInstant,
+update: function(t) {
+for (var e = this.target.getComponentsInChildren(cc.RenderComponent), i = 0; i < e.length; ++i) {
+e[i].enabled = !1;
+}
+},
+reverse: function() {
+return new cc.Show();
+},
+clone: function() {
+return new cc.Hide();
+}
+});
+cc.hide = function() {
+return new cc.Hide();
+};
+cc.ToggleVisibility = cc.Class({
+name: "cc.ToggleVisibility",
+extends: cc.ActionInstant,
+update: function(t) {
+for (var e = this.target.getComponentsInChildren(cc.RenderComponent), i = 0; i < e.length; ++i) {
+var n = e[i];
+n.enabled = !n.enabled;
+}
+},
+reverse: function() {
+return new cc.ToggleVisibility();
+},
+clone: function() {
+return new cc.ToggleVisibility();
+}
+});
+cc.toggleVisibility = function() {
+return new cc.ToggleVisibility();
+};
+cc.RemoveSelf = cc.Class({
+name: "cc.RemoveSelf",
+extends: cc.ActionInstant,
+ctor: function(t) {
+this._isNeedCleanUp = !0;
+void 0 !== t && this.init(t);
+},
+update: function(t) {
+this.target.removeFromParent(this._isNeedCleanUp);
+},
+init: function(t) {
+this._isNeedCleanUp = t;
+return !0;
+},
+reverse: function() {
+return new cc.RemoveSelf(this._isNeedCleanUp);
+},
+clone: function() {
+return new cc.RemoveSelf(this._isNeedCleanUp);
+}
+});
+cc.removeSelf = function(t) {
+return new cc.RemoveSelf(t);
+};
+cc.FlipX = cc.Class({
+name: "cc.FlipX",
+extends: cc.ActionInstant,
+ctor: function(t) {
+this._flippedX = !1;
+void 0 !== t && this.initWithFlipX(t);
+},
+initWithFlipX: function(t) {
+this._flippedX = t;
+return !0;
+},
+update: function(t) {
+this.target.scaleX = Math.abs(this.target.scaleX) * (this._flippedX ? -1 : 1);
+},
+reverse: function() {
+return new cc.FlipX(!this._flippedX);
+},
+clone: function() {
+var t = new cc.FlipX();
+t.initWithFlipX(this._flippedX);
+return t;
+}
+});
+cc.flipX = function(t) {
+return new cc.FlipX(t);
+};
+cc.FlipY = cc.Class({
+name: "cc.FlipY",
+extends: cc.ActionInstant,
+ctor: function(t) {
+this._flippedY = !1;
+void 0 !== t && this.initWithFlipY(t);
+},
+initWithFlipY: function(t) {
+this._flippedY = t;
+return !0;
+},
+update: function(t) {
+this.target.scaleY = Math.abs(this.target.scaleY) * (this._flippedY ? -1 : 1);
+},
+reverse: function() {
+return new cc.FlipY(!this._flippedY);
+},
+clone: function() {
+var t = new cc.FlipY();
+t.initWithFlipY(this._flippedY);
+return t;
+}
+});
+cc.flipY = function(t) {
+return new cc.FlipY(t);
+};
+cc.Place = cc.Class({
+name: "cc.Place",
+extends: cc.ActionInstant,
+ctor: function(t, e) {
+this._x = 0;
+this._y = 0;
+if (void 0 !== t) {
+if (void 0 !== t.x) {
+e = t.y;
+t = t.x;
+}
+this.initWithPosition(t, e);
+}
+},
+initWithPosition: function(t, e) {
+this._x = t;
+this._y = e;
+return !0;
+},
+update: function(t) {
+this.target.setPosition(this._x, this._y);
+},
+clone: function() {
+var t = new cc.Place();
+t.initWithPosition(this._x, this._y);
+return t;
+}
+});
+cc.place = function(t, e) {
+return new cc.Place(t, e);
+};
+cc.CallFunc = cc.Class({
+name: "cc.CallFunc",
+extends: cc.ActionInstant,
+ctor: function(t, e, i) {
+this._selectorTarget = null;
+this._function = null;
+this._data = null;
+this.initWithFunction(t, e, i);
+},
+initWithFunction: function(t, e, i) {
+t && (this._function = t);
+e && (this._selectorTarget = e);
+void 0 !== i && (this._data = i);
+return !0;
+},
+execute: function() {
+this._function && this._function.call(this._selectorTarget, this.target, this._data);
+},
+update: function(t) {
+this.execute();
+},
+getTargetCallback: function() {
+return this._selectorTarget;
+},
+setTargetCallback: function(t) {
+if (t !== this._selectorTarget) {
+this._selectorTarget && (this._selectorTarget = null);
+this._selectorTarget = t;
+}
+},
+clone: function() {
+var t = new cc.CallFunc();
+t.initWithFunction(this._function, this._selectorTarget, this._data);
+return t;
+}
+});
+cc.callFunc = function(t, e, i) {
+return new cc.CallFunc(t, e, i);
+};
+}), {} ],
+5: [ (function(t, e, i) {
+"use strict";
+cc.ActionInterval = cc.Class({
+name: "cc.ActionInterval",
+extends: cc.FiniteTimeAction,
+ctor: function(t) {
+this.MAX_VALUE = 2;
+this._elapsed = 0;
+this._firstTick = !1;
+this._easeList = null;
+this._speed = 1;
+this._timesForRepeat = 1;
+this._repeatForever = !1;
+this._repeatMethod = !1;
+this._speedMethod = !1;
+void 0 !== t && cc.ActionInterval.prototype.initWithDuration.call(this, t);
+},
+getElapsed: function() {
+return this._elapsed;
+},
+initWithDuration: function(t) {
+this._duration = 0 === t ? cc.macro.FLT_EPSILON : t;
+this._elapsed = 0;
+this._firstTick = !0;
+return !0;
+},
+isDone: function() {
+return this._elapsed >= this._duration;
+},
+_cloneDecoration: function(t) {
+t._repeatForever = this._repeatForever;
+t._speed = this._speed;
+t._timesForRepeat = this._timesForRepeat;
+t._easeList = this._easeList;
+t._speedMethod = this._speedMethod;
+t._repeatMethod = this._repeatMethod;
+},
+_reverseEaseList: function(t) {
+if (this._easeList) {
+t._easeList = [];
+for (var e = 0; e < this._easeList.length; e++) t._easeList.push(this._easeList[e].reverse());
+}
+},
+clone: function() {
+var t = new cc.ActionInterval(this._duration);
+this._cloneDecoration(t);
+return t;
+},
+easing: function(t) {
+this._easeList ? this._easeList.length = 0 : this._easeList = [];
+for (var e = 0; e < arguments.length; e++) this._easeList.push(arguments[e]);
+return this;
+},
+_computeEaseTime: function(t) {
+var e = this._easeList;
+if (!e || 0 === e.length) return t;
+for (var i = 0, n = e.length; i < n; i++) t = e[i].easing(t);
+return t;
+},
+step: function(t) {
+if (this._firstTick) {
+this._firstTick = !1;
+this._elapsed = 0;
+} else this._elapsed += t;
+var e = this._elapsed / (this._duration > 1.192092896e-7 ? this._duration : 1.192092896e-7);
+e = 1 > e ? e : 1;
+this.update(e > 0 ? e : 0);
+if (this._repeatMethod && this._timesForRepeat > 1 && this.isDone()) {
+this._repeatForever || this._timesForRepeat--;
+this.startWithTarget(this.target);
+this.step(this._elapsed - this._duration);
+}
+},
+startWithTarget: function(t) {
+cc.Action.prototype.startWithTarget.call(this, t);
+this._elapsed = 0;
+this._firstTick = !0;
+},
+reverse: function() {
+cc.logID(1010);
+return null;
+},
+setAmplitudeRate: function(t) {
+cc.logID(1011);
+},
+getAmplitudeRate: function() {
+cc.logID(1012);
+return 0;
+},
+speed: function(t) {
+if (t <= 0) {
+cc.logID(1013);
+return this;
+}
+this._speedMethod = !0;
+this._speed *= t;
+return this;
+},
+getSpeed: function() {
+return this._speed;
+},
+setSpeed: function(t) {
+this._speed = t;
+return this;
+},
+repeat: function(t) {
+t = Math.round(t);
+if (isNaN(t) || t < 1) {
+cc.logID(1014);
+return this;
+}
+this._repeatMethod = !0;
+this._timesForRepeat *= t;
+return this;
+},
+repeatForever: function() {
+this._repeatMethod = !0;
+this._timesForRepeat = this.MAX_VALUE;
+this._repeatForever = !0;
+return this;
+}
+});
+cc.actionInterval = function(t) {
+return new cc.ActionInterval(t);
+};
+cc.Sequence = cc.Class({
+name: "cc.Sequence",
+extends: cc.ActionInterval,
+ctor: function(t) {
+this._actions = [];
+this._split = null;
+this._last = 0;
+this._reversed = !1;
+var e = t instanceof Array ? t : arguments;
+if (1 !== e.length) {
+var i = e.length - 1;
+i >= 0 && null == e[i] && cc.logID(1015);
+if (i >= 0) {
+for (var n, r = e[0], s = 1; s < i; s++) if (e[s]) {
+n = r;
+r = cc.Sequence._actionOneTwo(n, e[s]);
+}
+this.initWithTwoActions(r, e[i]);
+}
+} else cc.errorID(1019);
+},
+initWithTwoActions: function(t, e) {
+if (!t || !e) {
+cc.errorID(1025);
+return !1;
+}
+var i = t._duration, n = e._duration, r = (i *= t._repeatMethod ? t._timesForRepeat : 1) + (n *= e._repeatMethod ? e._timesForRepeat : 1);
+this.initWithDuration(r);
+this._actions[0] = t;
+this._actions[1] = e;
+return !0;
+},
+clone: function() {
+var t = new cc.Sequence();
+this._cloneDecoration(t);
+t.initWithTwoActions(this._actions[0].clone(), this._actions[1].clone());
+return t;
+},
+startWithTarget: function(t) {
+cc.ActionInterval.prototype.startWithTarget.call(this, t);
+this._split = this._actions[0]._duration / this._duration;
+this._split *= this._actions[0]._repeatMethod ? this._actions[0]._timesForRepeat : 1;
+this._last = -1;
+},
+stop: function() {
+-1 !== this._last && this._actions[this._last].stop();
+cc.Action.prototype.stop.call(this);
+},
+update: function(t) {
+var e, i, n = 0, r = this._split, s = this._actions, o = this._last;
+if ((t = this._computeEaseTime(t)) < r) {
+e = 0 !== r ? t / r : 1;
+if (0 === n && 1 === o && this._reversed) {
+s[1].update(0);
+s[1].stop();
+}
+} else {
+n = 1;
+e = 1 === r ? 1 : (t - r) / (1 - r);
+if (-1 === o) {
+s[0].startWithTarget(this.target);
+s[0].update(1);
+s[0].stop();
+}
+if (0 === o) {
+s[0].update(1);
+s[0].stop();
+}
+}
+i = s[n];
+if (o !== n || !i.isDone()) {
+o !== n && i.startWithTarget(this.target);
+e *= i._timesForRepeat;
+i.update(e > 1 ? e % 1 : e);
+this._last = n;
+}
+},
+reverse: function() {
+var t = cc.Sequence._actionOneTwo(this._actions[1].reverse(), this._actions[0].reverse());
+this._cloneDecoration(t);
+this._reverseEaseList(t);
+t._reversed = !0;
+return t;
+}
+});
+cc.sequence = function(t) {
+var e = t instanceof Array ? t : arguments;
+if (1 === e.length) {
+cc.errorID(1019);
+return null;
+}
+var i = e.length - 1;
+i >= 0 && null == e[i] && cc.logID(1015);
+var n = null;
+if (i >= 0) {
+n = e[0];
+for (var r = 1; r <= i; r++) e[r] && (n = cc.Sequence._actionOneTwo(n, e[r]));
+}
+return n;
+};
+cc.Sequence._actionOneTwo = function(t, e) {
+var i = new cc.Sequence();
+i.initWithTwoActions(t, e);
+return i;
+};
+cc.Repeat = cc.Class({
+name: "cc.Repeat",
+extends: cc.ActionInterval,
+ctor: function(t, e) {
+this._times = 0;
+this._total = 0;
+this._nextDt = 0;
+this._actionInstant = !1;
+this._innerAction = null;
+void 0 !== e && this.initWithAction(t, e);
+},
+initWithAction: function(t, e) {
+var i = t._duration * e;
+if (this.initWithDuration(i)) {
+this._times = e;
+this._innerAction = t;
+if (t instanceof cc.ActionInstant) {
+this._actionInstant = !0;
+this._times -= 1;
+}
+this._total = 0;
+return !0;
+}
+return !1;
+},
+clone: function() {
+var t = new cc.Repeat();
+this._cloneDecoration(t);
+t.initWithAction(this._innerAction.clone(), this._times);
+return t;
+},
+startWithTarget: function(t) {
+this._total = 0;
+this._nextDt = this._innerAction._duration / this._duration;
+cc.ActionInterval.prototype.startWithTarget.call(this, t);
+this._innerAction.startWithTarget(t);
+},
+stop: function() {
+this._innerAction.stop();
+cc.Action.prototype.stop.call(this);
+},
+update: function(t) {
+t = this._computeEaseTime(t);
+var e = this._innerAction, i = this._duration, n = this._times, r = this._nextDt;
+if (t >= r) {
+for (;t > r && this._total < n; ) {
+e.update(1);
+this._total++;
+e.stop();
+e.startWithTarget(this.target);
+r += e._duration / i;
+this._nextDt = r > 1 ? 1 : r;
+}
+if (t >= 1 && this._total < n) {
+e.update(1);
+this._total++;
+}
+this._actionInstant || (this._total === n ? e.stop() : e.update(t - (r - e._duration / i)));
+} else e.update(t * n % 1);
+},
+isDone: function() {
+return this._total === this._times;
+},
+reverse: function() {
+var t = new cc.Repeat(this._innerAction.reverse(), this._times);
+this._cloneDecoration(t);
+this._reverseEaseList(t);
+return t;
+},
+setInnerAction: function(t) {
+this._innerAction !== t && (this._innerAction = t);
+},
+getInnerAction: function() {
+return this._innerAction;
+}
+});
+cc.repeat = function(t, e) {
+return new cc.Repeat(t, e);
+};
+cc.RepeatForever = cc.Class({
+name: "cc.RepeatForever",
+extends: cc.ActionInterval,
+ctor: function(t) {
+this._innerAction = null;
+t && this.initWithAction(t);
+},
+initWithAction: function(t) {
+if (!t) {
+cc.errorID(1026);
+return !1;
+}
+this._innerAction = t;
+return !0;
+},
+clone: function() {
+var t = new cc.RepeatForever();
+this._cloneDecoration(t);
+t.initWithAction(this._innerAction.clone());
+return t;
+},
+startWithTarget: function(t) {
+cc.ActionInterval.prototype.startWithTarget.call(this, t);
+this._innerAction.startWithTarget(t);
+},
+step: function(t) {
+var e = this._innerAction;
+e.step(t);
+if (e.isDone()) {
+e.startWithTarget(this.target);
+e.step(e.getElapsed() - e._duration);
+}
+},
+isDone: function() {
+return !1;
+},
+reverse: function() {
+var t = new cc.RepeatForever(this._innerAction.reverse());
+this._cloneDecoration(t);
+this._reverseEaseList(t);
+return t;
+},
+setInnerAction: function(t) {
+this._innerAction !== t && (this._innerAction = t);
+},
+getInnerAction: function() {
+return this._innerAction;
+}
+});
+cc.repeatForever = function(t) {
+return new cc.RepeatForever(t);
+};
+cc.Spawn = cc.Class({
+name: "cc.Spawn",
+extends: cc.ActionInterval,
+ctor: function(t) {
+this._one = null;
+this._two = null;
+var e = t instanceof Array ? t : arguments;
+if (1 !== e.length) {
+var i = e.length - 1;
+i >= 0 && null == e[i] && cc.logID(1015);
+if (i >= 0) {
+for (var n, r = e[0], s = 1; s < i; s++) if (e[s]) {
+n = r;
+r = cc.Spawn._actionOneTwo(n, e[s]);
+}
+this.initWithTwoActions(r, e[i]);
+}
+} else cc.errorID(1020);
+},
+initWithTwoActions: function(t, e) {
+if (!t || !e) {
+cc.errorID(1027);
+return !1;
+}
+var i = !1, n = t._duration, r = e._duration;
+if (this.initWithDuration(Math.max(n, r))) {
+this._one = t;
+this._two = e;
+n > r ? this._two = cc.Sequence._actionOneTwo(e, cc.delayTime(n - r)) : n < r && (this._one = cc.Sequence._actionOneTwo(t, cc.delayTime(r - n)));
+i = !0;
+}
+return i;
+},
+clone: function() {
+var t = new cc.Spawn();
+this._cloneDecoration(t);
+t.initWithTwoActions(this._one.clone(), this._two.clone());
+return t;
+},
+startWithTarget: function(t) {
+cc.ActionInterval.prototype.startWithTarget.call(this, t);
+this._one.startWithTarget(t);
+this._two.startWithTarget(t);
+},
+stop: function() {
+this._one.stop();
+this._two.stop();
+cc.Action.prototype.stop.call(this);
+},
+update: function(t) {
+t = this._computeEaseTime(t);
+this._one && this._one.update(t);
+this._two && this._two.update(t);
+},
+reverse: function() {
+var t = cc.Spawn._actionOneTwo(this._one.reverse(), this._two.reverse());
+this._cloneDecoration(t);
+this._reverseEaseList(t);
+return t;
+}
+});
+cc.spawn = function(t) {
+var e = t instanceof Array ? t : arguments;
+if (1 === e.length) {
+cc.errorID(1020);
+return null;
+}
+e.length > 0 && null == e[e.length - 1] && cc.logID(1015);
+for (var i = e[0], n = 1; n < e.length; n++) null != e[n] && (i = cc.Spawn._actionOneTwo(i, e[n]));
+return i;
+};
+cc.Spawn._actionOneTwo = function(t, e) {
+var i = new cc.Spawn();
+i.initWithTwoActions(t, e);
+return i;
+};
+cc.RotateTo = cc.Class({
+name: "cc.RotateTo",
+extends: cc.ActionInterval,
+ctor: function(t, e) {
+this._startAngle = 0;
+this._dstAngle = 0;
+this._angle = 0;
+void 0 !== e && this.initWithDuration(t, e);
+},
+initWithDuration: function(t, e) {
+if (cc.ActionInterval.prototype.initWithDuration.call(this, t)) {
+this._dstAngle = e;
+return !0;
+}
+return !1;
+},
+clone: function() {
+var t = new cc.RotateTo();
+this._cloneDecoration(t);
+t.initWithDuration(this._duration, this._dstAngle);
+return t;
+},
+startWithTarget: function(t) {
+cc.ActionInterval.prototype.startWithTarget.call(this, t);
+var e = t.angle % 360, i = cc.macro.ROTATE_ACTION_CCW ? this._dstAngle - e : this._dstAngle + e;
+i > 180 && (i -= 360);
+i < -180 && (i += 360);
+this._startAngle = e;
+this._angle = cc.macro.ROTATE_ACTION_CCW ? i : -i;
+},
+reverse: function() {
+cc.logID(1016);
+},
+update: function(t) {
+t = this._computeEaseTime(t);
+this.target && (this.target.angle = this._startAngle + this._angle * t);
+}
+});
+cc.rotateTo = function(t, e) {
+return new cc.RotateTo(t, e);
+};
+cc.RotateBy = cc.Class({
+name: "cc.RotateBy",
+extends: cc.ActionInterval,
+ctor: function(t, e) {
+e *= cc.macro.ROTATE_ACTION_CCW ? 1 : -1;
+this._deltaAngle = 0;
+this._startAngle = 0;
+void 0 !== e && this.initWithDuration(t, e);
+},
+initWithDuration: function(t, e) {
+if (cc.ActionInterval.prototype.initWithDuration.call(this, t)) {
+this._deltaAngle = e;
+return !0;
+}
+return !1;
+},
+clone: function() {
+var t = new cc.RotateBy();
+this._cloneDecoration(t);
+t.initWithDuration(this._duration, this._deltaAngle);
+return t;
+},
+startWithTarget: function(t) {
+cc.ActionInterval.prototype.startWithTarget.call(this, t);
+this._startAngle = t.angle;
+},
+update: function(t) {
+t = this._computeEaseTime(t);
+this.target && (this.target.angle = this._startAngle + this._deltaAngle * t);
+},
+reverse: function() {
+var t = new cc.RotateBy(this._duration, -this._deltaAngle);
+this._cloneDecoration(t);
+this._reverseEaseList(t);
+return t;
+}
+});
+cc.rotateBy = function(t, e) {
+return new cc.RotateBy(t, e);
+};
+cc.MoveBy = cc.Class({
+name: "cc.MoveBy",
+extends: cc.ActionInterval,
+ctor: function(t, e, i) {
+this._positionDelta = cc.v2(0, 0);
+this._startPosition = cc.v2(0, 0);
+this._previousPosition = cc.v2(0, 0);
+void 0 !== e && cc.MoveBy.prototype.initWithDuration.call(this, t, e, i);
+},
+initWithDuration: function(t, e, i) {
+if (cc.ActionInterval.prototype.initWithDuration.call(this, t)) {
+if (void 0 !== e.x) {
+i = e.y;
+e = e.x;
+}
+this._positionDelta.x = e;
+this._positionDelta.y = i;
+return !0;
+}
+return !1;
+},
+clone: function() {
+var t = new cc.MoveBy();
+this._cloneDecoration(t);
+t.initWithDuration(this._duration, this._positionDelta);
+return t;
+},
+startWithTarget: function(t) {
+cc.ActionInterval.prototype.startWithTarget.call(this, t);
+var e = t.x, i = t.y;
+this._previousPosition.x = e;
+this._previousPosition.y = i;
+this._startPosition.x = e;
+this._startPosition.y = i;
+},
+update: function(t) {
+t = this._computeEaseTime(t);
+if (this.target) {
+var e = this._positionDelta.x * t, i = this._positionDelta.y * t, n = this._startPosition;
+if (cc.macro.ENABLE_STACKABLE_ACTIONS) {
+var r = this.target.x, s = this.target.y, o = this._previousPosition;
+n.x = n.x + r - o.x;
+n.y = n.y + s - o.y;
+e += n.x;
+i += n.y;
+o.x = e;
+o.y = i;
+this.target.setPosition(e, i);
+} else this.target.setPosition(n.x + e, n.y + i);
+}
+},
+reverse: function() {
+var t = new cc.MoveBy(this._duration, cc.v2(-this._positionDelta.x, -this._positionDelta.y));
+this._cloneDecoration(t);
+this._reverseEaseList(t);
+return t;
+}
+});
+cc.moveBy = function(t, e, i) {
+return new cc.MoveBy(t, e, i);
+};
+cc.MoveTo = cc.Class({
+name: "cc.MoveTo",
+extends: cc.MoveBy,
+ctor: function(t, e, i) {
+this._endPosition = cc.v2(0, 0);
+void 0 !== e && this.initWithDuration(t, e, i);
+},
+initWithDuration: function(t, e, i) {
+if (cc.MoveBy.prototype.initWithDuration.call(this, t, e, i)) {
+if (void 0 !== e.x) {
+i = e.y;
+e = e.x;
+}
+this._endPosition.x = e;
+this._endPosition.y = i;
+return !0;
+}
+return !1;
+},
+clone: function() {
+var t = new cc.MoveTo();
+this._cloneDecoration(t);
+t.initWithDuration(this._duration, this._endPosition);
+return t;
+},
+startWithTarget: function(t) {
+cc.MoveBy.prototype.startWithTarget.call(this, t);
+this._positionDelta.x = this._endPosition.x - t.x;
+this._positionDelta.y = this._endPosition.y - t.y;
+}
+});
+cc.moveTo = function(t, e, i) {
+return new cc.MoveTo(t, e, i);
+};
+cc.SkewTo = cc.Class({
+name: "cc.SkewTo",
+extends: cc.ActionInterval,
+ctor: function(t, e, i) {
+this._skewX = 0;
+this._skewY = 0;
+this._startSkewX = 0;
+this._startSkewY = 0;
+this._endSkewX = 0;
+this._endSkewY = 0;
+this._deltaX = 0;
+this._deltaY = 0;
+void 0 !== i && cc.SkewTo.prototype.initWithDuration.call(this, t, e, i);
+},
+initWithDuration: function(t, e, i) {
+var n = !1;
+if (cc.ActionInterval.prototype.initWithDuration.call(this, t)) {
+this._endSkewX = e;
+this._endSkewY = i;
+n = !0;
+}
+return n;
+},
+clone: function() {
+var t = new cc.SkewTo();
+this._cloneDecoration(t);
+t.initWithDuration(this._duration, this._endSkewX, this._endSkewY);
+return t;
+},
+startWithTarget: function(t) {
+cc.ActionInterval.prototype.startWithTarget.call(this, t);
+this._startSkewX = t.skewX % 180;
+this._deltaX = this._endSkewX - this._startSkewX;
+this._deltaX > 180 && (this._deltaX -= 360);
+this._deltaX < -180 && (this._deltaX += 360);
+this._startSkewY = t.skewY % 360;
+this._deltaY = this._endSkewY - this._startSkewY;
+this._deltaY > 180 && (this._deltaY -= 360);
+this._deltaY < -180 && (this._deltaY += 360);
+},
+update: function(t) {
+t = this._computeEaseTime(t);
+this.target.skewX = this._startSkewX + this._deltaX * t;
+this.target.skewY = this._startSkewY + this._deltaY * t;
+}
+});
+cc.skewTo = function(t, e, i) {
+return new cc.SkewTo(t, e, i);
+};
+cc.SkewBy = cc.Class({
+name: "cc.SkewBy",
+extends: cc.SkewTo,
+ctor: function(t, e, i) {
+void 0 !== i && this.initWithDuration(t, e, i);
+},
+initWithDuration: function(t, e, i) {
+var n = !1;
+if (cc.SkewTo.prototype.initWithDuration.call(this, t, e, i)) {
+this._skewX = e;
+this._skewY = i;
+n = !0;
+}
+return n;
+},
+clone: function() {
+var t = new cc.SkewBy();
+this._cloneDecoration(t);
+t.initWithDuration(this._duration, this._skewX, this._skewY);
+return t;
+},
+startWithTarget: function(t) {
+cc.SkewTo.prototype.startWithTarget.call(this, t);
+this._deltaX = this._skewX;
+this._deltaY = this._skewY;
+this._endSkewX = this._startSkewX + this._deltaX;
+this._endSkewY = this._startSkewY + this._deltaY;
+},
+reverse: function() {
+var t = new cc.SkewBy(this._duration, -this._skewX, -this._skewY);
+this._cloneDecoration(t);
+this._reverseEaseList(t);
+return t;
+}
+});
+cc.skewBy = function(t, e, i) {
+return new cc.SkewBy(t, e, i);
+};
+cc.JumpBy = cc.Class({
+name: "cc.JumpBy",
+extends: cc.ActionInterval,
+ctor: function(t, e, i, n, r) {
+this._startPosition = cc.v2(0, 0);
+this._previousPosition = cc.v2(0, 0);
+this._delta = cc.v2(0, 0);
+this._height = 0;
+this._jumps = 0;
+void 0 !== n && cc.JumpBy.prototype.initWithDuration.call(this, t, e, i, n, r);
+},
+initWithDuration: function(t, e, i, n, r) {
+if (cc.ActionInterval.prototype.initWithDuration.call(this, t)) {
+if (void 0 === r) {
+r = n;
+n = i;
+i = e.y;
+e = e.x;
+}
+this._delta.x = e;
+this._delta.y = i;
+this._height = n;
+this._jumps = r;
+return !0;
+}
+return !1;
+},
+clone: function() {
+var t = new cc.JumpBy();
+this._cloneDecoration(t);
+t.initWithDuration(this._duration, this._delta, this._height, this._jumps);
+return t;
+},
+startWithTarget: function(t) {
+cc.ActionInterval.prototype.startWithTarget.call(this, t);
+var e = t.x, i = t.y;
+this._previousPosition.x = e;
+this._previousPosition.y = i;
+this._startPosition.x = e;
+this._startPosition.y = i;
+},
+update: function(t) {
+t = this._computeEaseTime(t);
+if (this.target) {
+var e = t * this._jumps % 1, i = 4 * this._height * e * (1 - e);
+i += this._delta.y * t;
+var n = this._delta.x * t, r = this._startPosition;
+if (cc.macro.ENABLE_STACKABLE_ACTIONS) {
+var s = this.target.x, o = this.target.y, a = this._previousPosition;
+r.x = r.x + s - a.x;
+r.y = r.y + o - a.y;
+n += r.x;
+i += r.y;
+a.x = n;
+a.y = i;
+this.target.setPosition(n, i);
+} else this.target.setPosition(r.x + n, r.y + i);
+}
+},
+reverse: function() {
+var t = new cc.JumpBy(this._duration, cc.v2(-this._delta.x, -this._delta.y), this._height, this._jumps);
+this._cloneDecoration(t);
+this._reverseEaseList(t);
+return t;
+}
+});
+cc.jumpBy = function(t, e, i, n, r) {
+return new cc.JumpBy(t, e, i, n, r);
+};
+cc.JumpTo = cc.Class({
+name: "cc.JumpTo",
+extends: cc.JumpBy,
+ctor: function(t, e, i, n, r) {
+this._endPosition = cc.v2(0, 0);
+void 0 !== n && this.initWithDuration(t, e, i, n, r);
+},
+initWithDuration: function(t, e, i, n, r) {
+if (cc.JumpBy.prototype.initWithDuration.call(this, t, e, i, n, r)) {
+if (void 0 === r) {
+i = e.y;
+e = e.x;
+}
+this._endPosition.x = e;
+this._endPosition.y = i;
+return !0;
+}
+return !1;
+},
+startWithTarget: function(t) {
+cc.JumpBy.prototype.startWithTarget.call(this, t);
+this._delta.x = this._endPosition.x - this._startPosition.x;
+this._delta.y = this._endPosition.y - this._startPosition.y;
+},
+clone: function() {
+var t = new cc.JumpTo();
+this._cloneDecoration(t);
+t.initWithDuration(this._duration, this._endPosition, this._height, this._jumps);
+return t;
+}
+});
+cc.jumpTo = function(t, e, i, n, r) {
+return new cc.JumpTo(t, e, i, n, r);
+};
+function n(t, e, i, n, r) {
+return Math.pow(1 - r, 3) * t + 3 * r * Math.pow(1 - r, 2) * e + 3 * Math.pow(r, 2) * (1 - r) * i + Math.pow(r, 3) * n;
+}
+cc.BezierBy = cc.Class({
+name: "cc.BezierBy",
+extends: cc.ActionInterval,
+ctor: function(t, e) {
+this._config = [];
+this._startPosition = cc.v2(0, 0);
+this._previousPosition = cc.v2(0, 0);
+e && cc.BezierBy.prototype.initWithDuration.call(this, t, e);
+},
+initWithDuration: function(t, e) {
+if (cc.ActionInterval.prototype.initWithDuration.call(this, t)) {
+this._config = e;
+return !0;
+}
+return !1;
+},
+clone: function() {
+var t = new cc.BezierBy();
+this._cloneDecoration(t);
+for (var e = [], i = 0; i < this._config.length; i++) {
+var n = this._config[i];
+e.push(cc.v2(n.x, n.y));
+}
+t.initWithDuration(this._duration, e);
+return t;
+},
+startWithTarget: function(t) {
+cc.ActionInterval.prototype.startWithTarget.call(this, t);
+var e = t.x, i = t.y;
+this._previousPosition.x = e;
+this._previousPosition.y = i;
+this._startPosition.x = e;
+this._startPosition.y = i;
+},
+update: function(t) {
+t = this._computeEaseTime(t);
+if (this.target) {
+var e = this._config, i = e[0].x, r = e[1].x, s = e[2].x, o = e[0].y, a = e[1].y, c = e[2].y, l = n(0, i, r, s, t), h = n(0, o, a, c, t), u = this._startPosition;
+if (cc.macro.ENABLE_STACKABLE_ACTIONS) {
+var _ = this.target.x, f = this.target.y, d = this._previousPosition;
+u.x = u.x + _ - d.x;
+u.y = u.y + f - d.y;
+l += u.x;
+h += u.y;
+d.x = l;
+d.y = h;
+this.target.setPosition(l, h);
+} else this.target.setPosition(u.x + l, u.y + h);
+}
+},
+reverse: function() {
+var t = this._config, e = t[0].x, i = t[0].y, n = t[1].x, r = t[1].y, s = t[2].x, o = t[2].y, a = [ cc.v2(n - s, r - o), cc.v2(e - s, i - o), cc.v2(-s, -o) ], c = new cc.BezierBy(this._duration, a);
+this._cloneDecoration(c);
+this._reverseEaseList(c);
+return c;
+}
+});
+cc.bezierBy = function(t, e) {
+return new cc.BezierBy(t, e);
+};
+cc.BezierTo = cc.Class({
+name: "cc.BezierTo",
+extends: cc.BezierBy,
+ctor: function(t, e) {
+this._toConfig = [];
+e && this.initWithDuration(t, e);
+},
+initWithDuration: function(t, e) {
+if (cc.ActionInterval.prototype.initWithDuration.call(this, t)) {
+this._toConfig = e;
+return !0;
+}
+return !1;
+},
+clone: function() {
+var t = new cc.BezierTo();
+this._cloneDecoration(t);
+t.initWithDuration(this._duration, this._toConfig);
+return t;
+},
+startWithTarget: function(t) {
+cc.BezierBy.prototype.startWithTarget.call(this, t);
+var e = this._startPosition, i = this._toConfig, n = this._config;
+n[0] = i[0].sub(e);
+n[1] = i[1].sub(e);
+n[2] = i[2].sub(e);
+}
+});
+cc.bezierTo = function(t, e) {
+return new cc.BezierTo(t, e);
+};
+cc.ScaleTo = cc.Class({
+name: "cc.ScaleTo",
+extends: cc.ActionInterval,
+ctor: function(t, e, i) {
+this._scaleX = 1;
+this._scaleY = 1;
+this._startScaleX = 1;
+this._startScaleY = 1;
+this._endScaleX = 0;
+this._endScaleY = 0;
+this._deltaX = 0;
+this._deltaY = 0;
+void 0 !== e && cc.ScaleTo.prototype.initWithDuration.call(this, t, e, i);
+},
+initWithDuration: function(t, e, i) {
+if (cc.ActionInterval.prototype.initWithDuration.call(this, t)) {
+this._endScaleX = e;
+this._endScaleY = null != i ? i : e;
+return !0;
+}
+return !1;
+},
+clone: function() {
+var t = new cc.ScaleTo();
+this._cloneDecoration(t);
+t.initWithDuration(this._duration, this._endScaleX, this._endScaleY);
+return t;
+},
+startWithTarget: function(t) {
+cc.ActionInterval.prototype.startWithTarget.call(this, t);
+this._startScaleX = t.scaleX;
+this._startScaleY = t.scaleY;
+this._deltaX = this._endScaleX - this._startScaleX;
+this._deltaY = this._endScaleY - this._startScaleY;
+},
+update: function(t) {
+t = this._computeEaseTime(t);
+if (this.target) {
+this.target.scaleX = this._startScaleX + this._deltaX * t;
+this.target.scaleY = this._startScaleY + this._deltaY * t;
+}
+}
+});
+cc.scaleTo = function(t, e, i) {
+return new cc.ScaleTo(t, e, i);
+};
+cc.ScaleBy = cc.Class({
+name: "cc.ScaleBy",
+extends: cc.ScaleTo,
+startWithTarget: function(t) {
+cc.ScaleTo.prototype.startWithTarget.call(this, t);
+this._deltaX = this._startScaleX * this._endScaleX - this._startScaleX;
+this._deltaY = this._startScaleY * this._endScaleY - this._startScaleY;
+},
+reverse: function() {
+var t = new cc.ScaleBy(this._duration, 1 / this._endScaleX, 1 / this._endScaleY);
+this._cloneDecoration(t);
+this._reverseEaseList(t);
+return t;
+},
+clone: function() {
+var t = new cc.ScaleBy();
+this._cloneDecoration(t);
+t.initWithDuration(this._duration, this._endScaleX, this._endScaleY);
+return t;
+}
+});
+cc.scaleBy = function(t, e, i) {
+return new cc.ScaleBy(t, e, i);
+};
+cc.Blink = cc.Class({
+name: "cc.Blink",
+extends: cc.ActionInterval,
+ctor: function(t, e) {
+this._times = 0;
+this._originalState = !1;
+void 0 !== e && this.initWithDuration(t, e);
+},
+initWithDuration: function(t, e) {
+if (cc.ActionInterval.prototype.initWithDuration.call(this, t)) {
+this._times = e;
+return !0;
+}
+return !1;
+},
+clone: function() {
+var t = new cc.Blink();
+this._cloneDecoration(t);
+t.initWithDuration(this._duration, this._times);
+return t;
+},
+update: function(t) {
+t = this._computeEaseTime(t);
+if (this.target && !this.isDone()) {
+var e = 1 / this._times, i = t % e;
+this.target.opacity = i > e / 2 ? 255 : 0;
+}
+},
+startWithTarget: function(t) {
+cc.ActionInterval.prototype.startWithTarget.call(this, t);
+this._originalState = t.opacity;
+},
+stop: function() {
+this.target.opacity = this._originalState;
+cc.ActionInterval.prototype.stop.call(this);
+},
+reverse: function() {
+var t = new cc.Blink(this._duration, this._times);
+this._cloneDecoration(t);
+this._reverseEaseList(t);
+return t;
+}
+});
+cc.blink = function(t, e) {
+return new cc.Blink(t, e);
+};
+cc.FadeTo = cc.Class({
+name: "cc.FadeTo",
+extends: cc.ActionInterval,
+ctor: function(t, e) {
+this._toOpacity = 0;
+this._fromOpacity = 0;
+void 0 !== e && cc.FadeTo.prototype.initWithDuration.call(this, t, e);
+},
+initWithDuration: function(t, e) {
+if (cc.ActionInterval.prototype.initWithDuration.call(this, t)) {
+this._toOpacity = e;
+return !0;
+}
+return !1;
+},
+clone: function() {
+var t = new cc.FadeTo();
+this._cloneDecoration(t);
+t.initWithDuration(this._duration, this._toOpacity);
+return t;
+},
+update: function(t) {
+t = this._computeEaseTime(t);
+var e = void 0 !== this._fromOpacity ? this._fromOpacity : 255;
+this.target.opacity = e + (this._toOpacity - e) * t;
+},
+startWithTarget: function(t) {
+cc.ActionInterval.prototype.startWithTarget.call(this, t);
+this._fromOpacity = t.opacity;
+}
+});
+cc.fadeTo = function(t, e) {
+return new cc.FadeTo(t, e);
+};
+cc.FadeIn = cc.Class({
+name: "cc.FadeIn",
+extends: cc.FadeTo,
+ctor: function(t) {
+null == t && (t = 0);
+this._reverseAction = null;
+this.initWithDuration(t, 255);
+},
+reverse: function() {
+var t = new cc.FadeOut();
+t.initWithDuration(this._duration, 0);
+this._cloneDecoration(t);
+this._reverseEaseList(t);
+return t;
+},
+clone: function() {
+var t = new cc.FadeIn();
+this._cloneDecoration(t);
+t.initWithDuration(this._duration, this._toOpacity);
+return t;
+},
+startWithTarget: function(t) {
+this._reverseAction && (this._toOpacity = this._reverseAction._fromOpacity);
+cc.FadeTo.prototype.startWithTarget.call(this, t);
+}
+});
+cc.fadeIn = function(t) {
+return new cc.FadeIn(t);
+};
+cc.FadeOut = cc.Class({
+name: "cc.FadeOut",
+extends: cc.FadeTo,
+ctor: function(t) {
+null == t && (t = 0);
+this._reverseAction = null;
+this.initWithDuration(t, 0);
+},
+reverse: function() {
+var t = new cc.FadeIn();
+t._reverseAction = this;
+t.initWithDuration(this._duration, 255);
+this._cloneDecoration(t);
+this._reverseEaseList(t);
+return t;
+},
+clone: function() {
+var t = new cc.FadeOut();
+this._cloneDecoration(t);
+t.initWithDuration(this._duration, this._toOpacity);
+return t;
+}
+});
+cc.fadeOut = function(t) {
+return new cc.FadeOut(t);
+};
+cc.TintTo = cc.Class({
+name: "cc.TintTo",
+extends: cc.ActionInterval,
+ctor: function(t, e, i, n) {
+this._to = cc.color(0, 0, 0);
+this._from = cc.color(0, 0, 0);
+if (e instanceof cc.Color) {
+n = e.b;
+i = e.g;
+e = e.r;
+}
+void 0 !== n && this.initWithDuration(t, e, i, n);
+},
+initWithDuration: function(t, e, i, n) {
+if (cc.ActionInterval.prototype.initWithDuration.call(this, t)) {
+this._to = cc.color(e, i, n);
+return !0;
+}
+return !1;
+},
+clone: function() {
+var t = new cc.TintTo();
+this._cloneDecoration(t);
+var e = this._to;
+t.initWithDuration(this._duration, e.r, e.g, e.b);
+return t;
+},
+startWithTarget: function(t) {
+cc.ActionInterval.prototype.startWithTarget.call(this, t);
+this._from = this.target.color;
+},
+update: function(t) {
+t = this._computeEaseTime(t);
+var e = this._from, i = this._to;
+e && (this.target.color = cc.color(e.r + (i.r - e.r) * t, e.g + (i.g - e.g) * t, e.b + (i.b - e.b) * t));
+}
+});
+cc.tintTo = function(t, e, i, n) {
+return new cc.TintTo(t, e, i, n);
+};
+cc.TintBy = cc.Class({
+name: "cc.TintBy",
+extends: cc.ActionInterval,
+ctor: function(t, e, i, n) {
+this._deltaR = 0;
+this._deltaG = 0;
+this._deltaB = 0;
+this._fromR = 0;
+this._fromG = 0;
+this._fromB = 0;
+void 0 !== n && this.initWithDuration(t, e, i, n);
+},
+initWithDuration: function(t, e, i, n) {
+if (cc.ActionInterval.prototype.initWithDuration.call(this, t)) {
+this._deltaR = e;
+this._deltaG = i;
+this._deltaB = n;
+return !0;
+}
+return !1;
+},
+clone: function() {
+var t = new cc.TintBy();
+this._cloneDecoration(t);
+t.initWithDuration(this._duration, this._deltaR, this._deltaG, this._deltaB);
+return t;
+},
+startWithTarget: function(t) {
+cc.ActionInterval.prototype.startWithTarget.call(this, t);
+var e = t.color;
+this._fromR = e.r;
+this._fromG = e.g;
+this._fromB = e.b;
+},
+update: function(t) {
+t = this._computeEaseTime(t);
+this.target.color = cc.color(this._fromR + this._deltaR * t, this._fromG + this._deltaG * t, this._fromB + this._deltaB * t);
+},
+reverse: function() {
+var t = new cc.TintBy(this._duration, -this._deltaR, -this._deltaG, -this._deltaB);
+this._cloneDecoration(t);
+this._reverseEaseList(t);
+return t;
+}
+});
+cc.tintBy = function(t, e, i, n) {
+return new cc.TintBy(t, e, i, n);
+};
+cc.DelayTime = cc.Class({
+name: "cc.DelayTime",
+extends: cc.ActionInterval,
+update: function(t) {},
+reverse: function() {
+var t = new cc.DelayTime(this._duration);
+this._cloneDecoration(t);
+this._reverseEaseList(t);
+return t;
+},
+clone: function() {
+var t = new cc.DelayTime();
+this._cloneDecoration(t);
+t.initWithDuration(this._duration);
+return t;
+}
+});
+cc.delayTime = function(t) {
+return new cc.DelayTime(t);
+};
+cc.ReverseTime = cc.Class({
+name: "cc.ReverseTime",
+extends: cc.ActionInterval,
+ctor: function(t) {
+this._other = null;
+t && this.initWithAction(t);
+},
+initWithAction: function(t) {
+if (!t) {
+cc.errorID(1028);
+return !1;
+}
+if (t === this._other) {
+cc.errorID(1029);
+return !1;
+}
+if (cc.ActionInterval.prototype.initWithDuration.call(this, t._duration)) {
+this._other = t;
+return !0;
+}
+return !1;
+},
+clone: function() {
+var t = new cc.ReverseTime();
+this._cloneDecoration(t);
+t.initWithAction(this._other.clone());
+return t;
+},
+startWithTarget: function(t) {
+cc.ActionInterval.prototype.startWithTarget.call(this, t);
+this._other.startWithTarget(t);
+},
+update: function(t) {
+t = this._computeEaseTime(t);
+this._other && this._other.update(1 - t);
+},
+reverse: function() {
+return this._other.clone();
+},
+stop: function() {
+this._other.stop();
+cc.Action.prototype.stop.call(this);
+}
+});
+cc.reverseTime = function(t) {
+return new cc.ReverseTime(t);
+};
+cc.TargetedAction = cc.Class({
+name: "cc.TargetedAction",
+extends: cc.ActionInterval,
+ctor: function(t, e) {
+this._action = null;
+this._forcedTarget = null;
+e && this.initWithTarget(t, e);
+},
+initWithTarget: function(t, e) {
+if (this.initWithDuration(e._duration)) {
+this._forcedTarget = t;
+this._action = e;
+return !0;
+}
+return !1;
+},
+clone: function() {
+var t = new cc.TargetedAction();
+this._cloneDecoration(t);
+t.initWithTarget(this._forcedTarget, this._action.clone());
+return t;
+},
+startWithTarget: function(t) {
+cc.ActionInterval.prototype.startWithTarget.call(this, t);
+this._action.startWithTarget(this._forcedTarget);
+},
+stop: function() {
+this._action.stop();
+},
+update: function(t) {
+t = this._computeEaseTime(t);
+this._action.update(t);
+},
+getForcedTarget: function() {
+return this._forcedTarget;
+},
+setForcedTarget: function(t) {
+this._forcedTarget !== t && (this._forcedTarget = t);
+}
+});
+cc.targetedAction = function(t, e) {
+return new cc.TargetedAction(t, e);
+};
+}), {} ],
+6: [ (function(t, e, i) {
+"use strict";
+t("../core/platform/CCClass");
+var n = t("../core/platform/js"), r = function() {
+this.actions = [];
+this.target = null;
+this.actionIndex = 0;
+this.currentAction = null;
+this.paused = !1;
+this.lock = !1;
+};
+cc.ActionManager = function() {
+this._hashTargets = n.createMap(!0);
+this._arrayTargets = [];
+this._currentTarget = null;
+cc.director._scheduler && cc.director._scheduler.enableForTarget(this);
+};
+cc.ActionManager.prototype = {
+constructor: cc.ActionManager,
+_elementPool: [],
+_searchElementByTarget: function(t, e) {
+for (var i = 0; i < t.length; i++) if (e === t[i].target) return t[i];
+return null;
+},
+_getElement: function(t, e) {
+var i = this._elementPool.pop();
+i || (i = new r());
+i.target = t;
+i.paused = !!e;
+return i;
+},
+_putElement: function(t) {
+t.actions.length = 0;
+t.actionIndex = 0;
+t.currentAction = null;
+t.paused = !1;
+t.target = null;
+t.lock = !1;
+this._elementPool.push(t);
+},
+addAction: function(t, e, i) {
+if (t && e) {
+var n = this._hashTargets[e._id];
+if (n) n.actions || (n.actions = []); else {
+n = this._getElement(e, i);
+this._hashTargets[e._id] = n;
+this._arrayTargets.push(n);
+}
+n.actions.push(t);
+t.startWithTarget(e);
+} else cc.errorID(1e3);
+},
+removeAllActions: function() {
+for (var t = this._arrayTargets, e = 0; e < t.length; e++) {
+var i = t[e];
+i && this._putElement(i);
+}
+this._arrayTargets.length = 0;
+this._hashTargets = n.createMap(!0);
+},
+removeAllActionsFromTarget: function(t, e) {
+if (null != t) {
+var i = this._hashTargets[t._id];
+if (i) {
+i.actions.length = 0;
+this._deleteHashElement(i);
+}
+}
+},
+removeAction: function(t) {
+if (null != t) {
+var e = t.getOriginalTarget(), i = this._hashTargets[e._id];
+if (i) {
+for (var n = 0; n < i.actions.length; n++) if (i.actions[n] === t) {
+i.actions.splice(n, 1);
+i.actionIndex >= n && i.actionIndex--;
+break;
+}
+} else cc.logID(1001);
+}
+},
+removeActionByTag: function(t, e) {
+t === cc.Action.TAG_INVALID && cc.logID(1002);
+cc.assertID(e, 1003);
+var i = this._hashTargets[e._id];
+if (i) for (var n = i.actions.length, r = 0; r < n; ++r) {
+var s = i.actions[r];
+if (s && s.getTag() === t && s.getOriginalTarget() === e) {
+this._removeActionAtIndex(r, i);
+break;
+}
+}
+},
+getActionByTag: function(t, e) {
+t === cc.Action.TAG_INVALID && cc.logID(1004);
+var i = this._hashTargets[e._id];
+if (i) {
+if (null != i.actions) for (var n = 0; n < i.actions.length; ++n) {
+var r = i.actions[n];
+if (r && r.getTag() === t) return r;
+}
+cc.logID(1005, t);
+}
+return null;
+},
+getNumberOfRunningActionsInTarget: function(t) {
+var e = this._hashTargets[t._id];
+return e && e.actions ? e.actions.length : 0;
+},
+pauseTarget: function(t) {
+var e = this._hashTargets[t._id];
+e && (e.paused = !0);
+},
+resumeTarget: function(t) {
+var e = this._hashTargets[t._id];
+e && (e.paused = !1);
+},
+pauseAllRunningActions: function() {
+for (var t = [], e = this._arrayTargets, i = 0; i < e.length; i++) {
+var n = e[i];
+if (n && !n.paused) {
+n.paused = !0;
+t.push(n.target);
+}
+}
+return t;
+},
+resumeTargets: function(t) {
+if (t) for (var e = 0; e < t.length; e++) t[e] && this.resumeTarget(t[e]);
+},
+pauseTargets: function(t) {
+if (t) for (var e = 0; e < t.length; e++) t[e] && this.pauseTarget(t[e]);
+},
+purgeSharedManager: function() {
+cc.director.getScheduler().unscheduleUpdate(this);
+},
+_removeActionAtIndex: function(t, e) {
+e.actions[t];
+e.actions.splice(t, 1);
+e.actionIndex >= t && e.actionIndex--;
+0 === e.actions.length && this._deleteHashElement(e);
+},
+_deleteHashElement: function(t) {
+var e = !1;
+if (t && !t.lock && this._hashTargets[t.target._id]) {
+delete this._hashTargets[t.target._id];
+for (var i = this._arrayTargets, n = 0, r = i.length; n < r; n++) if (i[n] === t) {
+i.splice(n, 1);
+break;
+}
+this._putElement(t);
+e = !0;
+}
+return e;
+},
+update: function(t) {
+for (var e, i = this._arrayTargets, n = 0; n < i.length; n++) {
+this._currentTarget = i[n];
+if (!(e = this._currentTarget).paused && e.actions) {
+e.lock = !0;
+for (e.actionIndex = 0; e.actionIndex < e.actions.length; e.actionIndex++) {
+e.currentAction = e.actions[e.actionIndex];
+if (e.currentAction) {
+e.currentAction.step(t * (e.currentAction._speedMethod ? e.currentAction._speed : 1));
+if (e.currentAction && e.currentAction.isDone()) {
+e.currentAction.stop();
+var r = e.currentAction;
+e.currentAction = null;
+this.removeAction(r);
+}
+e.currentAction = null;
+}
+}
+e.lock = !1;
+}
+0 === e.actions.length && this._deleteHashElement(e) && n--;
+}
+}
+};
+0;
+}), {
+"../core/platform/CCClass": 201,
+"../core/platform/js": 221
+} ],
+7: [ (function(t, e, i) {
+"use strict";
+t("./CCActionManager");
+t("./CCAction");
+t("./CCActionInterval");
+t("./CCActionInstant");
+t("./CCActionEase");
+t("./CCActionCatmullRom");
+t("./tween");
+}), {
+"./CCAction": 1,
+"./CCActionCatmullRom": 2,
+"./CCActionEase": 3,
+"./CCActionInstant": 4,
+"./CCActionInterval": 5,
+"./CCActionManager": 6,
+"./tween": 8
+} ],
+8: [ (function(i, n, r) {
+"use strict";
+var s = cc.Class({
+name: "cc.TweenAction",
+extends: cc.ActionInterval,
+ctor: function(i, n, r) {
+this._opts = r = r || Object.create(null);
+this._props = Object.create(null);
+r.progress = r.progress || this.progress;
+if (r.easing && "string" === ("object" === (e = typeof r.easing) ? t(r.easing) : e)) {
+var s = r.easing;
+r.easing = cc.easing[s];
+!r.easing && cc.warnID(1031, s);
+}
+var o = this._opts.relative;
+for (var a in n) {
+var c = n[a], l = void 0, h = void 0;
+if (void 0 !== c.value && (c.easing || c.progress)) {
+"string" === ("object" === (e = typeof c.easing) ? t(c.easing) : e) ? !(l = cc.easing[c.easing]) && cc.warnID(1031, c.easing) : l = c.easing;
+h = c.progress;
+c = c.value;
+}
+if ("number" === ("object" === (e = typeof c) ? t(c) : e) || c.lerp && (!o || c.add || c.mul) && c.clone) {
+var u = Object.create(null);
+u.value = c;
+u.easing = l;
+u.progress = h;
+this._props[a] = u;
+} else cc.warn("Can not animate " + a + " property, because it do not have [lerp, (add|mul), clone] function.");
+}
+this._originProps = n;
+this.initWithDuration(i);
+},
+clone: function() {
+var t = new s(this._duration, this._originProps, this._opts);
+this._cloneDecoration(t);
+return t;
+},
+startWithTarget: function(i) {
+cc.ActionInterval.prototype.startWithTarget.call(this, i);
+var n = !!this._opts.relative, r = this._props;
+for (var s in r) {
+var o = i[s], a = r[s];
+if ("number" === ("object" === (e = typeof o) ? t(o) : e)) {
+a.start = o;
+a.current = o;
+a.end = n ? o + a.value : a.value;
+} else {
+a.start = o.clone();
+a.current = o.clone();
+a.end = n ? (o.add || o.mul).call(o, a.value) : a.value;
+}
+}
+},
+update: function(t) {
+var e = this._opts, i = t;
+e.easing && (i = e.easing(t));
+var n = this.target;
+if (n) {
+var r = this._props, s = this._opts.progress;
+for (var o in r) {
+var a = r[o], c = a.easing ? a.easing(t) : i, l = a.current = (a.progress || s)(a.start, a.end, a.current, c);
+n[o] = l;
+}
+}
+},
+progress: function(i, n, r, s) {
+"number" === ("object" === (e = typeof i) ? t(i) : e) ? r = i + (n - i) * s : i.lerp(n, s, r);
+return r;
+}
+}), o = cc.Class({
+name: "cc.SetAction",
+extends: cc.ActionInstant,
+ctor: function(t) {
+this._props = {};
+void 0 !== t && this.init(t);
+},
+init: function(t) {
+for (var e in t) this._props[e] = t[e];
+return !0;
+},
+update: function() {
+var t = this._props, e = this.target;
+for (var i in t) e[i] = t[i];
+},
+clone: function() {
+var t = new o();
+t.init(this._props);
+return t;
+}
+});
+function a(t) {
+this._actions = [];
+this._finalAction = null;
+this._target = t;
+}
+a.prototype.then = function(t) {
+t instanceof cc.Action ? this._actions.push(t.clone()) : this._actions.push(t._union());
+return this;
+};
+a.prototype.target = function(t) {
+this._target = t;
+return this;
+};
+a.prototype.start = function() {
+if (!this._target) {
+cc.warn("Please set target to tween first");
+return this;
+}
+this._finalAction && cc.director.getActionManager().removeAction(this._finalAction);
+this._finalAction = this._union();
+cc.director.getActionManager().addAction(this._finalAction, this._target, !1);
+return this;
+};
+a.prototype.stop = function() {
+this._finalAction && cc.director.getActionManager().removeAction(this._finalAction);
+return this;
+};
+a.prototype.clone = function(t) {
+var e = this._union();
+return cc.tween(t).then(e.clone());
+};
+a.prototype.union = function() {
+var t = this._union();
+this._actions.length = 0;
+this._actions.push(t);
+return this;
+};
+a.prototype._union = function() {
+var t = this._actions;
+return t = 1 === t.length ? t[0] : cc.sequence(t);
+};
+var c = [];
+function l(t) {
+return function() {
+c.length = 0;
+for (var e = arguments.length, i = 0; i < e; i++) {
+var n = c[i] = arguments[i];
+n instanceof a && (c[i] = n._union());
+}
+return t.apply(this, c);
+};
+}
+for (var h = {
+to: function(t, e, i) {
+(i = i || Object.create(null)).relative = !1;
+return new s(t, e, i);
+},
+by: function(t, e, i) {
+(i = i || Object.create(null)).relative = !0;
+return new s(t, e, i);
+},
+set: function(t) {
+return new o(t);
+},
+delay: cc.delayTime,
+call: cc.callFunc,
+hide: cc.hide,
+show: cc.show,
+removeSelf: cc.removeSelf,
+sequence: l(cc.sequence),
+parallel: l(cc.spawn)
+}, u = {
+repeat: cc.repeat,
+repeatForever: cc.repeatForever,
+reverseTime: cc.reverseTime
+}, _ = Object.keys(h), f = function(t) {
+var e = _[t];
+a.prototype[e] = function() {
+var t = h[e].apply(h, arguments);
+this._actions.push(t);
+return this;
+};
+}, d = 0; d < _.length; d++) f(d);
+_ = Object.keys(u);
+var m = function(t) {
+var e = _[t];
+a.prototype[e] = function() {
+var t = this._actions, i = arguments[arguments.length - 1], n = arguments.length - 1;
+if (i instanceof cc.Tween) i = i._union(); else if (!(i instanceof cc.Action)) {
+i = t[t.length - 1];
+t.length -= 1;
+n += 1;
+}
+for (var r = [ i ], s = 0; s < n; s++) r.push(arguments[s]);
+i = u[e].apply(this, r);
+t.push(i);
+return this;
+};
+};
+for (d = 0; d < _.length; d++) m(d);
+cc.tween = function(t) {
+return new a(t);
+};
+cc.Tween = a;
+}), {} ],
+9: [ (function(i, n, r) {
+"use strict";
+var s = cc.js, o = i("./playable"), a = i("./animation-curves"), c = a.EventAnimCurve, l = a.EventInfo, h = i("./types").WrapModeMask, u = i("../core/utils/binary-search").binarySearchEpsilon;
+function _(t, e) {
+o.call(this);
+this.target = t;
+this.animation = e;
+this._anims = new s.array.MutableForwardIterator([]);
+}
+s.extend(_, o);
+var f = _.prototype;
+f.playState = function(i, n) {
+if (i.clip) {
+i.curveLoaded || d(this.target, i);
+i.animator = this;
+i.play();
+"number" === ("object" === (e = typeof n) ? t(n) : e) && i.setTime(n);
+this.play();
+}
+};
+f.stopStatesExcept = function(t) {
+var e = this._anims, i = e.array;
+for (e.i = 0; e.i < i.length; ++e.i) {
+var n = i[e.i];
+n !== t && this.stopState(n);
+}
+};
+f.addAnimation = function(t) {
+-1 === this._anims.array.indexOf(t) && this._anims.push(t);
+t._setEventTarget(this.animation);
+};
+f.removeAnimation = function(t) {
+var e = this._anims.array.indexOf(t);
+if (e >= 0) {
+this._anims.fastRemoveAt(e);
+0 === this._anims.array.length && this.stop();
+} else cc.errorID(3908);
+t.animator = null;
+};
+f.sample = function() {
+var t = this._anims, e = t.array;
+for (t.i = 0; t.i < e.length; ++t.i) {
+e[t.i].sample();
+}
+};
+f.stopState = function(t) {
+t && t.stop();
+};
+f.pauseState = function(t) {
+t && t.pause();
+};
+f.resumeState = function(t) {
+t && t.resume();
+this.isPaused && this.resume();
+};
+f.setStateTime = function(t, e) {
+if (void 0 !== e) {
+if (t) {
+t.setTime(e);
+t.sample();
+}
+} else {
+e = t;
+for (var i = this._anims.array, n = 0; n < i.length; ++n) {
+var r = i[n];
+r.setTime(e);
+r.sample();
+}
+}
+};
+f.onStop = function() {
+var t = this._anims, e = t.array;
+for (t.i = 0; t.i < e.length; ++t.i) {
+e[t.i].stop();
+}
+};
+f.onPause = function() {
+for (var t = this._anims.array, e = 0; e < t.length; ++e) {
+var i = t[e];
+i.pause();
+i.animator = null;
+}
+};
+f.onResume = function() {
+for (var t = this._anims.array, e = 0; e < t.length; ++e) {
+var i = t[e];
+i.animator = this;
+i.resume();
+}
+};
+f._reloadClip = function(t) {
+d(this.target, t);
+};
+0;
+function d(t, e) {
+var i = e.clip;
+e.duration = i.duration;
+e.speed = i.speed;
+e.wrapMode = i.wrapMode;
+e.frameRate = i.sample;
+(e.wrapMode & h.Loop) === h.Loop ? e.repeatCount = Infinity : e.repeatCount = 1;
+var n = e.curves = i.createCurves(e, t), r = i.events;
+if (r) for (var s = void 0, o = 0, a = r.length; o < a; o++) {
+if (!s) {
+(s = new c()).target = t;
+n.push(s);
+}
+var _ = r[o], f = _.frame / e.duration, d = void 0, m = u(s.ratios, f);
+if (m >= 0) d = s.events[m]; else {
+d = new l();
+s.ratios.push(f);
+s.events.push(d);
+}
+d.add(_.func, _.params);
+}
+}
+0;
+n.exports = _;
+}), {
+"../core/utils/binary-search": 288,
+"./animation-curves": 11,
+"./playable": 18,
+"./types": 19
+} ],
+10: [ (function(i, n, r) {
+"use strict";
+var s = i("./types").WrapMode, o = i("./animation-curves"), a = o.DynamicAnimCurve, c = o.quickFindIndex, l = i("./motion-path-helper").sampleMotionPaths, h = i("../core/utils/binary-search").binarySearchEpsilon, u = cc.Class({
+name: "cc.AnimationClip",
+extends: cc.Asset,
+properties: {
+_duration: {
+default: 0,
+type: "Float"
+},
+duration: {
+get: function() {
+return this._duration;
+}
+},
+sample: {
+default: 60
+},
+speed: {
+default: 1
+},
+wrapMode: {
+default: s.Normal
+},
+curveData: {
+default: {},
+visible: !1
+},
+events: {
+default: [],
+visible: !1
+}
+},
+statics: {
+createWithSpriteFrames: function(t, e) {
+if (!Array.isArray(t)) {
+cc.errorID(3905);
+return null;
+}
+var i = new u();
+i.sample = e || i.sample;
+i._duration = t.length / i.sample;
+for (var n = [], r = 1 / i.sample, s = 0, o = t.length; s < o; s++) n[s] = {
+frame: s * r,
+value: t[s]
+};
+i.curveData = {
+comps: {
+"cc.Sprite": {
+spriteFrame: n
+}
+}
+};
+return i;
+}
+},
+onLoad: function() {
+this._duration = Number.parseFloat(this.duration);
+this.speed = Number.parseFloat(this.speed);
+this.wrapMode = Number.parseInt(this.wrapMode);
+this.frameRate = Number.parseFloat(this.sample);
+},
+createPropCurve: function(i, n, r) {
+var s = [], o = i instanceof cc.Node && "position" === n, u = new a();
+u.target = i;
+u.prop = n;
+for (var _ = 0, f = r.length; _ < f; _++) {
+var d = r[_], m = d.frame / this.duration;
+u.ratios.push(m);
+o && s.push(d.motionPath);
+var p = d.value;
+u.values.push(p);
+var v = d.curve;
+if (v) {
+if ("string" === ("object" === (e = typeof v) ? t(v) : e)) {
+u.types.push(v);
+continue;
+}
+if (Array.isArray(v)) {
+v[0] === v[1] && v[2] === v[3] ? u.types.push(a.Linear) : u.types.push(a.Bezier(v));
+continue;
+}
+}
+u.types.push(a.Linear);
+}
+o && l(s, u, this.duration, this.sample, i);
+for (var y = u.ratios, g = void 0, x = void 0, C = !0, b = 1, A = y.length; b < A; b++) {
+g = y[b] - y[b - 1];
+if (1 === b) x = g; else if (Math.abs(g - x) > 1e-6) {
+C = !1;
+break;
+}
+}
+u._findFrameIndex = C ? c : h;
+var S = u.values[0];
+void 0 === S || null === S || u._lerp || ("number" === ("object" === (e = typeof S) ? t(S) : e) ? u._lerp = a.prototype._lerpNumber : S instanceof cc.Quat ? u._lerp = a.prototype._lerpQuat : S instanceof cc.Vec2 || S instanceof cc.Vec3 ? u._lerp = a.prototype._lerpVector : S.lerp && (u._lerp = a.prototype._lerpObject));
+return u;
+},
+createTargetCurves: function(t, e, i) {
+var n = e.props, r = e.comps;
+if (n) for (var s in n) {
+var o = n[s], a = this.createPropCurve(t, s, o);
+i.push(a);
+}
+if (r) for (var c in r) {
+var l = t.getComponent(c);
+if (l) {
+var h = r[c];
+for (var u in h) {
+var _ = h[u], f = this.createPropCurve(l, u, _);
+i.push(f);
+}
+}
+}
+},
+createCurves: function(t, e) {
+var i = this.curveData, n = i.paths, r = [];
+this.createTargetCurves(e, i, r);
+for (var s in n) {
+var o = cc.find(s, e);
+if (o) {
+var a = n[s];
+this.createTargetCurves(o, a, r);
+}
+}
+return r;
+}
+});
+cc.AnimationClip = n.exports = u;
+}), {
+"../core/utils/binary-search": 288,
+"./animation-curves": 11,
+"./motion-path-helper": 17,
+"./types": 19
+} ],
+11: [ (function(i, n, r) {
+"use strict";
+var s = i("./bezier").bezierByTime, o = i("../core/utils/binary-search").binarySearchEpsilon, a = i("./types").WrapModeMask, c = i("./types").WrappedInfo;
+function l(i, n) {
+if ("string" === ("object" === (e = typeof n) ? t(n) : e)) {
+var r = cc.easing[n];
+r ? i = r(i) : cc.errorID(3906, n);
+} else Array.isArray(n) && (i = s(n, i));
+return i;
+}
+var h = cc.Class({
+name: "cc.AnimCurve",
+sample: function(t, e, i) {},
+onTimeChangedManually: void 0
+});
+function u(t, e) {
+var i = t.length - 1;
+if (0 === i) return 0;
+var n = t[0];
+if (e < n) return 0;
+var r = t[i];
+if (e > r) return i;
+var s = (e = (e - n) / (r - n)) / (1 / i), o = 0 | s;
+return s - o < 1e-6 ? o : o + 1 - s < 1e-6 ? o + 1 : ~(o + 1);
+}
+var _ = cc.Class({
+name: "cc.DynamicAnimCurve",
+extends: h,
+properties: {
+target: null,
+prop: "",
+values: [],
+ratios: [],
+types: []
+},
+_findFrameIndex: o,
+_lerp: void 0,
+_lerpNumber: function(t, e, i) {
+return t + (e - t) * i;
+},
+_lerpObject: function(t, e, i) {
+return t.lerp(e, i);
+},
+_lerpQuat: (function() {
+var t = cc.quat();
+return function(e, i, n) {
+return e.lerp(i, n, t);
+};
+})(),
+_lerpVector: (function() {
+var t = cc.v3();
+return function(e, i, n) {
+return e.lerp(i, n, t);
+};
+})(),
+sample: function(t, e, i) {
+var n = this.values, r = this.ratios, s = r.length;
+if (0 !== s) {
+var o, a = this._findFrameIndex(r, e);
+if (a < 0) if ((a = ~a) <= 0) o = n[0]; else if (a >= s) o = n[s - 1]; else {
+var c = n[a - 1];
+if (this._lerp) {
+var h = r[a - 1], u = r[a], _ = this.types[a - 1], f = (e - h) / (u - h);
+_ && (f = l(f, _));
+var d = n[a];
+o = this._lerp(c, d, f);
+} else o = c;
+} else o = n[a];
+this.target[this.prop] = o;
+}
+}
+});
+_.Linear = null;
+_.Bezier = function(t) {
+return t;
+};
+var f = function() {
+this.events = [];
+};
+f.prototype.add = function(t, e) {
+this.events.push({
+func: t || "",
+params: e || []
+});
+};
+var d = cc.Class({
+name: "cc.EventAnimCurve",
+extends: h,
+properties: {
+target: null,
+ratios: [],
+events: [],
+_wrappedInfo: {
+default: function() {
+return new c();
+}
+},
+_lastWrappedInfo: null,
+_ignoreIndex: NaN
+},
+_wrapIterations: function(t) {
+t - (0 | t) == 0 && (t -= 1);
+return 0 | t;
+},
+sample: function(t, e, i) {
+var n = this.ratios.length, r = i.getWrappedInfo(i.time, this._wrappedInfo), s = r.direction, l = o(this.ratios, r.ratio);
+if (l < 0) {
+l = ~l - 1;
+s < 0 && (l += 1);
+}
+this._ignoreIndex !== l && (this._ignoreIndex = NaN);
+r.frameIndex = l;
+if (this._lastWrappedInfo) {
+var h = i.wrapMode, u = this._wrapIterations(r.iterations), _ = this._lastWrappedInfo, f = this._wrapIterations(_.iterations), d = _.frameIndex, m = _.direction, p = -1 !== f && u !== f;
+if (d === l && p && 1 === n) this._fireEvent(0); else if (d !== l || p) {
+s = m;
+do {
+if (d !== l) {
+if (-1 === s && 0 === d && l > 0) {
+(h & a.PingPong) === a.PingPong ? s *= -1 : d = n;
+f++;
+} else if (1 === s && d === n - 1 && l < n - 1) {
+(h & a.PingPong) === a.PingPong ? s *= -1 : d = -1;
+f++;
+}
+if (d === l) break;
+if (f > u) break;
+}
+d += s;
+cc.director.getAnimationManager().pushDelayEvent(this, "_fireEvent", [ d ]);
+} while (d !== l && d > -1 && d < n);
+}
+this._lastWrappedInfo.set(r);
+} else {
+this._fireEvent(l);
+this._lastWrappedInfo = new c(r);
+}
+},
+_fireEvent: function(t) {
+if (!(t < 0 || t >= this.events.length || this._ignoreIndex === t)) {
+var e = this.events[t].events;
+if (this.target.isValid) for (var i = this.target._components, n = 0; n < e.length; n++) for (var r = e[n], s = r.func, o = 0; o < i.length; o++) {
+var a = i[o], c = a[s];
+c && c.apply(a, r.params);
+}
+}
+},
+onTimeChangedManually: function(t, e) {
+this._lastWrappedInfo = null;
+this._ignoreIndex = NaN;
+var i = e.getWrappedInfo(t, this._wrappedInfo), n = i.direction, r = o(this.ratios, i.ratio);
+if (r < 0) {
+r = ~r - 1;
+n < 0 && (r += 1);
+this._ignoreIndex = r;
+}
+}
+});
+0;
+n.exports = {
+AnimCurve: h,
+DynamicAnimCurve: _,
+EventAnimCurve: d,
+EventInfo: f,
+computeRatioByType: l,
+quickFindIndex: u
+};
+}), {
+"../core/utils/binary-search": 288,
+"./bezier": 14,
+"./types": 19
+} ],
+12: [ (function(t, e, i) {
+"use strict";
+var n = cc.js, r = cc.Class({
+ctor: function() {
+this._anims = new n.array.MutableForwardIterator([]);
+this._delayEvents = [];
+cc.director._scheduler && cc.director._scheduler.enableForTarget(this);
+},
+update: function(t) {
+var e = this._anims, i = e.array;
+for (e.i = 0; e.i < i.length; ++e.i) {
+var n = i[e.i];
+n._isPlaying && !n._isPaused && n.update(t);
+}
+for (var r = this._delayEvents, s = 0; s < r.length; s++) {
+var o = r[s];
+o.target[o.func].apply(o.target, o.args);
+}
+r.length = 0;
+},
+destruct: function() {},
+addAnimation: function(t) {
+-1 === this._anims.array.indexOf(t) && this._anims.push(t);
+},
+removeAnimation: function(t) {
+var e = this._anims.array.indexOf(t);
+e >= 0 ? this._anims.fastRemoveAt(e) : cc.errorID(3907);
+},
+pushDelayEvent: function(t, e, i) {
+this._delayEvents.push({
+target: t,
+func: e,
+args: i
+});
+}
+});
+cc.AnimationManager = e.exports = r;
+}), {} ],
+13: [ (function(t, e, i) {
+"use strict";
+var n = cc.js, r = t("./playable"), s = t("./types"), o = s.WrappedInfo, a = s.WrapMode, c = s.WrapModeMask;
+function l(t, e) {
+r.call(this);
+this._currentFramePlayed = !1;
+this._delay = 0;
+this._delayTime = 0;
+this._wrappedInfo = new o();
+this._lastWrappedInfo = null;
+this._process = u;
+this._clip = t;
+this._name = e || t && t.name;
+this.animator = null;
+this.curves = [];
+this.delay = 0;
+this.repeatCount = 1;
+this.duration = 1;
+this.speed = 1;
+this.wrapMode = a.Normal;
+this.time = 0;
+this._target = null;
+this._lastframeEventOn = !1;
+this.emit = function() {
+for (var t = new Array(arguments.length), e = 0, i = t.length; e < i; e++) t[e] = arguments[e];
+cc.director.getAnimationManager().pushDelayEvent(this, "_emit", t);
+};
+}
+n.extend(l, r);
+var h = l.prototype;
+h._emit = function(t, e) {
+this._target && this._target.isValid && this._target.emit(t, t, e);
+};
+h.on = function(t, e, i) {
+if (this._target && this._target.isValid) {
+"lastframe" === t && (this._lastframeEventOn = !0);
+return this._target.on(t, e, i);
+}
+return null;
+};
+h.once = function(t, e, i) {
+if (this._target && this._target.isValid) {
+"lastframe" === t && (this._lastframeEventOn = !0);
+var n = this;
+return this._target.once(t, (function(t) {
+e.call(i, t);
+n._lastframeEventOn = !1;
+}));
+}
+return null;
+};
+h.off = function(t, e, i) {
+if (this._target && this._target.isValid) {
+"lastframe" === t && (this._target.hasEventListener(t) || (this._lastframeEventOn = !1));
+this._target.off(t, e, i);
+}
+};
+h._setEventTarget = function(t) {
+this._target = t;
+};
+h.onPlay = function() {
+this.setTime(0);
+this._delayTime = this._delay;
+cc.director.getAnimationManager().addAnimation(this);
+this.animator && this.animator.addAnimation(this);
+this.emit("play", this);
+};
+h.onStop = function() {
+this.isPaused || cc.director.getAnimationManager().removeAnimation(this);
+this.animator && this.animator.removeAnimation(this);
+this.emit("stop", this);
+};
+h.onResume = function() {
+cc.director.getAnimationManager().addAnimation(this);
+this.emit("resume", this);
+};
+h.onPause = function() {
+cc.director.getAnimationManager().removeAnimation(this);
+this.emit("pause", this);
+};
+h.setTime = function(t) {
+this._currentFramePlayed = !1;
+this.time = t || 0;
+for (var e = this.curves, i = 0, n = e.length; i < n; i++) {
+var r = e[i];
+r.onTimeChangedManually && r.onTimeChangedManually(t, this);
+}
+};
+function u() {
+var t = this.sample();
+if (this._lastframeEventOn) {
+var e;
+e = this._lastWrappedInfo ? this._lastWrappedInfo : this._lastWrappedInfo = new o(t);
+this.repeatCount > 1 && (0 | t.iterations) > (0 | e.iterations) && this.emit("lastframe", this);
+e.set(t);
+}
+if (t.stopped) {
+this.stop();
+this.emit("finished", this);
+}
+}
+function _() {
+var t = this.time, e = this.duration;
+t > e ? 0 === (t %= e) && (t = e) : t < 0 && 0 !== (t %= e) && (t += e);
+for (var i = t / e, n = this.curves, r = 0, s = n.length; r < s; r++) {
+n[r].sample(t, i, this);
+}
+if (this._lastframeEventOn) {
+void 0 === this._lastIterations && (this._lastIterations = i);
+(this.time > 0 && this._lastIterations > i || this.time < 0 && this._lastIterations < i) && this.emit("lastframe", this);
+this._lastIterations = i;
+}
+}
+h.update = function(t) {
+if (this._delayTime > 0) {
+this._delayTime -= t;
+if (this._delayTime > 0) return;
+}
+this._currentFramePlayed ? this.time += t * this.speed : this._currentFramePlayed = !0;
+this._process();
+};
+h._needRevers = function(t) {
+var e = this.wrapMode, i = !1;
+if ((e & c.PingPong) === c.PingPong) {
+t - (0 | t) == 0 && t > 0 && (t -= 1);
+1 & t && (i = !i);
+}
+(e & c.Reverse) === c.Reverse && (i = !i);
+return i;
+};
+h.getWrappedInfo = function(t, e) {
+e = e || new o();
+var i = !1, n = this.duration, r = this.repeatCount, s = t > 0 ? t / n : -t / n;
+if (s >= r) {
+s = r;
+i = !0;
+var a = r - (0 | r);
+0 === a && (a = 1);
+t = a * n * (t > 0 ? 1 : -1);
+}
+if (t > n) {
+var l = t % n;
+t = 0 === l ? n : l;
+} else t < 0 && 0 !== (t %= n) && (t += n);
+var h = !1, u = this._wrapMode & c.ShouldWrap;
+u && (h = this._needRevers(s));
+var _ = h ? -1 : 1;
+this.speed < 0 && (_ *= -1);
+u && h && (t = n - t);
+e.ratio = t / n;
+e.time = t;
+e.direction = _;
+e.stopped = i;
+e.iterations = s;
+return e;
+};
+h.sample = function() {
+for (var t = this.getWrappedInfo(this.time, this._wrappedInfo), e = this.curves, i = 0, n = e.length; i < n; i++) {
+e[i].sample(t.time, t.ratio, this);
+}
+return t;
+};
+n.get(h, "clip", (function() {
+return this._clip;
+}));
+n.get(h, "name", (function() {
+return this._name;
+}));
+n.obsolete(h, "AnimationState.length", "duration");
+n.getset(h, "curveLoaded", (function() {
+return this.curves.length > 0;
+}), (function() {
+this.curves.length = 0;
+}));
+n.getset(h, "wrapMode", (function() {
+return this._wrapMode;
+}), (function(t) {
+this._wrapMode = t;
+0;
+this.time = 0;
+t & c.Loop ? this.repeatCount = Infinity : this.repeatCount = 1;
+}));
+n.getset(h, "repeatCount", (function() {
+return this._repeatCount;
+}), (function(t) {
+this._repeatCount = t;
+var e = this._wrapMode & c.ShouldWrap, i = (this.wrapMode & c.Reverse) === c.Reverse;
+this._process = Infinity !== t || e || i ? u : _;
+}));
+n.getset(h, "delay", (function() {
+return this._delay;
+}), (function(t) {
+this._delayTime = this._delay = t;
+}));
+cc.AnimationState = e.exports = l;
+}), {
+"./playable": 18,
+"./types": 19
+} ],
+14: [ (function(t, e, i) {
+"use strict";
+function n(t, e, i, n, r) {
+var s = 1 - r;
+return s * (s * (t + (3 * e - t) * r) + 3 * i * r * r) + n * r * r * r;
+}
+var r = Math.cos, s = Math.acos, o = Math.max, a = 2 * Math.PI, c = Math.sqrt;
+function l(t) {
+return t < 0 ? -Math.pow(-t, 1 / 3) : Math.pow(t, 1 / 3);
+}
+function h(t, e) {
+var i, n, h, u, _ = e - 0, f = e - t[0], d = 3 * _, m = 3 * f, p = 3 * (e - t[2]), v = 1 / (-_ + m - p + (e - 1)), y = (d - 6 * f + p) * v, g = y * (1 / 3), x = (-d + m) * v, C = 1 / 3 * (3 * x - y * y), b = C * (1 / 3), A = (2 * y * y * y - 9 * y * x + 27 * (_ * v)) / 27, S = A / 2, w = S * S + b * b * b;
+if (w < 0) {
+var T = 1 / 3 * -C, E = c(T * T * T), M = -A / (2 * E), B = s(M < -1 ? -1 : M > 1 ? 1 : M), D = 2 * l(E);
+n = D * r(B * (1 / 3)) - g;
+h = D * r((B + a) * (1 / 3)) - g;
+u = D * r((B + 2 * a) * (1 / 3)) - g;
+return 0 <= n && n <= 1 ? 0 <= h && h <= 1 ? 0 <= u && u <= 1 ? o(n, h, u) : o(n, h) : 0 <= u && u <= 1 ? o(n, u) : n : 0 <= h && h <= 1 ? 0 <= u && u <= 1 ? o(h, u) : h : u;
+}
+if (0 === w) {
+h = -(i = S < 0 ? l(-S) : -l(S)) - g;
+return 0 <= (n = 2 * i - g) && n <= 1 ? 0 <= h && h <= 1 ? o(n, h) : n : h;
+}
+var I = c(w);
+return n = (i = l(-S + I)) - l(S + I) - g;
+}
+function u(t, e) {
+var i = h(t, e), n = t[1];
+return ((1 - i) * (n + (t[3] - n) * i) * 3 + i * i) * i;
+}
+0;
+e.exports = {
+bezier: n,
+bezierByTime: u
+};
+}), {} ],
+15: [ (function(t, e, i) {
+"use strict";
+var n = {
+constant: function() {
+return 0;
+},
+linear: function(t) {
+return t;
+},
+quadIn: function(t) {
+return t * t;
+},
+quadOut: function(t) {
+return t * (2 - t);
+},
+quadInOut: function(t) {
+return (t *= 2) < 1 ? .5 * t * t : -.5 * (--t * (t - 2) - 1);
+},
+cubicIn: function(t) {
+return t * t * t;
+},
+cubicOut: function(t) {
+return --t * t * t + 1;
+},
+cubicInOut: function(t) {
+return (t *= 2) < 1 ? .5 * t * t * t : .5 * ((t -= 2) * t * t + 2);
+},
+quartIn: function(t) {
+return t * t * t * t;
+},
+quartOut: function(t) {
+return 1 - --t * t * t * t;
+},
+quartInOut: function(t) {
+return (t *= 2) < 1 ? .5 * t * t * t * t : -.5 * ((t -= 2) * t * t * t - 2);
+},
+quintIn: function(t) {
+return t * t * t * t * t;
+},
+quintOut: function(t) {
+return --t * t * t * t * t + 1;
+},
+quintInOut: function(t) {
+return (t *= 2) < 1 ? .5 * t * t * t * t * t : .5 * ((t -= 2) * t * t * t * t + 2);
+},
+sineIn: function(t) {
+return 1 - Math.cos(t * Math.PI / 2);
+},
+sineOut: function(t) {
+return Math.sin(t * Math.PI / 2);
+},
+sineInOut: function(t) {
+return .5 * (1 - Math.cos(Math.PI * t));
+},
+expoIn: function(t) {
+return 0 === t ? 0 : Math.pow(1024, t - 1);
+},
+expoOut: function(t) {
+return 1 === t ? 1 : 1 - Math.pow(2, -10 * t);
+},
+expoInOut: function(t) {
+return 0 === t ? 0 : 1 === t ? 1 : (t *= 2) < 1 ? .5 * Math.pow(1024, t - 1) : .5 * (2 - Math.pow(2, -10 * (t - 1)));
+},
+circIn: function(t) {
+return 1 - Math.sqrt(1 - t * t);
+},
+circOut: function(t) {
+return Math.sqrt(1 - --t * t);
+},
+circInOut: function(t) {
+return (t *= 2) < 1 ? -.5 * (Math.sqrt(1 - t * t) - 1) : .5 * (Math.sqrt(1 - (t -= 2) * t) + 1);
+},
+elasticIn: function(t) {
+var e, i = .1;
+if (0 === t) return 0;
+if (1 === t) return 1;
+if (!i || i < 1) {
+i = 1;
+e = .1;
+} else e = .4 * Math.asin(1 / i) / (2 * Math.PI);
+return -i * Math.pow(2, 10 * (t -= 1)) * Math.sin((t - e) * (2 * Math.PI) / .4);
+},
+elasticOut: function(t) {
+var e, i = .1;
+if (0 === t) return 0;
+if (1 === t) return 1;
+if (!i || i < 1) {
+i = 1;
+e = .1;
+} else e = .4 * Math.asin(1 / i) / (2 * Math.PI);
+return i * Math.pow(2, -10 * t) * Math.sin((t - e) * (2 * Math.PI) / .4) + 1;
+},
+elasticInOut: function(t) {
+var e, i = .1;
+if (0 === t) return 0;
+if (1 === t) return 1;
+if (!i || i < 1) {
+i = 1;
+e = .1;
+} else e = .4 * Math.asin(1 / i) / (2 * Math.PI);
+return (t *= 2) < 1 ? i * Math.pow(2, 10 * (t -= 1)) * Math.sin((t - e) * (2 * Math.PI) / .4) * -.5 : i * Math.pow(2, -10 * (t -= 1)) * Math.sin((t - e) * (2 * Math.PI) / .4) * .5 + 1;
+},
+backIn: function(t) {
+var e = 1.70158;
+return t * t * ((e + 1) * t - e);
+},
+backOut: function(t) {
+var e = 1.70158;
+return --t * t * ((e + 1) * t + e) + 1;
+},
+backInOut: function(t) {
+var e = 2.5949095;
+return (t *= 2) < 1 ? t * t * ((e + 1) * t - e) * .5 : .5 * ((t -= 2) * t * ((e + 1) * t + e) + 2);
+},
+bounceIn: function(t) {
+return 1 - n.bounceOut(1 - t);
+},
+bounceOut: function(t) {
+return t < 1 / 2.75 ? 7.5625 * t * t : t < 2 / 2.75 ? 7.5625 * (t -= 1.5 / 2.75) * t + .75 : t < 2.5 / 2.75 ? 7.5625 * (t -= 2.25 / 2.75) * t + .9375 : 7.5625 * (t -= 2.625 / 2.75) * t + .984375;
+},
+bounceInOut: function(t) {
+return t < .5 ? .5 * n.bounceIn(2 * t) : .5 * n.bounceOut(2 * t - 1) + .5;
+},
+smooth: function(t) {
+return t <= 0 ? 0 : t >= 1 ? 1 : t * t * (3 - 2 * t);
+},
+fade: function(t) {
+return t <= 0 ? 0 : t >= 1 ? 1 : t * t * t * (t * (6 * t - 15) + 10);
+}
+};
+function r(t, e) {
+return function(i) {
+return i < .5 ? e(2 * i) / 2 : t(2 * i - 1) / 2 + .5;
+};
+}
+n.quadOutIn = r(n.quadIn, n.quadOut);
+n.cubicOutIn = r(n.cubicIn, n.cubicOut);
+n.quartOutIn = r(n.quartIn, n.quartOut);
+n.quintOutIn = r(n.quintIn, n.quintOut);
+n.sineOutIn = r(n.sineIn, n.sineOut);
+n.expoOutIn = r(n.expoIn, n.expoOut);
+n.circOutIn = r(n.circIn, n.circOut);
+n.backOutIn = r(n.backIn, n.backOut);
+n.bounceIn = function(t) {
+return 1 - n.bounceOut(1 - t);
+};
+n.bounceInOut = function(t) {
+return t < .5 ? .5 * n.bounceIn(2 * t) : .5 * n.bounceOut(2 * t - 1) + .5;
+};
+n.bounceOutIn = r(n.bounceIn, n.bounceOut);
+cc.easing = e.exports = n;
+}), {} ],
+16: [ (function(t, e, i) {
+"use strict";
+t("./bezier");
+t("./easing");
+t("./types");
+t("./motion-path-helper");
+t("./animation-curves");
+t("./animation-clip");
+t("./animation-manager");
+t("./animation-state");
+t("./animation-animator");
+}), {
+"./animation-animator": 9,
+"./animation-clip": 10,
+"./animation-curves": 11,
+"./animation-manager": 12,
+"./animation-state": 13,
+"./bezier": 14,
+"./easing": 15,
+"./motion-path-helper": 17,
+"./types": 19
+} ],
+17: [ (function(t, e, i) {
+"use strict";
+var n = t("./animation-curves").DynamicAnimCurve, r = t("./animation-curves").computeRatioByType, s = t("./bezier").bezier, o = t("../core/utils/binary-search").binarySearchEpsilon, a = cc.v2;
+function c(t) {
+this.points = t || [];
+this.beziers = [];
+this.ratios = [];
+this.progresses = [];
+this.length = 0;
+this.computeBeziers();
+}
+c.prototype.computeBeziers = function() {
+this.beziers.length = 0;
+this.ratios.length = 0;
+this.progresses.length = 0;
+this.length = 0;
+for (var t, e = 1; e < this.points.length; e++) {
+var i = this.points[e - 1], n = this.points[e];
+(t = new l()).start = i.pos;
+t.startCtrlPoint = i.out;
+t.end = n.pos;
+t.endCtrlPoint = n.in;
+this.beziers.push(t);
+this.length += t.getLength();
+}
+var r = 0;
+for (e = 0; e < this.beziers.length; e++) {
+t = this.beziers[e];
+this.ratios[e] = t.getLength() / this.length;
+this.progresses[e] = r += this.ratios[e];
+}
+return this.beziers;
+};
+function l() {
+this.start = a();
+this.end = a();
+this.startCtrlPoint = a();
+this.endCtrlPoint = a();
+}
+l.prototype.getPointAt = function(t) {
+var e = this.getUtoTmapping(t);
+return this.getPoint(e);
+};
+l.prototype.getPoint = function(t) {
+var e = s(this.start.x, this.startCtrlPoint.x, this.endCtrlPoint.x, this.end.x, t), i = s(this.start.y, this.startCtrlPoint.y, this.endCtrlPoint.y, this.end.y, t);
+return new a(e, i);
+};
+l.prototype.getLength = function() {
+var t = this.getLengths();
+return t[t.length - 1];
+};
+l.prototype.getLengths = function(t) {
+t || (t = this.__arcLengthDivisions ? this.__arcLengthDivisions : 200);
+if (this.cacheArcLengths && this.cacheArcLengths.length === t + 1) return this.cacheArcLengths;
+var e, i, n = [], r = this.getPoint(0), s = a(), o = 0;
+n.push(0);
+for (i = 1; i <= t; i++) {
+e = this.getPoint(i / t);
+s.x = r.x - e.x;
+s.y = r.y - e.y;
+o += s.mag();
+n.push(o);
+r = e;
+}
+this.cacheArcLengths = n;
+return n;
+};
+l.prototype.getUtoTmapping = function(t, e) {
+var i, n = this.getLengths(), r = 0, s = n.length;
+i = e || t * n[s - 1];
+for (var o, a = 0, c = s - 1; a <= c; ) if ((o = n[r = Math.floor(a + (c - a) / 2)] - i) < 0) a = r + 1; else {
+if (!(o > 0)) {
+c = r;
+break;
+}
+c = r - 1;
+}
+if (n[r = c] === i) {
+return r / (s - 1);
+}
+var l = n[r];
+return (r + (i - l) / (n[r + 1] - l)) / (s - 1);
+};
+function h(t) {
+if (!Array.isArray(t)) return !1;
+for (var e = 0, i = t.length; e < i; e++) {
+var n = t[e];
+if (!Array.isArray(n) || 6 !== n.length) return !1;
+}
+return !0;
+}
+function u(t, e, i, s, l) {
+function u(t) {
+return t instanceof cc.Vec2 ? {
+in: t,
+pos: t,
+out: t
+} : Array.isArray(t) && 6 === t.length ? {
+in: a(t[2], t[3]),
+pos: a(t[0], t[1]),
+out: a(t[4], t[5])
+} : {
+in: cc.Vec2.ZERO,
+pos: cc.Vec2.ZERO,
+out: cc.Vec2.ZERO
+};
+}
+var _ = e.values = e.values.map((function(t) {
+Array.isArray(t) && (t = 2 === t.length ? cc.v2(t[0], t[1]) : cc.v3(t[0], t[1], t[2]));
+return t;
+}));
+if (0 !== t.length && 0 !== _.length) {
+for (var f = !1, d = 0; d < t.length; d++) {
+var m = t[d];
+if (m && !h(m)) {
+cc.errorID(3904, l ? l.name : "", "position", d);
+m = null;
+}
+if (m && m.length > 0) {
+f = !0;
+break;
+}
+}
+if (f && 1 !== _.length) {
+for (var p = e.types, v = e.ratios, y = e.values = [], g = e.types = [], x = e.ratios = [], C = 0, b = n.Linear, A = 0, S = t.length; A < S - 1; A++) {
+var w, T = t[A], E = v[A], M = v[A + 1] - E, B = _[A], D = _[A + 1], I = p[A], P = [], R = C / M, L = 1 / (M * i * s);
+if (T && T.length > 0) {
+var F = [];
+F.push(u(B));
+for (var O = 0, V = T.length; O < V; O++) {
+var N = u(T[O]);
+F.push(N);
+}
+F.push(u(D));
+var k = new c(F);
+k.computeBeziers();
+for (var z = k.progresses; 1 - R > 1e-6; ) {
+var G, U, j, W;
+if ((w = r(w = R, I)) < 0) {
+W = (0 - w) * (U = k.beziers[0]).getLength();
+j = U.start.sub(U.endCtrlPoint).normalize();
+G = U.start.add(j.mul(W));
+} else if (w > 1) {
+W = (w - 1) * (U = k.beziers[k.beziers.length - 1]).getLength();
+j = U.end.sub(U.startCtrlPoint).normalize();
+G = U.end.add(j.mul(W));
+} else {
+var H = o(z, w);
+H < 0 && (H = ~H);
+w -= H > 0 ? z[H - 1] : 0;
+w /= k.ratios[H];
+G = k.beziers[H].getPointAt(w);
+}
+P.push(G);
+R += L;
+}
+} else for (;1 - R > 1e-6; ) {
+w = r(w = R, I);
+P.push(B.lerp(D, w));
+R += L;
+}
+b = "constant" === I ? I : n.Linear;
+for (O = 0, V = P.length; O < V; O++) {
+var q = E + C + L * O * M;
+X(P[O], b, q);
+}
+C = Math.abs(R - 1) > 1e-6 ? (R - 1) * M : 0;
+}
+v[v.length - 1] !== x[x.length - 1] && X(_[_.length - 1], b, v[v.length - 1]);
+}
+}
+function X(t, e, i) {
+y.push(t);
+g.push(e);
+x.push(i);
+}
+}
+0;
+e.exports = {
+sampleMotionPaths: u,
+Curve: c,
+Bezier: l
+};
+}), {
+"../core/utils/binary-search": 288,
+"./animation-curves": 11,
+"./bezier": 14
+} ],
+18: [ (function(t, e, i) {
+"use strict";
+var n = cc.js, r = t("../core/CCDebug");
+function s() {
+this._isPlaying = !1;
+this._isPaused = !1;
+this._stepOnce = !1;
+}
+var o = s.prototype;
+n.get(o, "isPlaying", (function() {
+return this._isPlaying;
+}), !0);
+n.get(o, "isPaused", (function() {
+return this._isPaused;
+}), !0);
+var a = function() {};
+o.onPlay = a;
+o.onPause = a;
+o.onResume = a;
+o.onStop = a;
+o.onError = a;
+o.play = function() {
+if (this._isPlaying) if (this._isPaused) {
+this._isPaused = !1;
+this.onResume();
+} else this.onError(r.getError(3912)); else {
+this._isPlaying = !0;
+this.onPlay();
+}
+};
+o.stop = function() {
+if (this._isPlaying) {
+this._isPlaying = !1;
+this.onStop();
+this._isPaused = !1;
+}
+};
+o.pause = function() {
+if (this._isPlaying && !this._isPaused) {
+this._isPaused = !0;
+this.onPause();
+}
+};
+o.resume = function() {
+if (this._isPlaying && this._isPaused) {
+this._isPaused = !1;
+this.onResume();
+}
+};
+o.step = function() {
+this.pause();
+this._stepOnce = !0;
+this._isPlaying || this.play();
+};
+e.exports = s;
+}), {
+"../core/CCDebug": 49
+} ],
+19: [ (function(t, e, i) {
+"use strict";
+var n = {
+Loop: 2,
+ShouldWrap: 4,
+PingPong: 22,
+Reverse: 36
+}, r = cc.Enum({
+Default: 0,
+Normal: 1,
+Reverse: n.Reverse,
+Loop: n.Loop,
+LoopReverse: n.Loop | n.Reverse,
+PingPong: n.PingPong,
+PingPongReverse: n.PingPong | n.Reverse
+});
+cc.WrapMode = r;
+function s(t) {
+if (t) this.set(t); else {
+this.ratio = 0;
+this.time = 0;
+this.direction = 1;
+this.stopped = !0;
+this.iterations = 0;
+this.frameIndex = void 0;
+}
+}
+s.prototype.set = function(t) {
+this.ratio = t.ratio;
+this.time = t.time;
+this.direction = t.direction;
+this.stopped = t.stopped;
+this.iterations = t.iterations;
+this.frameIndex = t.frameIndex;
+};
+e.exports = {
+WrapModeMask: n,
+WrapMode: r,
+WrappedInfo: s
+};
+}), {} ],
+20: [ (function(t, e, i) {
+"use strict";
+var n = t("../core/event/event-target"), r = t("../core/platform/CCSys"), s = t("../core/assets/CCAudioClip").LoadMode, o = !1, a = [], c = function t(e) {
+n.call(this);
+this._src = e;
+this._element = null;
+this.id = 0;
+this._volume = 1;
+this._loop = !1;
+this._nextTime = 0;
+this._state = t.State.INITIALZING;
+this._onended = function() {
+this._state = t.State.STOPPED;
+this.emit("ended");
+}.bind(this);
+};
+cc.js.extend(c, n);
+c.State = {
+ERROR: -1,
+INITIALZING: 0,
+PLAYING: 1,
+PAUSED: 2,
+STOPPED: 3
+};
+(function(t) {
+t._bindEnded = function(t) {
+t = t || this._onended;
+var e = this._element;
+this._src && e instanceof HTMLAudioElement ? e.addEventListener("ended", t) : e.onended = t;
+};
+t._unbindEnded = function() {
+var t = this._element;
+t instanceof HTMLAudioElement ? t.removeEventListener("ended", this._onended) : t && (t.onended = null);
+};
+t._onLoaded = function() {
+var t = this._src._nativeAsset;
+if (t instanceof HTMLAudioElement) {
+this._element || (this._element = document.createElement("audio"));
+this._element.src = t.src;
+} else this._element = new h(t, this);
+this.setVolume(this._volume);
+this.setLoop(this._loop);
+0 !== this._nextTime && this.setCurrentTime(this._nextTime);
+this.getState() === c.State.PLAYING ? this.play() : this._state = c.State.INITIALZING;
+};
+t.play = function() {
+this._state = c.State.PLAYING;
+if (this._element) {
+this._bindEnded();
+this._element.play();
+this._src && this._src.loadMode === s.DOM_AUDIO && this._element.paused && a.push({
+instance: this,
+offset: 0,
+audio: this._element
+});
+if (!o) {
+o = !0;
+var t = "ontouchend" in window ? "touchend" : "mousedown";
+cc.game.canvas.addEventListener(t, (function() {
+for (var t = void 0; t = a.pop(); ) t.audio.play(t.offset);
+}));
+}
+}
+};
+t.destroy = function() {
+0;
+this._element = null;
+};
+t.pause = function() {
+if (this._element && this.getState() === c.State.PLAYING) {
+this._unbindEnded();
+this._element.pause();
+this._state = c.State.PAUSED;
+}
+};
+t.resume = function() {
+if (this._element && this.getState() === c.State.PAUSED) {
+this._bindEnded();
+this._element.play();
+this._state = c.State.PLAYING;
+}
+};
+t.stop = function() {
+if (this._element) {
+this._element.pause();
+try {
+this._element.currentTime = 0;
+} catch (t) {}
+for (var t = 0; t < a.length; t++) if (a[t].instance === this) {
+a.splice(t, 1);
+break;
+}
+this._unbindEnded();
+this.emit("stop");
+this._state = c.State.STOPPED;
+}
+};
+t.setLoop = function(t) {
+this._loop = t;
+this._element && (this._element.loop = t);
+};
+t.getLoop = function() {
+return this._loop;
+};
+t.setVolume = function(t) {
+this._volume = t;
+this._element && (this._element.volume = t);
+};
+t.getVolume = function() {
+return this._volume;
+};
+t.setCurrentTime = function(t) {
+if (this._element) {
+this._nextTime = 0;
+this._unbindEnded();
+this._bindEnded(function() {
+this._bindEnded();
+}.bind(this));
+try {
+this._element.currentTime = t;
+} catch (i) {
+var e = this._element;
+if (e.addEventListener) {
+e.addEventListener("loadedmetadata", (function i() {
+e.removeEventListener("loadedmetadata", i);
+e.currentTime = t;
+}));
+}
+}
+} else this._nextTime = t;
+};
+t.getCurrentTime = function() {
+return this._element ? this._element.currentTime : 0;
+};
+t.getDuration = function() {
+return this._element ? this._element.duration : 0;
+};
+t.getState = function() {
+var t = this._element;
+t && (c.State.PLAYING === this._state && t.paused ? this._state = c.State.STOPPED : c.State.STOPPED !== this._state || t.paused || (this._state = c.State.PLAYING));
+return this._state;
+};
+Object.defineProperty(t, "src", {
+get: function() {
+return this._src;
+},
+set: function(t) {
+this._unbindEnded();
+if (t) {
+this._src = t;
+if (t.loaded) this._onLoaded(); else {
+var e = this;
+t.once("load", (function() {
+t === e._src && e._onLoaded();
+}));
+cc.loader.load({
+url: t.nativeUrl,
+skips: [ "Loader" ]
+}, (function(e, i) {
+e ? cc.error(e) : t.loaded || (t._nativeAsset = i);
+}));
+}
+} else {
+this._src = null;
+this._element instanceof HTMLAudioElement ? this._element.src = "" : this._element = null;
+this._state = c.State.INITIALZING;
+}
+return t;
+},
+enumerable: !0,
+configurable: !0
+});
+Object.defineProperty(t, "paused", {
+get: function() {
+return !this._element || this._element.paused;
+},
+enumerable: !0,
+configurable: !0
+});
+})(c.prototype);
+var l = void 0;
+l = cc.sys.browserType === cc.sys.BROWSER_TYPE_EDGE || cc.sys.browserType === cc.sys.BROWSER_TYPE_BAIDU || cc.sys.browserType === cc.sys.BROWSER_TYPE_UC ? .01 : 0;
+var h = function(t, e) {
+this._audio = e;
+this._context = r.__audioSupport.context;
+this._buffer = t;
+this._gainObj = this._context.createGain();
+this.volume = 1;
+this._gainObj.connect(this._context.destination);
+this._loop = !1;
+this._startTime = -1;
+this._currentSource = null;
+this.playedLength = 0;
+this._currentTimer = null;
+this._endCallback = function() {
+this.onended && this.onended(this);
+}.bind(this);
+};
+(function(t) {
+t.play = function(t) {
+if (this._currentSource && !this.paused) {
+this._currentSource.onended = null;
+this._currentSource.stop(0);
+this.playedLength = 0;
+}
+var e = this._context.createBufferSource();
+e.buffer = this._buffer;
+e.connect(this._gainObj);
+e.loop = this._loop;
+this._startTime = this._context.currentTime;
+(t = t || this.playedLength) && (this._startTime -= t);
+var i = this._buffer.duration, n = t, r = void 0;
+if (this._loop) e.start ? e.start(0, n) : e.notoGrainOn ? e.noteGrainOn(0, n) : e.noteOn(0, n); else {
+r = i - t;
+e.start ? e.start(0, n, r) : e.noteGrainOn ? e.noteGrainOn(0, n, r) : e.noteOn(0, n, r);
+}
+this._currentSource = e;
+e.onended = this._endCallback;
+if ((!e.context.state || "suspended" === e.context.state) && 0 === this._context.currentTime) {
+var s = this;
+clearTimeout(this._currentTimer);
+this._currentTimer = setTimeout((function() {
+0 === s._context.currentTime && a.push({
+instance: s._audio,
+offset: t,
+audio: s
+});
+}), 10);
+}
+};
+t.pause = function() {
+clearTimeout(this._currentTimer);
+if (!this.paused) {
+this.playedLength = this._context.currentTime - this._startTime;
+this.playedLength %= this._buffer.duration;
+var t = this._currentSource;
+this._currentSource = null;
+this._startTime = -1;
+t && t.stop(0);
+}
+};
+Object.defineProperty(t, "paused", {
+get: function() {
+return (!this._currentSource || !this._currentSource.loop) && (-1 === this._startTime || this._context.currentTime - this._startTime > this._buffer.duration);
+},
+enumerable: !0,
+configurable: !0
+});
+Object.defineProperty(t, "loop", {
+get: function() {
+return this._loop;
+},
+set: function(t) {
+this._currentSource && (this._currentSource.loop = t);
+return this._loop = t;
+},
+enumerable: !0,
+configurable: !0
+});
+Object.defineProperty(t, "volume", {
+get: function() {
+return this._volume;
+},
+set: function(t) {
+this._volume = t;
+if (this._gainObj.gain.setTargetAtTime) try {
+this._gainObj.gain.setTargetAtTime(t, this._context.currentTime, l);
+} catch (e) {
+this._gainObj.gain.setTargetAtTime(t, this._context.currentTime, .01);
+} else this._gainObj.gain.value = t;
+if (r.os === r.OS_IOS && !this.paused && this._currentSource) {
+this._currentSource.onended = null;
+this.pause();
+this.play();
+}
+},
+enumerable: !0,
+configurable: !0
+});
+Object.defineProperty(t, "currentTime", {
+get: function() {
+if (this.paused) return this.playedLength;
+this.playedLength = this._context.currentTime - this._startTime;
+this.playedLength %= this._buffer.duration;
+return this.playedLength;
+},
+set: function(t) {
+if (this.paused) this.playedLength = t; else {
+this.pause();
+this.playedLength = t;
+this.play();
+}
+return t;
+},
+enumerable: !0,
+configurable: !0
+});
+Object.defineProperty(t, "duration", {
+get: function() {
+return this._buffer.duration;
+},
+enumerable: !0,
+configurable: !0
+});
+})(h.prototype);
+e.exports = cc.Audio = c;
+}), {
+"../core/assets/CCAudioClip": 57,
+"../core/event/event-target": 133,
+"../core/platform/CCSys": 210
+} ],
+21: [ (function(i, n, r) {
+"use strict";
+var s = i("./CCAudio"), o = i("../core/assets/CCAudioClip"), a = cc.js, c = 0, l = a.createMap(!0), h = {}, u = [], _ = function(t) {
+t._finishCallback = null;
+t.off("ended");
+t.off("stop");
+t.src = null;
+u.includes(t) || (u.length < 32 ? u.push(t) : t.destroy());
+}, f = function(t) {
+var e = c++, i = h[t];
+i || (i = h[t] = []);
+if (p._maxAudioInstance <= i.length) {
+var n = i.shift();
+d(n).stop();
+}
+var r = u.pop() || new s(), o = function() {
+if (d(this.id)) {
+delete l[this.id];
+var t = i.indexOf(this.id);
+cc.js.array.fastRemoveAt(i, t);
+}
+_(this);
+};
+r.on("ended", (function() {
+this._finishCallback && this._finishCallback();
+o.call(this);
+}), r);
+r.on("stop", o, r);
+r.id = e;
+l[e] = r;
+i.push(e);
+return r;
+}, d = function(t) {
+return l[t];
+}, m = function(i) {
+void 0 === i ? i = 1 : "string" === ("object" === (e = typeof i) ? t(i) : e) && (i = Number.parseFloat(i));
+return i;
+}, p = {
+AudioState: s.State,
+_maxWebAudioSize: 2097152,
+_maxAudioInstance: 24,
+_id2audio: l,
+play: function(i, n, r) {
+var s, a = i;
+if ("string" === ("object" === (e = typeof i) ? t(i) : e)) {
+cc.warnID(8401, "cc.audioEngine", "cc.AudioClip", "AudioClip", "cc.AudioClip", "audio");
+s = f(a = i);
+o._loadByUrl(a, (function(t, e) {
+e && (s.src = e);
+}));
+} else {
+if (!i) return;
+a = i.nativeUrl;
+(s = f(a)).src = i;
+}
+s.setLoop(n || !1);
+r = m(r);
+s.setVolume(r);
+s.play();
+return s.id;
+},
+setLoop: function(t, e) {
+var i = d(t);
+i && i.setLoop && i.setLoop(e);
+},
+isLoop: function(t) {
+var e = d(t);
+return !(!e || !e.getLoop) && e.getLoop();
+},
+setVolume: function(t, e) {
+var i = d(t);
+i && i.setVolume(e);
+},
+getVolume: function(t) {
+var e = d(t);
+return e ? e.getVolume() : 1;
+},
+setCurrentTime: function(t, e) {
+var i = d(t);
+if (i) {
+i.setCurrentTime(e);
+return !0;
+}
+return !1;
+},
+getCurrentTime: function(t) {
+var e = d(t);
+return e ? e.getCurrentTime() : 0;
+},
+getDuration: function(t) {
+var e = d(t);
+return e ? e.getDuration() : 0;
+},
+getState: function(t) {
+var e = d(t);
+return e ? e.getState() : this.AudioState.ERROR;
+},
+setFinishCallback: function(t, e) {
+var i = d(t);
+i && (i._finishCallback = e);
+},
+pause: function(t) {
+var e = d(t);
+if (e) {
+e.pause();
+return !0;
+}
+return !1;
+},
+_pauseIDCache: [],
+pauseAll: function() {
+for (var t in l) {
+var e = l[t];
+if (e.getState() === s.State.PLAYING) {
+this._pauseIDCache.push(t);
+e.pause();
+}
+}
+},
+resume: function(t) {
+var e = d(t);
+e && e.resume();
+},
+resumeAll: function() {
+for (var t = 0; t < this._pauseIDCache.length; ++t) {
+var e = this._pauseIDCache[t], i = d(e);
+i && i.resume();
+}
+this._pauseIDCache.length = 0;
+},
+stop: function(t) {
+var e = d(t);
+if (e) {
+e.stop();
+return !0;
+}
+return !1;
+},
+stopAll: function() {
+for (var t in l) {
+var e = l[t];
+e && e.stop();
+}
+},
+setMaxAudioInstance: function(t) {
+this._maxAudioInstance = t;
+},
+getMaxAudioInstance: function() {
+return this._maxAudioInstance;
+},
+uncache: function(i) {
+var n = i;
+if ("string" === ("object" === (e = typeof i) ? t(i) : e)) {
+cc.warnID(8401, "cc.audioEngine", "cc.AudioClip", "AudioClip", "cc.AudioClip", "audio");
+n = i;
+} else {
+if (!i) return;
+n = i.nativeUrl;
+}
+var r = h[n];
+if (r) for (;r.length > 0; ) {
+var s = r.pop(), o = l[s];
+if (o) {
+o.stop();
+delete l[s];
+}
+}
+},
+uncacheAll: function() {
+this.stopAll();
+var t = void 0;
+for (var e in l) (t = l[e]) && t.destroy();
+for (;t = u.pop(); ) t.destroy();
+l = a.createMap(!0);
+h = {};
+},
+getProfile: function(t) {},
+preload: function(t, e) {
+0;
+cc.loader.load(t, e && function(t) {
+t || e();
+});
+},
+setMaxWebAudioSize: function(t) {
+this._maxWebAudioSize = 1024 * t;
+},
+_breakCache: null,
+_break: function() {
+this._breakCache = [];
+for (var t in l) {
+var e = l[t];
+if (e.getState() === s.State.PLAYING) {
+this._breakCache.push(t);
+e.pause();
+}
+}
+},
+_restore: function() {
+if (this._breakCache) {
+for (;this._breakCache.length > 0; ) {
+var t = this._breakCache.pop(), e = d(t);
+e && e.resume && e.resume();
+}
+this._breakCache = null;
+}
+},
+_music: {
+id: -1,
+loop: !1,
+volume: 1
+},
+_effect: {
+volume: 1,
+pauseCache: []
+},
+playMusic: function(t, e) {
+var i = this._music;
+this.stop(i.id);
+i.id = this.play(t, e, i.volume);
+i.loop = e;
+return i.id;
+},
+stopMusic: function() {
+this.stop(this._music.id);
+},
+pauseMusic: function() {
+this.pause(this._music.id);
+return this._music.id;
+},
+resumeMusic: function() {
+this.resume(this._music.id);
+return this._music.id;
+},
+getMusicVolume: function() {
+return this._music.volume;
+},
+setMusicVolume: function(t) {
+t = m(t);
+var e = this._music;
+e.volume = t;
+this.setVolume(e.id, e.volume);
+return e.volume;
+},
+isMusicPlaying: function() {
+return this.getState(this._music.id) === this.AudioState.PLAYING;
+},
+playEffect: function(t, e) {
+return this.play(t, e || !1, this._effect.volume);
+},
+setEffectsVolume: function(t) {
+t = m(t);
+var e = this._music.id;
+this._effect.volume = t;
+for (var i in l) {
+var n = l[i];
+n && n.id !== e && p.setVolume(i, t);
+}
+},
+getEffectsVolume: function() {
+return this._effect.volume;
+},
+pauseEffect: function(t) {
+return this.pause(t);
+},
+pauseAllEffects: function() {
+var t = this._music.id, e = this._effect;
+e.pauseCache.length = 0;
+for (var i in l) {
+var n = l[i];
+if (n && n.id !== t) {
+if (n.getState() === this.AudioState.PLAYING) {
+e.pauseCache.push(i);
+n.pause();
+}
+}
+}
+},
+resumeEffect: function(t) {
+this.resume(t);
+},
+resumeAllEffects: function() {
+for (var t = this._effect.pauseCache, e = 0; e < t.length; ++e) {
+var i = t[e], n = l[i];
+n && n.resume();
+}
+},
+stopEffect: function(t) {
+return this.stop(t);
+},
+stopAllEffects: function() {
+var t = this._music.id;
+for (var e in l) {
+var i = l[e];
+if (i && i.id !== t) {
+i.getState() === p.AudioState.PLAYING && i.stop();
+}
+}
+}
+};
+n.exports = cc.audioEngine = p;
+}), {
+"../core/assets/CCAudioClip": 57,
+"./CCAudio": 20
+} ],
+22: [ (function(t, e, i) {
+"use strict";
+var n = {
+name: "Jacob__Codec"
+};
+n.Base64 = t("./base64");
+n.GZip = t("./gzip");
+n.unzip = function() {
+return n.GZip.gunzip.apply(n.GZip, arguments);
+};
+n.unzipBase64 = function() {
+var t = n.Base64.decode.apply(n.Base64, arguments);
+try {
+return n.GZip.gunzip.call(n.GZip, t);
+} catch (e) {
+return t.slice(7);
+}
+};
+n.unzipBase64AsArray = function(t, e) {
+e = e || 1;
+var i, n, r, s = this.unzipBase64(t), o = [];
+for (i = 0, r = s.length / e; i < r; i++) {
+o[i] = 0;
+for (n = e - 1; n >= 0; --n) o[i] += s.charCodeAt(i * e + n) << 8 * n;
+}
+return o;
+};
+n.unzipAsArray = function(t, e) {
+e = e || 1;
+var i, n, r, s = this.unzip(t), o = [];
+for (i = 0, r = s.length / e; i < r; i++) {
+o[i] = 0;
+for (n = e - 1; n >= 0; --n) o[i] += s.charCodeAt(i * e + n) << 8 * n;
+}
+return o;
+};
+cc.codec = e.exports = n;
+}), {
+"./base64": 23,
+"./gzip": 24
+} ],
+23: [ (function(t, e, i) {
+"use strict";
+var n = t("../core/utils/misc").BASE64_VALUES, r = {
+name: "Jacob__Codec__Base64",
+decode: function(t) {
+var e, i, r, s, o, a, c, l = [], h = 0;
+t = t.replace(/[^A-Za-z0-9\+\/\=]/g, "");
+for (;h < t.length; ) {
+s = n[t.charCodeAt(h++)];
+o = n[t.charCodeAt(h++)];
+a = n[t.charCodeAt(h++)];
+c = n[t.charCodeAt(h++)];
+e = s << 2 | o >> 4;
+i = (15 & o) << 4 | a >> 2;
+r = (3 & a) << 6 | c;
+l.push(String.fromCharCode(e));
+64 !== a && l.push(String.fromCharCode(i));
+64 !== c && l.push(String.fromCharCode(r));
+}
+return l = l.join("");
+},
+decodeAsArray: function(t, e) {
+var i, n, r, s = this.decode(t), o = [];
+for (i = 0, r = s.length / e; i < r; i++) {
+o[i] = 0;
+for (n = e - 1; n >= 0; --n) o[i] += s.charCodeAt(i * e + n) << 8 * n;
+}
+return o;
+}
+};
+e.exports = r;
+}), {
+"../core/utils/misc": 297
+} ],
+24: [ (function(t, e, i) {
+"use strict";
+var n = function(t) {
+this.data = t;
+this.debug = !1;
+this.gpflags = void 0;
+this.files = 0;
+this.unzipped = [];
+this.buf32k = new Array(32768);
+this.bIdx = 0;
+this.modeZIP = !1;
+this.bytepos = 0;
+this.bb = 1;
+this.bits = 0;
+this.nameBuf = [];
+this.fileout = void 0;
+this.literalTree = new Array(n.LITERALS);
+this.distanceTree = new Array(32);
+this.treepos = 0;
+this.Places = null;
+this.len = 0;
+this.fpos = new Array(17);
+this.fpos[0] = 0;
+this.flens = void 0;
+this.fmax = void 0;
+};
+n.gunzip = function(t) {
+t.constructor === Array || (t.constructor, String);
+return new n(t).gunzip()[0][0];
+};
+n.HufNode = function() {
+this.b0 = 0;
+this.b1 = 0;
+this.jump = null;
+this.jumppos = -1;
+};
+n.LITERALS = 288;
+n.NAMEMAX = 256;
+n.bitReverse = [ 0, 128, 64, 192, 32, 160, 96, 224, 16, 144, 80, 208, 48, 176, 112, 240, 8, 136, 72, 200, 40, 168, 104, 232, 24, 152, 88, 216, 56, 184, 120, 248, 4, 132, 68, 196, 36, 164, 100, 228, 20, 148, 84, 212, 52, 180, 116, 244, 12, 140, 76, 204, 44, 172, 108, 236, 28, 156, 92, 220, 60, 188, 124, 252, 2, 130, 66, 194, 34, 162, 98, 226, 18, 146, 82, 210, 50, 178, 114, 242, 10, 138, 74, 202, 42, 170, 106, 234, 26, 154, 90, 218, 58, 186, 122, 250, 6, 134, 70, 198, 38, 166, 102, 230, 22, 150, 86, 214, 54, 182, 118, 246, 14, 142, 78, 206, 46, 174, 110, 238, 30, 158, 94, 222, 62, 190, 126, 254, 1, 129, 65, 193, 33, 161, 97, 225, 17, 145, 81, 209, 49, 177, 113, 241, 9, 137, 73, 201, 41, 169, 105, 233, 25, 153, 89, 217, 57, 185, 121, 249, 5, 133, 69, 197, 37, 165, 101, 229, 21, 149, 85, 213, 53, 181, 117, 245, 13, 141, 77, 205, 45, 173, 109, 237, 29, 157, 93, 221, 61, 189, 125, 253, 3, 131, 67, 195, 35, 163, 99, 227, 19, 147, 83, 211, 51, 179, 115, 243, 11, 139, 75, 203, 43, 171, 107, 235, 27, 155, 91, 219, 59, 187, 123, 251, 7, 135, 71, 199, 39, 167, 103, 231, 23, 151, 87, 215, 55, 183, 119, 247, 15, 143, 79, 207, 47, 175, 111, 239, 31, 159, 95, 223, 63, 191, 127, 255 ];
+n.cplens = [ 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 23, 27, 31, 35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258, 0, 0 ];
+n.cplext = [ 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0, 99, 99 ];
+n.cpdist = [ 1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193, 257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145, 8193, 12289, 16385, 24577 ];
+n.cpdext = [ 0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13 ];
+n.border = [ 16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15 ];
+n.prototype.gunzip = function() {
+this.outputArr = [];
+this.nextFile();
+return this.unzipped;
+};
+n.prototype.readByte = function() {
+this.bits += 8;
+return this.bytepos < this.data.length ? this.data.charCodeAt(this.bytepos++) : -1;
+};
+n.prototype.byteAlign = function() {
+this.bb = 1;
+};
+n.prototype.readBit = function() {
+var t;
+this.bits++;
+t = 1 & this.bb;
+this.bb >>= 1;
+if (0 === this.bb) {
+this.bb = this.readByte();
+t = 1 & this.bb;
+this.bb = this.bb >> 1 | 128;
+}
+return t;
+};
+n.prototype.readBits = function(t) {
+for (var e = 0, i = t; i--; ) e = e << 1 | this.readBit();
+t && (e = n.bitReverse[e] >> 8 - t);
+return e;
+};
+n.prototype.flushBuffer = function() {
+this.bIdx = 0;
+};
+n.prototype.addBuffer = function(t) {
+this.buf32k[this.bIdx++] = t;
+this.outputArr.push(String.fromCharCode(t));
+32768 === this.bIdx && (this.bIdx = 0);
+};
+n.prototype.IsPat = function() {
+for (;;) {
+if (this.fpos[this.len] >= this.fmax) return -1;
+if (this.flens[this.fpos[this.len]] === this.len) return this.fpos[this.len]++;
+this.fpos[this.len]++;
+}
+};
+n.prototype.Rec = function() {
+var t, e = this.Places[this.treepos];
+if (17 === this.len) return -1;
+this.treepos++;
+this.len++;
+if ((t = this.IsPat()) >= 0) e.b0 = t; else {
+e.b0 = 32768;
+if (this.Rec()) return -1;
+}
+if ((t = this.IsPat()) >= 0) {
+e.b1 = t;
+e.jump = null;
+} else {
+e.b1 = 32768;
+e.jump = this.Places[this.treepos];
+e.jumppos = this.treepos;
+if (this.Rec()) return -1;
+}
+this.len--;
+return 0;
+};
+n.prototype.CreateTree = function(t, e, i, n) {
+var r;
+this.Places = t;
+this.treepos = 0;
+this.flens = i;
+this.fmax = e;
+for (r = 0; r < 17; r++) this.fpos[r] = 0;
+this.len = 0;
+return this.Rec() ? -1 : 0;
+};
+n.prototype.DecodeValue = function(t) {
+for (var e, i, n = 0, r = t[n]; ;) if (this.readBit()) {
+if (!(32768 & r.b1)) return r.b1;
+r = r.jump;
+e = t.length;
+for (i = 0; i < e; i++) if (t[i] === r) {
+n = i;
+break;
+}
+} else {
+if (!(32768 & r.b0)) return r.b0;
+r = t[++n];
+}
+return -1;
+};
+n.prototype.DeflateLoop = function() {
+var t, e, i;
+do {
+t = this.readBit();
+if (0 === (e = this.readBits(2))) {
+var r, s;
+this.byteAlign();
+r = this.readByte();
+r |= this.readByte() << 8;
+s = this.readByte();
+65535 & (r ^ ~(s |= this.readByte() << 8)) && document.write("BlockLen checksum mismatch\n");
+for (;r--; ) {
+o = this.readByte();
+this.addBuffer(o);
+}
+} else if (1 === e) for (;;) {
+(a = n.bitReverse[this.readBits(7)] >> 1) > 23 ? (a = a << 1 | this.readBit()) > 199 ? a = (a -= 128) << 1 | this.readBit() : (a -= 48) > 143 && (a += 136) : a += 256;
+if (a < 256) this.addBuffer(a); else {
+if (256 === a) break;
+a -= 257;
+m = this.readBits(n.cplext[a]) + n.cplens[a];
+a = n.bitReverse[this.readBits(5)] >> 3;
+if (n.cpdext[a] > 8) {
+p = this.readBits(8);
+p |= this.readBits(n.cpdext[a] - 8) << 8;
+} else p = this.readBits(n.cpdext[a]);
+p += n.cpdist[a];
+for (a = 0; a < m; a++) {
+var o = this.buf32k[this.bIdx - p & 32767];
+this.addBuffer(o);
+}
+}
+} else if (2 === e) {
+var a, c, l, h, u, _ = new Array(320);
+l = 257 + this.readBits(5);
+h = 1 + this.readBits(5);
+u = 4 + this.readBits(4);
+for (a = 0; a < 19; a++) _[a] = 0;
+for (a = 0; a < u; a++) _[n.border[a]] = this.readBits(3);
+m = this.distanceTree.length;
+for (i = 0; i < m; i++) this.distanceTree[i] = new n.HufNode();
+if (this.CreateTree(this.distanceTree, 19, _, 0)) {
+this.flushBuffer();
+return 1;
+}
+c = l + h;
+i = 0;
+for (;i < c; ) {
+0;
+if ((a = this.DecodeValue(this.distanceTree)) < 16) _[i++] = a; else if (16 === a) {
+var f;
+if (i + (a = 3 + this.readBits(2)) > c) {
+this.flushBuffer();
+return 1;
+}
+f = i ? _[i - 1] : 0;
+for (;a--; ) _[i++] = f;
+} else {
+if (i + (a = 17 === a ? 3 + this.readBits(3) : 11 + this.readBits(7)) > c) {
+this.flushBuffer();
+return 1;
+}
+for (;a--; ) _[i++] = 0;
+}
+}
+m = this.literalTree.length;
+for (i = 0; i < m; i++) this.literalTree[i] = new n.HufNode();
+if (this.CreateTree(this.literalTree, l, _, 0)) {
+this.flushBuffer();
+return 1;
+}
+m = this.literalTree.length;
+for (i = 0; i < m; i++) this.distanceTree[i] = new n.HufNode();
+var d = new Array();
+for (i = l; i < _.length; i++) d[i - l] = _[i];
+if (this.CreateTree(this.distanceTree, h, d, 0)) {
+this.flushBuffer();
+return 1;
+}
+for (;;) if ((a = this.DecodeValue(this.literalTree)) >= 256) {
+var m, p;
+if (0 === (a -= 256)) break;
+a--;
+m = this.readBits(n.cplext[a]) + n.cplens[a];
+a = this.DecodeValue(this.distanceTree);
+if (n.cpdext[a] > 8) {
+p = this.readBits(8);
+p |= this.readBits(n.cpdext[a] - 8) << 8;
+} else p = this.readBits(n.cpdext[a]);
+p += n.cpdist[a];
+for (;m--; ) {
+o = this.buf32k[this.bIdx - p & 32767];
+this.addBuffer(o);
+}
+} else this.addBuffer(a);
+}
+} while (!t);
+this.flushBuffer();
+this.byteAlign();
+return 0;
+};
+n.prototype.unzipFile = function(t) {
+var e;
+this.gunzip();
+for (e = 0; e < this.unzipped.length; e++) if (this.unzipped[e][1] === t) return this.unzipped[e][0];
+};
+n.prototype.nextFile = function() {
+this.outputArr = [];
+this.modeZIP = !1;
+var t = [];
+t[0] = this.readByte();
+t[1] = this.readByte();
+if (120 === t[0] && 218 === t[1]) {
+this.DeflateLoop();
+this.unzipped[this.files] = [ this.outputArr.join(""), "geonext.gxt" ];
+this.files++;
+}
+if (31 === t[0] && 139 === t[1]) {
+this.skipdir();
+this.unzipped[this.files] = [ this.outputArr.join(""), "file" ];
+this.files++;
+}
+if (80 === t[0] && 75 === t[1]) {
+this.modeZIP = !0;
+t[2] = this.readByte();
+t[3] = this.readByte();
+if (3 === t[2] && 4 === t[3]) {
+t[0] = this.readByte();
+t[1] = this.readByte();
+this.gpflags = this.readByte();
+this.gpflags |= this.readByte() << 8;
+var e = this.readByte();
+e |= this.readByte() << 8;
+this.readByte();
+this.readByte();
+this.readByte();
+this.readByte();
+this.readByte();
+this.readByte() << 8;
+this.readByte() << 16;
+this.readByte() << 24;
+this.readByte();
+this.readByte() << 8;
+this.readByte() << 16;
+this.readByte() << 24;
+var i = this.readByte();
+i |= this.readByte() << 8;
+var r = this.readByte();
+r |= this.readByte() << 8;
+o = 0;
+this.nameBuf = [];
+for (;i--; ) {
+var s = this.readByte();
+"/" === s | ":" === s ? o = 0 : o < n.NAMEMAX - 1 && (this.nameBuf[o++] = String.fromCharCode(s));
+}
+this.fileout || (this.fileout = this.nameBuf);
+for (var o = 0; o < r; ) {
+s = this.readByte();
+o++;
+}
+if (8 === e) {
+this.DeflateLoop();
+this.unzipped[this.files] = [ this.outputArr.join(""), this.nameBuf.join("") ];
+this.files++;
+}
+this.skipdir();
+}
+}
+};
+n.prototype.skipdir = function() {
+var t, e, i = [];
+if (8 & this.gpflags) {
+i[0] = this.readByte();
+i[1] = this.readByte();
+i[2] = this.readByte();
+i[3] = this.readByte();
+this.readByte();
+this.readByte() << 8;
+this.readByte() << 16;
+this.readByte() << 24;
+this.readByte();
+this.readByte() << 8;
+this.readByte() << 16;
+this.readByte() << 24;
+}
+this.modeZIP && this.nextFile();
+i[0] = this.readByte();
+if (8 !== i[0]) return 0;
+this.gpflags = this.readByte();
+this.readByte();
+this.readByte();
+this.readByte();
+this.readByte();
+this.readByte();
+this.readByte();
+if (4 & this.gpflags) {
+i[0] = this.readByte();
+i[2] = this.readByte();
+this.len = i[0] + 256 * i[1];
+for (t = 0; t < this.len; t++) this.readByte();
+}
+if (8 & this.gpflags) {
+t = 0;
+this.nameBuf = [];
+for (;e = this.readByte(); ) {
+"7" !== e && ":" !== e || (t = 0);
+t < n.NAMEMAX - 1 && (this.nameBuf[t++] = e);
+}
+}
+if (16 & this.gpflags) for (;e = this.readByte(); ) ;
+if (2 & this.gpflags) {
+this.readByte();
+this.readByte();
+}
+this.DeflateLoop();
+this.readByte();
+this.readByte() << 8;
+this.readByte() << 16;
+this.readByte() << 24;
+this.modeZIP && this.nextFile();
+};
+e.exports = n;
+}), {} ],
+25: [ (function(i, n, r) {
+"use strict";
+(function() {
+function i(t) {
+throw t;
+}
+var n = void 0, r = !0, s = this;
+function o(t, e) {
+var i, r = t.split("."), o = s;
+!(r[0] in o) && o.execScript && o.execScript("var " + r[0]);
+for (;r.length && (i = r.shift()); ) r.length || e === n ? o = o[i] ? o[i] : o[i] = {} : o[i] = e;
+}
+var a = "undefined" !== ("object" === (e = typeof Uint8Array) ? t(Uint8Array) : e) && "undefined" !== ("object" === (e = typeof Uint16Array) ? t(Uint16Array) : e) && "undefined" !== ("object" === (e = typeof Uint32Array) ? t(Uint32Array) : e);
+function c(i) {
+if ("string" === ("object" === (e = typeof i) ? t(i) : e)) {
+var n, r, s = i.split("");
+n = 0;
+for (r = s.length; n < r; n++) s[n] = (255 & s[n].charCodeAt(0)) >>> 0;
+i = s;
+}
+for (var o, a = 1, c = 0, l = i.length, h = 0; 0 < l; ) {
+l -= o = 1024 < l ? 1024 : l;
+do {
+c += a += i[h++];
+} while (--o);
+a %= 65521;
+c %= 65521;
+}
+return (c << 16 | a) >>> 0;
+}
+function l(n, r) {
+this.index = "number" === ("object" === (e = typeof r) ? t(r) : e) ? r : 0;
+this.i = 0;
+this.buffer = n instanceof (a ? Uint8Array : Array) ? n : new (a ? Uint8Array : Array)(32768);
+2 * this.buffer.length <= this.index && i(Error("invalid index"));
+this.buffer.length <= this.index && this.f();
+}
+l.prototype.f = function() {
+var t, e = this.buffer, i = e.length, n = new (a ? Uint8Array : Array)(i << 1);
+if (a) n.set(e); else for (t = 0; t < i; ++t) n[t] = e[t];
+return this.buffer = n;
+};
+l.prototype.d = function(t, e, i) {
+var n, r = this.buffer, s = this.index, o = this.i, a = r[s];
+i && 1 < e && (t = 8 < e ? (m[255 & t] << 24 | m[t >>> 8 & 255] << 16 | m[t >>> 16 & 255] << 8 | m[t >>> 24 & 255]) >> 32 - e : m[t] >> 8 - e);
+if (8 > e + o) a = a << e | t, o += e; else for (n = 0; n < e; ++n) a = a << 1 | t >> e - n - 1 & 1,
+8 == ++o && (o = 0, r[s++] = m[a], a = 0, s === r.length && (r = this.f()));
+r[s] = a;
+this.buffer = r;
+this.i = o;
+this.index = s;
+};
+l.prototype.finish = function() {
+var t, e = this.buffer, i = this.index;
+0 < this.i && (e[i] <<= 8 - this.i, e[i] = m[e[i]], i++);
+a ? t = e.subarray(0, i) : (e.length = i, t = e);
+return t;
+};
+var h, u = new (a ? Uint8Array : Array)(256);
+for (h = 0; 256 > h; ++h) {
+for (var _ = d = h, f = 7, d = d >>> 1; d; d >>>= 1) _ <<= 1, _ |= 1 & d, --f;
+u[h] = (_ << f & 255) >>> 0;
+}
+var m = u;
+a && new Uint32Array([ 0, 1996959894, 3993919788, 2567524794, 124634137, 1886057615, 3915621685, 2657392035, 249268274, 2044508324, 3772115230, 2547177864, 162941995, 2125561021, 3887607047, 2428444049, 498536548, 1789927666, 4089016648, 2227061214, 450548861, 1843258603, 4107580753, 2211677639, 325883990, 1684777152, 4251122042, 2321926636, 335633487, 1661365465, 4195302755, 2366115317, 997073096, 1281953886, 3579855332, 2724688242, 1006888145, 1258607687, 3524101629, 2768942443, 901097722, 1119000684, 3686517206, 2898065728, 853044451, 1172266101, 3705015759, 2882616665, 651767980, 1373503546, 3369554304, 3218104598, 565507253, 1454621731, 3485111705, 3099436303, 671266974, 1594198024, 3322730930, 2970347812, 795835527, 1483230225, 3244367275, 3060149565, 1994146192, 31158534, 2563907772, 4023717930, 1907459465, 112637215, 2680153253, 3904427059, 2013776290, 251722036, 2517215374, 3775830040, 2137656763, 141376813, 2439277719, 3865271297, 1802195444, 476864866, 2238001368, 4066508878, 1812370925, 453092731, 2181625025, 4111451223, 1706088902, 314042704, 2344532202, 4240017532, 1658658271, 366619977, 2362670323, 4224994405, 1303535960, 984961486, 2747007092, 3569037538, 1256170817, 1037604311, 2765210733, 3554079995, 1131014506, 879679996, 2909243462, 3663771856, 1141124467, 855842277, 2852801631, 3708648649, 1342533948, 654459306, 3188396048, 3373015174, 1466479909, 544179635, 3110523913, 3462522015, 1591671054, 702138776, 2966460450, 3352799412, 1504918807, 783551873, 3082640443, 3233442989, 3988292384, 2596254646, 62317068, 1957810842, 3939845945, 2647816111, 81470997, 1943803523, 3814918930, 2489596804, 225274430, 2053790376, 3826175755, 2466906013, 167816743, 2097651377, 4027552580, 2265490386, 503444072, 1762050814, 4150417245, 2154129355, 426522225, 1852507879, 4275313526, 2312317920, 282753626, 1742555852, 4189708143, 2394877945, 397917763, 1622183637, 3604390888, 2714866558, 953729732, 1340076626, 3518719985, 2797360999, 1068828381, 1219638859, 3624741850, 2936675148, 906185462, 1090812512, 3747672003, 2825379669, 829329135, 1181335161, 3412177804, 3160834842, 628085408, 1382605366, 3423369109, 3138078467, 570562233, 1426400815, 3317316542, 2998733608, 733239954, 1555261956, 3268935591, 3050360625, 752459403, 1541320221, 2607071920, 3965973030, 1969922972, 40735498, 2617837225, 3943577151, 1913087877, 83908371, 2512341634, 3803740692, 2075208622, 213261112, 2463272603, 3855990285, 2094854071, 198958881, 2262029012, 4057260610, 1759359992, 534414190, 2176718541, 4139329115, 1873836001, 414664567, 2282248934, 4279200368, 1711684554, 285281116, 2405801727, 4167216745, 1634467795, 376229701, 2685067896, 3608007406, 1308918612, 956543938, 2808555105, 3495958263, 1231636301, 1047427035, 2932959818, 3654703836, 1088359270, 936918e3, 2847714899, 3736837829, 1202900863, 817233897, 3183342108, 3401237130, 1404277552, 615818150, 3134207493, 3453421203, 1423857449, 601450431, 3009837614, 3294710456, 1567103746, 711928724, 3020668471, 3272380065, 1510334235, 755167117 ]);
+function p(t) {
+this.buffer = new (a ? Uint16Array : Array)(2 * t);
+this.length = 0;
+}
+p.prototype.getParent = function(t) {
+return 2 * ((t - 2) / 4 | 0);
+};
+p.prototype.push = function(t, e) {
+var i, n, r, s = this.buffer;
+i = this.length;
+s[this.length++] = e;
+for (s[this.length++] = t; 0 < i && (n = this.getParent(i), s[i] > s[n]); ) r = s[i],
+s[i] = s[n], s[n] = r, r = s[i + 1], s[i + 1] = s[n + 1], s[n + 1] = r, i = n;
+return this.length;
+};
+p.prototype.pop = function() {
+var t, e, i, n, r, s = this.buffer;
+e = s[0];
+t = s[1];
+this.length -= 2;
+s[0] = s[this.length];
+s[1] = s[this.length + 1];
+for (r = 0; !((n = 2 * r + 2) >= this.length); ) {
+n + 2 < this.length && s[n + 2] > s[n] && (n += 2);
+if (!(s[n] > s[r])) break;
+i = s[r], s[r] = s[n], s[n] = i, i = s[r + 1], s[r + 1] = s[n + 1], s[n + 1] = i;
+r = n;
+}
+return {
+index: t,
+value: e,
+length: this.length
+};
+};
+function v(t) {
+var e, i, n, r, s, o, c, l, h, u = t.length, _ = 0, f = Number.POSITIVE_INFINITY;
+for (l = 0; l < u; ++l) t[l] > _ && (_ = t[l]), t[l] < f && (f = t[l]);
+e = 1 << _;
+i = new (a ? Uint32Array : Array)(e);
+n = 1;
+r = 0;
+for (s = 2; n <= _; ) {
+for (l = 0; l < u; ++l) if (t[l] === n) {
+o = 0;
+c = r;
+for (h = 0; h < n; ++h) o = o << 1 | 1 & c, c >>= 1;
+for (h = o; h < e; h += s) i[h] = n << 16 | l;
+++r;
+}
+++n;
+r <<= 1;
+s <<= 1;
+}
+return [ i, _, f ];
+}
+function y(i, n) {
+this.h = x;
+this.w = 0;
+this.input = i;
+this.b = 0;
+n && (n.lazy && (this.w = n.lazy), "number" === ("object" === (e = typeof n.compressionType) ? t(n.compressionType) : e) && (this.h = n.compressionType),
+n.outputBuffer && (this.a = a && n.outputBuffer instanceof Array ? new Uint8Array(n.outputBuffer) : n.outputBuffer),
+"number" === ("object" === (e = typeof n.outputIndex) ? t(n.outputIndex) : e) && (this.b = n.outputIndex));
+this.a || (this.a = new (a ? Uint8Array : Array)(32768));
+}
+var g, x = 2, C = {
+NONE: 0,
+r: 1,
+j: x,
+N: 3
+}, b = [];
+for (g = 0; 288 > g; g++) switch (r) {
+case 143 >= g:
+b.push([ g + 48, 8 ]);
+break;
+
+case 255 >= g:
+b.push([ g - 144 + 400, 9 ]);
+break;
+
+case 279 >= g:
+b.push([ g - 256 + 0, 7 ]);
+break;
+
+case 287 >= g:
+b.push([ g - 280 + 192, 8 ]);
+break;
+
+default:
+i("invalid literal: " + g);
+}
+y.prototype.n = function() {
+var t, e, s, o, c = this.input;
+switch (this.h) {
+case 0:
+s = 0;
+for (o = c.length; s < o; ) {
+var h, u, _, f = e = a ? c.subarray(s, s + 65535) : c.slice(s, s + 65535), d = (s += e.length) === o, m = n, p = n, v = this.a, y = this.b;
+if (a) {
+for (v = new Uint8Array(this.a.buffer); v.length <= y + f.length + 5; ) v = new Uint8Array(v.length << 1);
+v.set(this.a);
+}
+h = d ? 1 : 0;
+v[y++] = 0 | h;
+_ = 65536 + ~(u = f.length) & 65535;
+v[y++] = 255 & u;
+v[y++] = u >>> 8 & 255;
+v[y++] = 255 & _;
+v[y++] = _ >>> 8 & 255;
+if (a) v.set(f, y), y += f.length, v = v.subarray(0, y); else {
+m = 0;
+for (p = f.length; m < p; ++m) v[y++] = f[m];
+v.length = y;
+}
+this.b = y;
+this.a = v;
+}
+break;
+
+case 1:
+var g = new l(new Uint8Array(this.a.buffer), this.b);
+g.d(1, 1, r);
+g.d(1, 2, r);
+var C, A, S, w = B(this, c);
+C = 0;
+for (A = w.length; C < A; C++) if (S = w[C], l.prototype.d.apply(g, b[S]), 256 < S) g.d(w[++C], w[++C], r),
+g.d(w[++C], 5), g.d(w[++C], w[++C], r); else if (256 === S) break;
+this.a = g.finish();
+this.b = this.a.length;
+break;
+
+case x:
+var T, E, M, P, R, L, F, O, V, N, k, z, G, U, j, W = new l(new Uint8Array(this.a), this.b), H = [ 16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15 ], q = Array(19);
+T = x;
+W.d(1, 1, r);
+W.d(T, 2, r);
+E = B(this, c);
+F = I(L = D(this.L, 15));
+V = I(O = D(this.K, 7));
+for (M = 286; 257 < M && 0 === L[M - 1]; M--) ;
+for (P = 30; 1 < P && 0 === O[P - 1]; P--) ;
+var X, Y, J, Z, K, Q, $ = M, tt = P, et = new (a ? Uint32Array : Array)($ + tt), it = new (a ? Uint32Array : Array)(316), nt = new (a ? Uint8Array : Array)(19);
+for (X = Y = 0; X < $; X++) et[Y++] = L[X];
+for (X = 0; X < tt; X++) et[Y++] = O[X];
+if (!a) {
+X = 0;
+for (Z = nt.length; X < Z; ++X) nt[X] = 0;
+}
+X = K = 0;
+for (Z = et.length; X < Z; X += Y) {
+for (Y = 1; X + Y < Z && et[X + Y] === et[X]; ++Y) ;
+J = Y;
+if (0 === et[X]) if (3 > J) for (;0 < J--; ) it[K++] = 0, nt[0]++; else for (;0 < J; ) (Q = 138 > J ? J : 138) > J - 3 && Q < J && (Q = J - 3),
+10 >= Q ? (it[K++] = 17, it[K++] = Q - 3, nt[17]++) : (it[K++] = 18, it[K++] = Q - 11,
+nt[18]++), J -= Q; else if (it[K++] = et[X], nt[et[X]]++, 3 > --J) for (;0 < J--; ) it[K++] = et[X],
+nt[et[X]]++; else for (;0 < J; ) (Q = 6 > J ? J : 6) > J - 3 && Q < J && (Q = J - 3),
+it[K++] = 16, it[K++] = Q - 3, nt[16]++, J -= Q;
+}
+t = a ? it.subarray(0, K) : it.slice(0, K);
+N = D(nt, 7);
+for (U = 0; 19 > U; U++) q[U] = N[H[U]];
+for (R = 19; 4 < R && 0 === q[R - 1]; R--) ;
+k = I(N);
+W.d(M - 257, 5, r);
+W.d(P - 1, 5, r);
+W.d(R - 4, 4, r);
+for (U = 0; U < R; U++) W.d(q[U], 3, r);
+U = 0;
+for (j = t.length; U < j; U++) if (z = t[U], W.d(k[z], N[z], r), 16 <= z) {
+U++;
+switch (z) {
+case 16:
+G = 2;
+break;
+
+case 17:
+G = 3;
+break;
+
+case 18:
+G = 7;
+break;
+
+default:
+i("invalid code: " + z);
+}
+W.d(t[U], G, r);
+}
+var rt, st, ot, at, ct, lt, ht, ut, _t = [ F, L ], ft = [ V, O ];
+ct = _t[0];
+lt = _t[1];
+ht = ft[0];
+ut = ft[1];
+rt = 0;
+for (st = E.length; rt < st; ++rt) if (ot = E[rt], W.d(ct[ot], lt[ot], r), 256 < ot) W.d(E[++rt], E[++rt], r),
+at = E[++rt], W.d(ht[at], ut[at], r), W.d(E[++rt], E[++rt], r); else if (256 === ot) break;
+this.a = W.finish();
+this.b = this.a.length;
+break;
+
+default:
+i("invalid compression type");
+}
+return this.a;
+};
+function A(t, e) {
+this.length = t;
+this.G = e;
+}
+function S() {
+var t = w;
+switch (r) {
+case 3 === t:
+return [ 257, t - 3, 0 ];
+
+case 4 === t:
+return [ 258, t - 4, 0 ];
+
+case 5 === t:
+return [ 259, t - 5, 0 ];
+
+case 6 === t:
+return [ 260, t - 6, 0 ];
+
+case 7 === t:
+return [ 261, t - 7, 0 ];
+
+case 8 === t:
+return [ 262, t - 8, 0 ];
+
+case 9 === t:
+return [ 263, t - 9, 0 ];
+
+case 10 === t:
+return [ 264, t - 10, 0 ];
+
+case 12 >= t:
+return [ 265, t - 11, 1 ];
+
+case 14 >= t:
+return [ 266, t - 13, 1 ];
+
+case 16 >= t:
+return [ 267, t - 15, 1 ];
+
+case 18 >= t:
+return [ 268, t - 17, 1 ];
+
+case 22 >= t:
+return [ 269, t - 19, 2 ];
+
+case 26 >= t:
+return [ 270, t - 23, 2 ];
+
+case 30 >= t:
+return [ 271, t - 27, 2 ];
+
+case 34 >= t:
+return [ 272, t - 31, 2 ];
+
+case 42 >= t:
+return [ 273, t - 35, 3 ];
+
+case 50 >= t:
+return [ 274, t - 43, 3 ];
+
+case 58 >= t:
+return [ 275, t - 51, 3 ];
+
+case 66 >= t:
+return [ 276, t - 59, 3 ];
+
+case 82 >= t:
+return [ 277, t - 67, 4 ];
+
+case 98 >= t:
+return [ 278, t - 83, 4 ];
+
+case 114 >= t:
+return [ 279, t - 99, 4 ];
+
+case 130 >= t:
+return [ 280, t - 115, 4 ];
+
+case 162 >= t:
+return [ 281, t - 131, 5 ];
+
+case 194 >= t:
+return [ 282, t - 163, 5 ];
+
+case 226 >= t:
+return [ 283, t - 195, 5 ];
+
+case 257 >= t:
+return [ 284, t - 227, 5 ];
+
+case 258 === t:
+return [ 285, t - 258, 0 ];
+
+default:
+i("invalid length: " + t);
+}
+}
+var w, T, E = [];
+for (w = 3; 258 >= w; w++) T = S(), E[w] = T[2] << 24 | T[1] << 16 | T[0];
+var M = a ? new Uint32Array(E) : E;
+function B(t, e) {
+function s(t, e) {
+var n, s, o, a, c = t.G, l = [], h = 0;
+n = M[t.length];
+l[h++] = 65535 & n;
+l[h++] = n >> 16 & 255;
+l[h++] = n >> 24;
+switch (r) {
+case 1 === c:
+s = [ 0, c - 1, 0 ];
+break;
+
+case 2 === c:
+s = [ 1, c - 2, 0 ];
+break;
+
+case 3 === c:
+s = [ 2, c - 3, 0 ];
+break;
+
+case 4 === c:
+s = [ 3, c - 4, 0 ];
+break;
+
+case 6 >= c:
+s = [ 4, c - 5, 1 ];
+break;
+
+case 8 >= c:
+s = [ 5, c - 7, 1 ];
+break;
+
+case 12 >= c:
+s = [ 6, c - 9, 2 ];
+break;
+
+case 16 >= c:
+s = [ 7, c - 13, 2 ];
+break;
+
+case 24 >= c:
+s = [ 8, c - 17, 3 ];
+break;
+
+case 32 >= c:
+s = [ 9, c - 25, 3 ];
+break;
+
+case 48 >= c:
+s = [ 10, c - 33, 4 ];
+break;
+
+case 64 >= c:
+s = [ 11, c - 49, 4 ];
+break;
+
+case 96 >= c:
+s = [ 12, c - 65, 5 ];
+break;
+
+case 128 >= c:
+s = [ 13, c - 97, 5 ];
+break;
+
+case 192 >= c:
+s = [ 14, c - 129, 6 ];
+break;
+
+case 256 >= c:
+s = [ 15, c - 193, 6 ];
+break;
+
+case 384 >= c:
+s = [ 16, c - 257, 7 ];
+break;
+
+case 512 >= c:
+s = [ 17, c - 385, 7 ];
+break;
+
+case 768 >= c:
+s = [ 18, c - 513, 8 ];
+break;
+
+case 1024 >= c:
+s = [ 19, c - 769, 8 ];
+break;
+
+case 1536 >= c:
+s = [ 20, c - 1025, 9 ];
+break;
+
+case 2048 >= c:
+s = [ 21, c - 1537, 9 ];
+break;
+
+case 3072 >= c:
+s = [ 22, c - 2049, 10 ];
+break;
+
+case 4096 >= c:
+s = [ 23, c - 3073, 10 ];
+break;
+
+case 6144 >= c:
+s = [ 24, c - 4097, 11 ];
+break;
+
+case 8192 >= c:
+s = [ 25, c - 6145, 11 ];
+break;
+
+case 12288 >= c:
+s = [ 26, c - 8193, 12 ];
+break;
+
+case 16384 >= c:
+s = [ 27, c - 12289, 12 ];
+break;
+
+case 24576 >= c:
+s = [ 28, c - 16385, 13 ];
+break;
+
+case 32768 >= c:
+s = [ 29, c - 24577, 13 ];
+break;
+
+default:
+i("invalid distance");
+}
+n = s;
+l[h++] = n[0];
+l[h++] = n[1];
+l[h++] = n[2];
+o = 0;
+for (a = l.length; o < a; ++o) v[y++] = l[o];
+x[l[0]]++;
+C[l[3]]++;
+g = t.length + e - 1;
+d = null;
+}
+var o, c, l, h, u, _, f, d, m, p = {}, v = a ? new Uint16Array(2 * e.length) : [], y = 0, g = 0, x = new (a ? Uint32Array : Array)(286), C = new (a ? Uint32Array : Array)(30), b = t.w;
+if (!a) {
+for (l = 0; 285 >= l; ) x[l++] = 0;
+for (l = 0; 29 >= l; ) C[l++] = 0;
+}
+x[256] = 1;
+o = 0;
+for (c = e.length; o < c; ++o) {
+l = u = 0;
+for (h = 3; l < h && o + l !== c; ++l) u = u << 8 | e[o + l];
+p[u] === n && (p[u] = []);
+_ = p[u];
+if (!(0 < g--)) {
+for (;0 < _.length && 32768 < o - _[0]; ) _.shift();
+if (o + 3 >= c) {
+d && s(d, -1);
+l = 0;
+for (h = c - o; l < h; ++l) m = e[o + l], v[y++] = m, ++x[m];
+break;
+}
+if (0 < _.length) {
+var S = n, w = n, T = 0, E = n, B = n, D = n, I = e.length, P = (B = 0, _.length);
+t: for (;B < P; B++) {
+S = _[P - B - 1];
+E = 3;
+if (3 < T) {
+for (D = T; 3 < D; D--) if (e[S + D - 1] !== e[o + D - 1]) continue t;
+E = T;
+}
+for (;258 > E && o + E < I && e[S + E] === e[o + E]; ) ++E;
+E > T && (w = S, T = E);
+if (258 === E) break;
+}
+f = new A(T, o - w);
+d ? d.length < f.length ? (m = e[o - 1], v[y++] = m, ++x[m], s(f, 0)) : s(d, -1) : f.length < b ? d = f : s(f, 0);
+} else d ? s(d, -1) : (m = e[o], v[y++] = m, ++x[m]);
+}
+_.push(o);
+}
+v[y++] = 256;
+x[256]++;
+t.L = x;
+t.K = C;
+return a ? v.subarray(0, y) : v;
+}
+function D(t, e) {
+function i(t) {
+var e = A[t][S[t]];
+e === y ? (i(t + 1), i(t + 1)) : --C[e];
+++S[t];
+}
+var n, r, s, o, c, l = t.length, h = new p(572), u = new (a ? Uint8Array : Array)(l);
+if (!a) for (o = 0; o < l; o++) u[o] = 0;
+for (o = 0; o < l; ++o) 0 < t[o] && h.push(o, t[o]);
+n = Array(h.length / 2);
+r = new (a ? Uint32Array : Array)(h.length / 2);
+if (1 === n.length) return u[h.pop().index] = 1, u;
+o = 0;
+for (c = h.length / 2; o < c; ++o) n[o] = h.pop(), r[o] = n[o].value;
+var _, f, d, m, v, y = r.length, g = new (a ? Uint16Array : Array)(e), x = new (a ? Uint8Array : Array)(e), C = new (a ? Uint8Array : Array)(y), b = Array(e), A = Array(e), S = Array(e), w = (1 << e) - y, T = 1 << e - 1;
+g[e - 1] = y;
+for (f = 0; f < e; ++f) w < T ? x[f] = 0 : (x[f] = 1, w -= T), w <<= 1, g[e - 2 - f] = (g[e - 1 - f] / 2 | 0) + y;
+g[0] = x[0];
+b[0] = Array(g[0]);
+A[0] = Array(g[0]);
+for (f = 1; f < e; ++f) g[f] > 2 * g[f - 1] + x[f] && (g[f] = 2 * g[f - 1] + x[f]),
+b[f] = Array(g[f]), A[f] = Array(g[f]);
+for (_ = 0; _ < y; ++_) C[_] = e;
+for (d = 0; d < g[e - 1]; ++d) b[e - 1][d] = r[d], A[e - 1][d] = d;
+for (_ = 0; _ < e; ++_) S[_] = 0;
+1 === x[e - 1] && (--C[0], ++S[e - 1]);
+for (f = e - 2; 0 <= f; --f) {
+m = _ = 0;
+v = S[f + 1];
+for (d = 0; d < g[f]; d++) (m = b[f + 1][v] + b[f + 1][v + 1]) > r[_] ? (b[f][d] = m,
+A[f][d] = y, v += 2) : (b[f][d] = r[_], A[f][d] = _, ++_);
+S[f] = 0;
+1 === x[f] && i(f);
+}
+s = C;
+o = 0;
+for (c = n.length; o < c; ++o) u[n[o].index] = s[o];
+return u;
+}
+function I(t) {
+var e, n, r, s, o = new (a ? Uint16Array : Array)(t.length), c = [], l = [], h = 0;
+e = 0;
+for (n = t.length; e < n; e++) c[t[e]] = 1 + (0 | c[t[e]]);
+e = 1;
+for (n = 16; e <= n; e++) l[e] = h, (h += 0 | c[e]) > 1 << e && i("overcommitted"),
+h <<= 1;
+65536 > h && i("undercommitted");
+e = 0;
+for (n = t.length; e < n; e++) {
+h = l[t[e]];
+l[t[e]] += 1;
+r = o[e] = 0;
+for (s = t[e]; r < s; r++) o[e] = o[e] << 1 | 1 & h, h >>>= 1;
+}
+return o;
+}
+function P(i, n) {
+this.input = i;
+this.a = new (a ? Uint8Array : Array)(32768);
+this.h = R.j;
+var r, s = {};
+!n && (n = {}) || "number" !== ("object" === (e = typeof n.compressionType) ? t(n.compressionType) : e) || (this.h = n.compressionType);
+for (r in n) s[r] = n[r];
+s.outputBuffer = this.a;
+this.z = new y(this.input, s);
+}
+var R = C;
+P.prototype.n = function() {
+var t, e, n, r, s, o, l, h = 0;
+l = this.a;
+switch (t = _t) {
+case _t:
+e = Math.LOG2E * Math.log(32768) - 8;
+break;
+
+default:
+i(Error("invalid compression method"));
+}
+n = e << 4 | t;
+l[h++] = n;
+switch (t) {
+case _t:
+switch (this.h) {
+case R.NONE:
+s = 0;
+break;
+
+case R.r:
+s = 1;
+break;
+
+case R.j:
+s = 2;
+break;
+
+default:
+i(Error("unsupported compression type"));
+}
+break;
+
+default:
+i(Error("invalid compression method"));
+}
+r = s << 6 | 0;
+l[h++] = r | 31 - (256 * n + r) % 31;
+o = c(this.input);
+this.z.b = h;
+h = (l = this.z.n()).length;
+a && ((l = new Uint8Array(l.buffer)).length <= h + 4 && (this.a = new Uint8Array(l.length + 4),
+this.a.set(l), l = this.a), l = l.subarray(0, h + 4));
+l[h++] = o >> 24 & 255;
+l[h++] = o >> 16 & 255;
+l[h++] = o >> 8 & 255;
+l[h++] = 255 & o;
+return l;
+};
+o("Zlib.Deflate", P);
+o("Zlib.Deflate.compress", (function(t, e) {
+return new P(t, e).n();
+}));
+o("Zlib.Deflate.CompressionType", R);
+o("Zlib.Deflate.CompressionType.NONE", R.NONE);
+o("Zlib.Deflate.CompressionType.FIXED", R.r);
+o("Zlib.Deflate.CompressionType.DYNAMIC", R.j);
+function L(t, e) {
+this.k = [];
+this.l = 32768;
+this.e = this.g = this.c = this.q = 0;
+this.input = a ? new Uint8Array(t) : t;
+this.s = !1;
+this.m = O;
+this.B = !1;
+!e && (e = {}) || (e.index && (this.c = e.index), e.bufferSize && (this.l = e.bufferSize),
+e.bufferType && (this.m = e.bufferType), e.resize && (this.B = e.resize));
+switch (this.m) {
+case F:
+this.b = 32768;
+this.a = new (a ? Uint8Array : Array)(32768 + this.l + 258);
+break;
+
+case O:
+this.b = 0;
+this.a = new (a ? Uint8Array : Array)(this.l);
+this.f = this.J;
+this.t = this.H;
+this.o = this.I;
+break;
+
+default:
+i(Error("invalid inflate mode"));
+}
+}
+var F = 0, O = 1, V = {
+D: F,
+C: O
+};
+L.prototype.p = function() {
+for (;!this.s; ) {
+var t = it(this, 3);
+1 & t && (this.s = r);
+switch (t >>>= 1) {
+case 0:
+var e = this.input, s = this.c, o = this.a, c = this.b, l = n, h = n, u = n, _ = o.length, f = n;
+this.e = this.g = 0;
+(l = e[s++]) === n && i(Error("invalid uncompressed block header: LEN (first byte)"));
+h = l;
+(l = e[s++]) === n && i(Error("invalid uncompressed block header: LEN (second byte)"));
+h |= l << 8;
+(l = e[s++]) === n && i(Error("invalid uncompressed block header: NLEN (first byte)"));
+u = l;
+(l = e[s++]) === n && i(Error("invalid uncompressed block header: NLEN (second byte)"));
+h === ~(u |= l << 8) && i(Error("invalid uncompressed block header: length verify"));
+s + h > e.length && i(Error("input buffer is broken"));
+switch (this.m) {
+case F:
+for (;c + h > o.length; ) {
+h -= f = _ - c;
+if (a) o.set(e.subarray(s, s + f), c), c += f, s += f; else for (;f--; ) o[c++] = e[s++];
+this.b = c;
+o = this.f();
+c = this.b;
+}
+break;
+
+case O:
+for (;c + h > o.length; ) o = this.f({
+v: 2
+});
+break;
+
+default:
+i(Error("invalid inflate mode"));
+}
+if (a) o.set(e.subarray(s, s + h), c), c += h, s += h; else for (;h--; ) o[c++] = e[s++];
+this.c = s;
+this.b = c;
+this.a = o;
+break;
+
+case 1:
+this.o($, et);
+break;
+
+case 2:
+rt(this);
+break;
+
+default:
+i(Error("unknown BTYPE: " + t));
+}
+}
+return this.t();
+};
+var N, k, z = [ 16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15 ], G = a ? new Uint16Array(z) : z, U = [ 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 23, 27, 31, 35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258, 258, 258 ], j = a ? new Uint16Array(U) : U, W = [ 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0, 0, 0 ], H = a ? new Uint8Array(W) : W, q = [ 1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193, 257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145, 8193, 12289, 16385, 24577 ], X = a ? new Uint16Array(q) : q, Y = [ 0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13 ], J = a ? new Uint8Array(Y) : Y, Z = new (a ? Uint8Array : Array)(288);
+N = 0;
+for (k = Z.length; N < k; ++N) Z[N] = 143 >= N ? 8 : 255 >= N ? 9 : 279 >= N ? 7 : 8;
+var K, Q, $ = v(Z), tt = new (a ? Uint8Array : Array)(30);
+K = 0;
+for (Q = tt.length; K < Q; ++K) tt[K] = 5;
+var et = v(tt);
+function it(t, e) {
+for (var r, s = t.g, o = t.e, a = t.input, c = t.c; o < e; ) (r = a[c++]) === n && i(Error("input buffer is broken")),
+s |= r << o, o += 8;
+r = s & (1 << e) - 1;
+t.g = s >>> e;
+t.e = o - e;
+t.c = c;
+return r;
+}
+function nt(t, e) {
+for (var r, s, o, a = t.g, c = t.e, l = t.input, h = t.c, u = e[0], _ = e[1]; c < _; ) (r = l[h++]) === n && i(Error("input buffer is broken")),
+a |= r << c, c += 8;
+o = (s = u[a & (1 << _) - 1]) >>> 16;
+t.g = a >> o;
+t.e = c - o;
+t.c = h;
+return 65535 & s;
+}
+function rt(t) {
+function e(t, e, i) {
+var n, r, s, o;
+for (o = 0; o < t; ) switch (n = nt(this, e)) {
+case 16:
+for (s = 3 + it(this, 2); s--; ) i[o++] = r;
+break;
+
+case 17:
+for (s = 3 + it(this, 3); s--; ) i[o++] = 0;
+r = 0;
+break;
+
+case 18:
+for (s = 11 + it(this, 7); s--; ) i[o++] = 0;
+r = 0;
+break;
+
+default:
+r = i[o++] = n;
+}
+return i;
+}
+var i, n, r, s, o = it(t, 5) + 257, c = it(t, 5) + 1, l = it(t, 4) + 4, h = new (a ? Uint8Array : Array)(G.length);
+for (s = 0; s < l; ++s) h[G[s]] = it(t, 3);
+i = v(h);
+n = new (a ? Uint8Array : Array)(o);
+r = new (a ? Uint8Array : Array)(c);
+t.o(v(e.call(t, o, i, n)), v(e.call(t, c, i, r)));
+}
+L.prototype.o = function(t, e) {
+var i = this.a, n = this.b;
+this.u = t;
+for (var r, s, o, a, c = i.length - 258; 256 !== (r = nt(this, t)); ) if (256 > r) n >= c && (this.b = n,
+i = this.f(), n = this.b), i[n++] = r; else {
+a = j[s = r - 257];
+0 < H[s] && (a += it(this, H[s]));
+r = nt(this, e);
+o = X[r];
+0 < J[r] && (o += it(this, J[r]));
+n >= c && (this.b = n, i = this.f(), n = this.b);
+for (;a--; ) i[n] = i[n++ - o];
+}
+for (;8 <= this.e; ) this.e -= 8, this.c--;
+this.b = n;
+};
+L.prototype.I = function(t, e) {
+var i = this.a, n = this.b;
+this.u = t;
+for (var r, s, o, a, c = i.length; 256 !== (r = nt(this, t)); ) if (256 > r) n >= c && (c = (i = this.f()).length),
+i[n++] = r; else {
+a = j[s = r - 257];
+0 < H[s] && (a += it(this, H[s]));
+r = nt(this, e);
+o = X[r];
+0 < J[r] && (o += it(this, J[r]));
+n + a > c && (c = (i = this.f()).length);
+for (;a--; ) i[n] = i[n++ - o];
+}
+for (;8 <= this.e; ) this.e -= 8, this.c--;
+this.b = n;
+};
+L.prototype.f = function() {
+var t, e, i = new (a ? Uint8Array : Array)(this.b - 32768), n = this.b - 32768, r = this.a;
+if (a) i.set(r.subarray(32768, i.length)); else {
+t = 0;
+for (e = i.length; t < e; ++t) i[t] = r[t + 32768];
+}
+this.k.push(i);
+this.q += i.length;
+if (a) r.set(r.subarray(n, n + 32768)); else for (t = 0; 32768 > t; ++t) r[t] = r[n + t];
+this.b = 32768;
+return r;
+};
+L.prototype.J = function(i) {
+var n, r, s, o = this.input.length / this.c + 1 | 0, c = this.input, l = this.a;
+i && ("number" === ("object" === (e = typeof i.v) ? t(i.v) : e) && (o = i.v), "number" === ("object" === (e = typeof i.F) ? t(i.F) : e) && (o += i.F));
+2 > o ? r = (s = (c.length - this.c) / this.u[2] / 2 * 258 | 0) < l.length ? l.length + s : l.length << 1 : r = l.length * o;
+a ? (n = new Uint8Array(r)).set(l) : n = l;
+return this.a = n;
+};
+L.prototype.t = function() {
+var t, e, i, n, r, s = 0, o = this.a, c = this.k, l = new (a ? Uint8Array : Array)(this.q + (this.b - 32768));
+if (0 === c.length) return a ? this.a.subarray(32768, this.b) : this.a.slice(32768, this.b);
+e = 0;
+for (i = c.length; e < i; ++e) {
+t = c[e];
+n = 0;
+for (r = t.length; n < r; ++n) l[s++] = t[n];
+}
+e = 32768;
+for (i = this.b; e < i; ++e) l[s++] = o[e];
+this.k = [];
+return this.buffer = l;
+};
+L.prototype.H = function() {
+var t, e = this.b;
+a ? this.B ? (t = new Uint8Array(e)).set(this.a.subarray(0, e)) : t = this.a.subarray(0, e) : (this.a.length > e && (this.a.length = e),
+t = this.a);
+return this.buffer = t;
+};
+function st(t, e) {
+var n, r;
+this.input = t;
+this.c = 0;
+!e && (e = {}) || (e.index && (this.c = e.index), e.verify && (this.M = e.verify));
+n = t[this.c++];
+r = t[this.c++];
+switch (15 & n) {
+case _t:
+this.method = _t;
+break;
+
+default:
+i(Error("unsupported compression method"));
+}
+0 != ((n << 8) + r) % 31 && i(Error("invalid fcheck flag:" + ((n << 8) + r) % 31));
+32 & r && i(Error("fdict flag is not supported"));
+this.A = new L(t, {
+index: this.c,
+bufferSize: e.bufferSize,
+bufferType: e.bufferType,
+resize: e.resize
+});
+}
+st.prototype.p = function() {
+var t, e = this.input;
+t = this.A.p();
+this.c = this.A.c;
+this.M && ((e[this.c++] << 24 | e[this.c++] << 16 | e[this.c++] << 8 | e[this.c++]) >>> 0 !== c(t) && i(Error("invalid adler-32 checksum")));
+return t;
+};
+o("Zlib.Inflate", st);
+o("Zlib.Inflate.BufferType", V);
+V.ADAPTIVE = V.C;
+V.BLOCK = V.D;
+o("Zlib.Inflate.prototype.decompress", st.prototype.p);
+a && new Uint16Array([ 16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15 ]);
+a && new Uint16Array([ 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 23, 27, 31, 35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258, 258, 258 ]);
+a && new Uint8Array([ 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0, 0, 0 ]);
+a && new Uint16Array([ 1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193, 257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145, 8193, 12289, 16385, 24577 ]);
+a && new Uint8Array([ 0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13 ]);
+var ot, at, ct = new (a ? Uint8Array : Array)(288);
+ot = 0;
+for (at = ct.length; ot < at; ++ot) ct[ot] = 143 >= ot ? 8 : 255 >= ot ? 9 : 279 >= ot ? 7 : 8;
+v(ct);
+var lt, ht, ut = new (a ? Uint8Array : Array)(30);
+lt = 0;
+for (ht = ut.length; lt < ht; ++lt) ut[lt] = 5;
+v(ut);
+var _t = 8;
+}).call(window);
+var s = window.Zlib;
+s.Deflate = s.Deflate;
+s.Deflate.compress = s.Deflate.compress;
+s.Inflate = s.Inflate;
+s.Inflate.BufferType = s.Inflate.BufferType;
+s.Inflate.prototype.decompress = s.Inflate.prototype.decompress;
+n.exports = s;
+}), {} ],
+26: [ (function(i, n, r) {
+"use strict";
+r.__esModule = !0;
+r.default = void 0;
+var s, o, a, c, l, h, u, _, f, d, m, p, v, y, g, x, C, b, A, S, w, T, E, M = (function() {
+function t(t, e) {
+for (var i = 0; i < e.length; i++) {
+var n = e[i];
+n.enumerable = n.enumerable || !1;
+n.configurable = !0;
+"value" in n && (n.writable = !0);
+Object.defineProperty(t, n.key, n);
+}
+}
+return function(e, i, n) {
+i && t(e.prototype, i);
+n && t(e, n);
+return e;
+};
+})(), B = R(i("../../renderer/enums")), D = R(i("../../renderer/scene/light")), I = i("../value-types"), P = i("../vmath");
+function R(t) {
+return t && t.__esModule ? t : {
+default: t
+};
+}
+function L(t, e, i, n) {
+i && Object.defineProperty(t, e, {
+enumerable: i.enumerable,
+configurable: i.configurable,
+writable: i.writable,
+value: i.initializer ? i.initializer.call(n) : void 0
+});
+}
+function F(t, e) {
+if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function");
+}
+function O(i, n) {
+if (!i) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
+return !n || "object" !== ("object" === (e = typeof n) ? t(n) : e) && "function" !== ("object" === (e = typeof n) ? t(n) : e) ? i : n;
+}
+function V(i, n) {
+if ("function" !== ("object" === (e = typeof n) ? t(n) : e) && null !== n) throw new TypeError("Super expression must either be null or a function, not " + ("object" === (e = typeof n) ? t(n) : e));
+i.prototype = Object.create(n && n.prototype, {
+constructor: {
+value: i,
+enumerable: !1,
+writable: !0,
+configurable: !0
+}
+});
+n && (Object.setPrototypeOf ? Object.setPrototypeOf(i, n) : i.__proto__ = n);
+}
+function N(t, e, i, n, r) {
+var s = {};
+Object.keys(n).forEach((function(t) {
+s[t] = n[t];
+}));
+s.enumerable = !!s.enumerable;
+s.configurable = !!s.configurable;
+("value" in s || s.initializer) && (s.writable = !0);
+s = i.slice().reverse().reduce((function(i, n) {
+return n(t, e, i) || i;
+}), s);
+if (r && void 0 !== s.initializer) {
+s.value = s.initializer ? s.initializer.call(r) : void 0;
+s.initializer = void 0;
+}
+if (void 0 === s.initializer) {
+Object.defineProperty(t, e, s);
+s = null;
+}
+return s;
+}
+var k = i("../renderer/index"), z = i("../platform/CCEnum"), G = i("../components/CCComponent"), U = i("../platform/CCClassDecorator"), j = U.ccclass, W = U.menu, H = U.inspector, q = U.property, X = U.executeInEditMode, Y = z({
+DIRECTIONAL: 0,
+POINT: 1,
+SPOT: 2
+}), J = z({
+NONE: 0,
+HARD: 2
+}), Z = (s = j("cc.Light"), o = W("i18n:MAIN_MENU.component.renderers/Light"), a = H("packages://inspector/inspectors/comps/light.js"),
+c = q({
+type: Y
+}), l = q({
+type: J
+}), s(h = o(h = X(h = a(h = (u = (E = T = (function(t) {
+V(e, t);
+M(e, [ {
+key: "type",
+get: function() {
+return this._type;
+},
+set: function(t) {
+this._type = t;
+var e = B.default.LIGHT_DIRECTIONAL;
+this._type === Y.POINT ? e = B.default.LIGHT_POINT : this._type === Y.SPOT && (e = B.default.LIGHT_SPOT);
+this._light.setType(e);
+}
+}, {
+key: "color",
+get: function() {
+return this._color;
+},
+set: function(t) {
+this._color = t;
+this._light.setColor(t.r / 255, t.g / 255, t.b / 255);
+}
+}, {
+key: "intensity",
+get: function() {
+return this._intensity;
+},
+set: function(t) {
+this._intensity = t;
+this._light.setIntensity(t);
+}
+}, {
+key: "range",
+get: function() {
+return this._range;
+},
+set: function(t) {
+this._range = t;
+this._light.setRange(t);
+}
+}, {
+key: "spotAngle",
+get: function() {
+return this._spotAngle;
+},
+set: function(t) {
+this._spotAngle = t;
+this._light.setSpotAngle((0, P.toRadian)(t));
+}
+}, {
+key: "spotExp",
+get: function() {
+return this._spotExp;
+},
+set: function(t) {
+this._spotExp = t;
+this._light.setSpotExp(t);
+}
+}, {
+key: "shadowType",
+get: function() {
+return this._shadowType;
+},
+set: function(t) {
+this._shadowType = t;
+var e = B.default.SHADOW_NONE;
+t === J.HARD ? e = B.default.SHADOW_HARD : t === J.SOFT && (e = B.default.SHADOW_SOFT);
+this._light.setShadowType(e);
+}
+}, {
+key: "shadowResolution",
+get: function() {
+return this._shadowResolution;
+},
+set: function(t) {
+this._shadowResolution = t;
+this._light.setShadowResolution(t);
+}
+}, {
+key: "shadowDarkness",
+get: function() {
+return this._shadowDarkness;
+},
+set: function(t) {
+this._shadowDarkness = t;
+this._light.setShadowDarkness(t);
+}
+}, {
+key: "shadowMinDepth",
+get: function() {
+return this._shadowMinDepth;
+},
+set: function(t) {
+this._shadowMinDepth = t;
+this._light.setShadowMinDepth(t);
+}
+}, {
+key: "shadowMaxDepth",
+get: function() {
+return this._shadowMaxDepth;
+},
+set: function(t) {
+this._shadowMaxDepth = t;
+this._light.setShadowMaxDepth(t);
+}
+}, {
+key: "shadowDepthScale",
+get: function() {
+return this._shadowDepthScale;
+},
+set: function(t) {
+this._shadowDepthScale = t;
+this._light.setShadowDepthScale(t);
+}
+}, {
+key: "shadowFrustumSize",
+get: function() {
+return this._shadowFrustumSize;
+},
+set: function(t) {
+this._shadowFrustumSize = t;
+this._light.setShadowFrustumSize(t);
+}
+} ]);
+function e() {
+F(this, e);
+var i = O(this, t.call(this));
+L(i, "_type", _, i);
+L(i, "_color", f, i);
+L(i, "_intensity", d, i);
+L(i, "_range", m, i);
+L(i, "_spotAngle", p, i);
+L(i, "_spotExp", v, i);
+L(i, "_shadowType", y, i);
+L(i, "_shadowResolution", g, i);
+L(i, "_shadowDarkness", x, i);
+L(i, "_shadowMinDepth", C, i);
+L(i, "_shadowMaxDepth", b, i);
+L(i, "_shadowDepthScale", A, i);
+L(i, "_shadowFrustumSize", S, i);
+L(i, "_shadowBias", w, i);
+i._light = new D.default();
+return i;
+}
+e.prototype.onLoad = function() {
+this._light.setNode(this.node);
+this.type = this._type;
+this.color = this._color;
+this.intensity = this._intensity;
+this.range = this._range;
+this.spotAngle = this._spotAngle;
+this.spotExp = this._spotExp;
+this.shadowType = this._shadowType;
+this.shadowResolution = this._shadowResolution;
+this.shadowDarkness = this._shadowDarkness;
+this.shadowMaxDepth = this._shadowMaxDepth;
+this.shadowDepthScale = this._shadowDepthScale;
+this.shadowFrustumSize = this._shadowFrustumSize;
+this.shadowBias = this._shadowBias;
+};
+e.prototype.onEnable = function() {
+k.scene.addLight(this._light);
+};
+e.prototype.onDisable = function() {
+k.scene.removeLight(this._light);
+};
+return e;
+})(G), T.Type = Y, T.ShadowType = J, E), _ = N(u.prototype, "_type", [ q ], {
+enumerable: !0,
+initializer: function() {
+return Y.DIRECTIONAL;
+}
+}), f = N(u.prototype, "_color", [ q ], {
+enumerable: !0,
+initializer: function() {
+return I.Color.WHITE;
+}
+}), d = N(u.prototype, "_intensity", [ q ], {
+enumerable: !0,
+initializer: function() {
+return 1;
+}
+}), m = N(u.prototype, "_range", [ q ], {
+enumerable: !0,
+initializer: function() {
+return 1;
+}
+}), p = N(u.prototype, "_spotAngle", [ q ], {
+enumerable: !0,
+initializer: function() {
+return 60;
+}
+}), v = N(u.prototype, "_spotExp", [ q ], {
+enumerable: !0,
+initializer: function() {
+return 1;
+}
+}), y = N(u.prototype, "_shadowType", [ q ], {
+enumerable: !0,
+initializer: function() {
+return J.NONE;
+}
+}), g = N(u.prototype, "_shadowResolution", [ q ], {
+enumerable: !0,
+initializer: function() {
+return 1024;
+}
+}), x = N(u.prototype, "_shadowDarkness", [ q ], {
+enumerable: !0,
+initializer: function() {
+return .5;
+}
+}), C = N(u.prototype, "_shadowMinDepth", [ q ], {
+enumerable: !0,
+initializer: function() {
+return 1;
+}
+}), b = N(u.prototype, "_shadowMaxDepth", [ q ], {
+enumerable: !0,
+initializer: function() {
+return 4096;
+}
+}), A = N(u.prototype, "_shadowDepthScale", [ q ], {
+enumerable: !0,
+initializer: function() {
+return 250;
+}
+}), S = N(u.prototype, "_shadowFrustumSize", [ q ], {
+enumerable: !0,
+initializer: function() {
+return 1024;
+}
+}), w = N(u.prototype, "_shadowBias", [ q ], {
+enumerable: !0,
+initializer: function() {
+return 5e-4;
+}
+}), N(u.prototype, "type", [ c ], Object.getOwnPropertyDescriptor(u.prototype, "type"), u.prototype),
+N(u.prototype, "color", [ q ], Object.getOwnPropertyDescriptor(u.prototype, "color"), u.prototype),
+N(u.prototype, "intensity", [ q ], Object.getOwnPropertyDescriptor(u.prototype, "intensity"), u.prototype),
+N(u.prototype, "range", [ q ], Object.getOwnPropertyDescriptor(u.prototype, "range"), u.prototype),
+N(u.prototype, "spotAngle", [ q ], Object.getOwnPropertyDescriptor(u.prototype, "spotAngle"), u.prototype),
+N(u.prototype, "spotExp", [ q ], Object.getOwnPropertyDescriptor(u.prototype, "spotExp"), u.prototype),
+N(u.prototype, "shadowType", [ l ], Object.getOwnPropertyDescriptor(u.prototype, "shadowType"), u.prototype),
+N(u.prototype, "shadowResolution", [ q ], Object.getOwnPropertyDescriptor(u.prototype, "shadowResolution"), u.prototype),
+N(u.prototype, "shadowDarkness", [ q ], Object.getOwnPropertyDescriptor(u.prototype, "shadowDarkness"), u.prototype),
+N(u.prototype, "shadowMinDepth", [ q ], Object.getOwnPropertyDescriptor(u.prototype, "shadowMinDepth"), u.prototype),
+N(u.prototype, "shadowMaxDepth", [ q ], Object.getOwnPropertyDescriptor(u.prototype, "shadowMaxDepth"), u.prototype),
+N(u.prototype, "shadowDepthScale", [ q ], Object.getOwnPropertyDescriptor(u.prototype, "shadowDepthScale"), u.prototype),
+N(u.prototype, "shadowFrustumSize", [ q ], Object.getOwnPropertyDescriptor(u.prototype, "shadowFrustumSize"), u.prototype),
+u)) || h) || h) || h) || h);
+r.default = Z;
+cc.Light = Z;
+n.exports = r.default;
+}), {
+"../../renderer/enums": 344,
+"../../renderer/scene/light": 372,
+"../components/CCComponent": 95,
+"../platform/CCClassDecorator": 202,
+"../platform/CCEnum": 203,
+"../renderer/index": 244,
+"../value-types": 306,
+"../vmath": 317
+} ],
+27: [ (function(t, e, i) {
+"use strict";
+var n = cc.Class({
+name: "cc.Model",
+extends: cc.Asset,
+ctor: function() {
+this._rootNode = null;
+},
+properties: {
+_nodes: {
+default: []
+},
+_precomputeJointMatrix: !1,
+nodes: {
+get: function() {
+return this._nodes;
+}
+},
+rootNode: {
+get: function() {
+return this._rootNode;
+}
+},
+precomputeJointMatrix: {
+get: function() {
+return this._precomputeJointMatrix;
+}
+}
+},
+onLoad: function() {
+var t = this._nodes;
+this._rootNode = t[0];
+for (var e = 0; e < t.length; e++) {
+var i = t[e];
+i.position = cc.v3.apply(this, i.position);
+i.scale = cc.v3.apply(this, i.scale);
+i.quat = cc.quat.apply(this, i.quat);
+i.uniqueBindPose && (i.uniqueBindPose = cc.mat4.apply(this, i.uniqueBindPose));
+var n = i.bindpose;
+if (n) for (var r in n) n[r] = cc.mat4.apply(this, n[r]);
+var s = i.children;
+if (s) for (var o = 0; o < s.length; o++) s[o] = t[s[o]];
+}
+}
+});
+cc.Model = e.exports = n;
+}), {} ],
+28: [ (function(t, e, i) {
+"use strict";
+var n = cc.vmath.quat, r = cc.quat(), s = cc.v3();
+cc.Rotate3DTo = cc.Class({
+name: "cc.Rotate3DTo",
+extends: cc.ActionInterval,
+ctor: function(t, e, i, n) {
+this._startQuat = cc.quat();
+this._dstQuat = cc.quat();
+void 0 !== e && this.initWithDuration(t, e, i, n);
+},
+initWithDuration: function(t, e, i, n) {
+if (cc.ActionInterval.prototype.initWithDuration.call(this, t)) {
+var r = this._dstQuat;
+if (e instanceof cc.Quat) r.set(e); else {
+if (e instanceof cc.Vec3) {
+i = e.y;
+n = e.z;
+e = e.x;
+} else {
+i = i || 0;
+n = n || 0;
+}
+cc.vmath.quat.fromEuler(r, e, i, n);
+}
+return !0;
+}
+return !1;
+},
+clone: function() {
+var t = new cc.Rotate3DTo();
+this._cloneDecoration(t);
+t.initWithDuration(this._duration, this._dstQuat);
+return t;
+},
+startWithTarget: function(t) {
+cc.ActionInterval.prototype.startWithTarget.call(this, t);
+this._startQuat.set(t.quat);
+},
+reverse: function() {
+cc.logID(1016);
+},
+update: function(t) {
+t = this._computeEaseTime(t);
+if (this.target) {
+n.slerp(r, this._startQuat, this._dstQuat, t);
+this.target.setRotation(r);
+}
+}
+});
+cc.rotate3DTo = function(t, e, i, n) {
+return new cc.Rotate3DTo(t, e, i, n);
+};
+cc.Rotate3DBy = cc.Class({
+name: "cc.Rotate3DBy",
+extends: cc.ActionInterval,
+ctor: function(t, e, i, n) {
+this._angle = cc.v3();
+this._quat = cc.quat();
+this._lastDt = 0;
+void 0 !== e && this.initWithDuration(t, e, i, n);
+},
+initWithDuration: function(t, e, i, n) {
+if (cc.ActionInterval.prototype.initWithDuration.call(this, t)) {
+if (e instanceof cc.Vec3) {
+i = e.y;
+n = e.z;
+e = e.x;
+} else {
+i = i || 0;
+n = n || 0;
+}
+cc.vmath.vec3.set(this._angle, e, i, n);
+return !0;
+}
+return !1;
+},
+clone: function() {
+var t = new cc.Rotate3DBy();
+this._cloneDecoration(t);
+t.initWithDuration(this._duration, this._angle);
+return t;
+},
+startWithTarget: function(t) {
+cc.ActionInterval.prototype.startWithTarget.call(this, t);
+this._quat.set(t.quat);
+this._lastDt = 0;
+},
+update: (function() {
+var t = Math.PI / 180;
+return function(e) {
+e = this._computeEaseTime(e);
+if (this.target) {
+var i = this._angle, r = this._quat, s = e - this._lastDt, o = i.x, a = i.y, c = i.z;
+o && n.rotateX(r, r, o * t * s);
+a && n.rotateY(r, r, a * t * s);
+c && n.rotateZ(r, r, c * t * s);
+this.target.setRotation(r);
+this._lastDt = e;
+}
+};
+})(),
+reverse: function() {
+var t = this._angle;
+s.x = -t.x;
+s.y = -t.y;
+s.z = -t.z;
+var e = new cc.Rotate3DBy(this._duration, s);
+this._cloneDecoration(e);
+this._reverseEaseList(e);
+return e;
+}
+});
+cc.rotate3DBy = function(t, e, i, n) {
+return new cc.Rotate3DBy(t, e, i, n);
+};
+}), {} ],
+29: [ (function(t, e, i) {
+"use strict";
+t("./polyfill-3d");
+t("./primitive");
+t("./CCModel");
+t("./skeleton/CCSkeleton");
+t("./skeleton/CCSkeletonAnimationClip");
+t("./actions");
+t("./skeleton/CCSkeletonAnimation");
+t("./skeleton/CCSkinnedMeshRenderer");
+t("./skeleton/skinned-mesh-renderer");
+t("./CCLightComponent");
+}), {
+"./CCLightComponent": 26,
+"./CCModel": 27,
+"./actions": 28,
+"./polyfill-3d": 30,
+"./primitive": 35,
+"./skeleton/CCSkeleton": 44,
+"./skeleton/CCSkeletonAnimation": 45,
+"./skeleton/CCSkeletonAnimationClip": 46,
+"./skeleton/CCSkinnedMeshRenderer": 47,
+"./skeleton/skinned-mesh-renderer": 48
+} ],
+30: [ (function(i, n, r) {
+"use strict";
+var s = i("../vmath"), o = i("../CCNode"), a = o.EventType, c = o._LocalDirtyFlag, l = i("../renderer/render-flow"), h = Math.PI / 180, u = 1, _ = 2;
+function f() {
+if (this._localMatDirty) {
+var t = this._matrix;
+s.mat4.fromRTS(t, this._quat, this._position, this._scale);
+if (this._skewX || this._skewY) {
+var e = t.m00, i = t.m01, n = t.m04, r = t.m05, o = Math.tan(this._skewX * h), a = Math.tan(this._skewY * h);
+Infinity === o && (o = 99999999);
+Infinity === a && (a = 99999999);
+t.m00 = e + n * a;
+t.m01 = i + r * a;
+t.m04 = n + e * o;
+t.m05 = r + i * o;
+}
+this._localMatDirty = 0;
+this._worldMatDirty = !0;
+}
+}
+function d() {
+this._localMatDirty && this._updateLocalMatrix();
+if (this._parent) {
+var t = this._parent._worldMatrix;
+s.mat4.mul(this._worldMatrix, t, this._matrix);
+} else s.mat4.copy(this._worldMatrix, this._matrix);
+this._worldMatDirty = !1;
+}
+function m(t, e, i) {
+var n = void 0;
+if (void 0 === e) {
+n = t.x;
+e = t.y;
+i = t.z || 0;
+} else {
+n = t;
+i = i || 0;
+}
+var r = this._position;
+if (r.x !== n || r.y !== e || r.z !== i) {
+r.x = n;
+r.y = e;
+r.z = i;
+this.setLocalDirty(c.POSITION);
+this._renderFlag |= l.FLAG_WORLD_TRANSFORM;
+this._eventMask & u && this.emit(a.POSITION_CHANGED);
+}
+}
+var p = cc.Node.prototype, v = p._updateLocalMatrix, y = p._calculWorldMatrix, g = p._upgrade_1x_to_2x, x = p._mulMat;
+p.setPosition = m;
+p.setScale = function(i, n, r) {
+if (i && "number" !== ("object" == (e = typeof i) ? t(i) : e)) {
+n = i.y;
+r = i.z || 1;
+i = i.x;
+} else if (void 0 !== i && void 0 === n) {
+n = i;
+r = i;
+} else void 0 === r && (r = 1);
+if (this._scale.x !== i || this._scale.y !== n || this._scale.z !== r) {
+this._scale.x = i;
+this._scale.y = n;
+this._scale.z = r;
+this.setLocalDirty(c.SCALE);
+this._renderFlag |= l.FLAG_TRANSFORM;
+this._eventMask & _ && this.emit(a.SCALE_CHANGED);
+}
+};
+p._upgrade_1x_to_2x = function() {
+this._is3DNode && this._update3DFunction();
+g.call(this);
+};
+p._update3DFunction = function() {
+if (this._is3DNode) {
+this._updateLocalMatrix = f;
+this._calculWorldMatrix = d;
+this._mulMat = s.mat4.mul;
+} else {
+this._updateLocalMatrix = v;
+this._calculWorldMatrix = y;
+this._mulMat = x;
+}
+this._renderComponent && this._renderComponent._on3DNodeChanged && this._renderComponent._on3DNodeChanged();
+this._renderFlag |= l.FLAG_TRANSFORM;
+this._localMatDirty = c.ALL;
+};
+cc.js.getset(p, "position", p.getPosition, m, !1, !0);
+cc.js.getset(p, "is3DNode", (function() {
+return this._is3DNode;
+}), (function(t) {
+if (this._is3DNode !== t) {
+this._is3DNode = t;
+this._update3DFunction();
+}
+}));
+cc.js.getset(p, "scaleZ", (function() {
+return this._scale.z;
+}), (function(t) {
+if (this._scale.z !== t) {
+this._scale.z = t;
+this.setLocalDirty(c.SCALE);
+this._renderFlag |= l.FLAG_TRANSFORM;
+this._eventMask & _ && this.emit(a.SCALE_CHANGED);
+}
+}));
+cc.js.getset(p, "z", (function() {
+return this._position.z;
+}), (function(t) {
+var e = this._position;
+if (t !== e.z) {
+e.z = t;
+this.setLocalDirty(c.POSITION);
+this._renderFlag |= l.FLAG_WORLD_TRANSFORM;
+this._eventMask & u && this.emit(a.POSITION_CHANGED);
+}
+}));
+cc.js.getset(p, "eulerAngles", (function() {
+return this._quat.toEuler(this._eulerAngles);
+}), (function(t) {
+0;
+this._quat.fromEuler(t);
+this.setLocalDirty(c.ROTATION);
+this._renderFlag |= l.FLAG_TRANSFORM;
+}));
+cc.js.getset(p, "quat", (function() {
+return this._quat;
+}), p.setRotation);
+}), {
+"../CCNode": 52,
+"../renderer/render-flow": 245,
+"../vmath": 317
+} ],
+31: [ (function(t, e, i) {
+"use strict";
+i.__esModule = !0;
+i.default = function() {
+var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : 1, e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 1, i = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : 1, v = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : {}, y = void 0 !== v.widthSegments ? v.widthSegments : 1, g = void 0 !== v.heightSegments ? v.heightSegments : 1, x = void 0 !== v.lengthSegments ? v.lengthSegments : 1, C = void 0 !== v.invWinding && v.invWinding, b = .5 * t, A = .5 * e, S = .5 * i, w = [ n.vec3.set(l, -b, -A, S), n.vec3.set(h, b, -A, S), n.vec3.set(u, b, A, S), n.vec3.set(_, -b, A, S), n.vec3.set(f, b, -A, -S), n.vec3.set(d, -b, -A, -S), n.vec3.set(m, -b, A, -S), n.vec3.set(p, b, A, -S) ], T = [ [ 2, 3, 1 ], [ 4, 5, 7 ], [ 7, 6, 2 ], [ 1, 0, 4 ], [ 1, 4, 2 ], [ 5, 0, 6 ] ], E = [ [ 0, 0, 1 ], [ 0, 0, -1 ], [ 0, 1, 0 ], [ 0, -1, 0 ], [ 1, 0, 0 ], [ -1, 0, 0 ] ], M = [], B = [], D = [], I = [], P = n.vec3.create(-b, -A, -S), R = n.vec3.create(b, A, S), L = Math.sqrt(b * b + A * A + S * S);
+function F(t, e, i) {
+var r = void 0, l = void 0, h = void 0, u = void 0, _ = M.length / 3, f = T[t], d = E[t];
+for (u = 0; u <= i; u++) for (h = 0; h <= e; h++) {
+r = h / e;
+l = u / i;
+n.vec3.lerp(s, w[f[0]], w[f[1]], r);
+n.vec3.lerp(o, w[f[0]], w[f[2]], l);
+n.vec3.sub(a, o, w[f[0]]);
+n.vec3.add(c, s, a);
+M.push(c.x, c.y, c.z);
+B.push(d[0], d[1], d[2]);
+D.push(r, l);
+if (h < e && u < i) {
+var m = e + 1, p = h + u * m, v = h + (u + 1) * m, y = h + 1 + (u + 1) * m, g = h + 1 + u * m;
+if (C) {
+I.push(_ + p, _ + v, _ + g);
+I.push(_ + g, _ + v, _ + y);
+} else {
+I.push(_ + p, _ + g, _ + v);
+I.push(_ + v, _ + g, _ + y);
+}
+}
+}
+}
+F(0, y, g);
+F(4, x, g);
+F(1, y, g);
+F(5, x, g);
+F(3, y, x);
+F(2, y, x);
+return new r.default(M, B, D, I, P, R, L);
+};
+var n = t("../../vmath"), r = (function(t) {
+return t && t.__esModule ? t : {
+default: t
+};
+})(t("./vertex-data"));
+var s = n.vec3.create(0, 0, 0), o = n.vec3.create(0, 0, 0), a = n.vec3.create(0, 0, 0), c = n.vec3.create(0, 0, 0), l = n.vec3.create(0, 0, 0), h = n.vec3.create(0, 0, 0), u = n.vec3.create(0, 0, 0), _ = n.vec3.create(0, 0, 0), f = n.vec3.create(0, 0, 0), d = n.vec3.create(0, 0, 0), m = n.vec3.create(0, 0, 0), p = n.vec3.create(0, 0, 0);
+e.exports = i.default;
+}), {
+"../../vmath": 317,
+"./vertex-data": 42
+} ],
+32: [ (function(t, e, i) {
+"use strict";
+i.__esModule = !0;
+i.default = function() {
+var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : .5, e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : .5, i = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : 2, a = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : {}, c = i - t - e, l = a.sides || 32, h = a.heightSegments || 32, u = e / i, _ = c / i, f = t / i, d = Math.floor(h * u), m = Math.floor(h * f), p = Math.floor(h * _), v = c + e - i / 2, y = e - i / 2, g = e - i / 2, x = a.arc || 2 * Math.PI, C = [], b = [], A = [], S = [], w = Math.max(t, e), T = n.vec3.create(-w, -i / 2, -w), E = n.vec3.create(w, i / 2, w), M = i / 2, B = 0, D = [];
+(function() {
+for (var t = 0; t <= d; ++t) for (var i = t * Math.PI / d / 2, n = Math.sin(i), r = -Math.cos(i), s = 0; s <= l; ++s) {
+var o = 2 * s * Math.PI / l - Math.PI / 2, a = Math.sin(o), c = Math.cos(o), u = a * n, _ = r, f = c * n, m = s / l, p = t / h;
+C.push(u * e, _ * e + g, f * e);
+b.push(u, _, f);
+A.push(m, p);
+if (t < d && s < l) {
+var v = l + 1, y = v * t + s, x = v * (t + 1) + s, w = v * (t + 1) + s + 1, T = v * t + s + 1;
+S.push(y, T, x);
+S.push(T, w, x);
+}
+++B;
+}
+})();
+(function() {
+for (var i = (t - e) / c, r = 0; r <= p; r++) {
+for (var a = [], h = r / p, f = h * (t - e) + e, d = 0; d <= l; ++d) {
+var m = d / l, v = h * _ + u, g = m * x - x / 4, w = Math.sin(g), T = Math.cos(g);
+C.push(f * w);
+C.push(h * c + y);
+C.push(f * T);
+n.vec3.normalize(s, n.vec3.set(o, w, -i, T));
+b.push(s.x);
+b.push(s.y);
+b.push(s.z);
+A.push(m, v);
+a.push(B);
+++B;
+}
+D.push(a);
+}
+for (var E = 0; E < p; ++E) for (var M = 0; M < l; ++M) {
+var I = D[E][M], P = D[E + 1][M], R = D[E + 1][M + 1], L = D[E][M + 1];
+S.push(I);
+S.push(L);
+S.push(P);
+S.push(L);
+S.push(R);
+S.push(P);
+}
+})();
+(function() {
+for (var e = 0; e <= m; ++e) for (var i = e * Math.PI / m / 2 + Math.PI / 2, n = Math.sin(i), r = -Math.cos(i), s = 0; s <= l; ++s) {
+var o = 2 * s * Math.PI / l - Math.PI / 2, a = Math.sin(o), c = Math.cos(o), u = a * n, _ = r, d = c * n, y = s / l, g = e / h + (1 - f);
+C.push(u * t, _ * t + v, d * t);
+b.push(u, _, d);
+A.push(y, g);
+if (e < m && s < l) {
+var x = l + 1, w = x * e + s + D[p][l] + 1, T = x * (e + 1) + s + D[p][l] + 1, E = x * (e + 1) + s + 1 + D[p][l] + 1, M = x * e + s + 1 + D[p][l] + 1;
+S.push(w, M, T);
+S.push(M, E, T);
+}
+}
+})();
+return new r.default(C, b, A, S, T, E, M);
+};
+var n = t("../../vmath"), r = (function(t) {
+return t && t.__esModule ? t : {
+default: t
+};
+})(t("./vertex-data"));
+var s = n.vec3.create(0, 0, 0), o = n.vec3.create(0, 0, 0);
+e.exports = i.default;
+}), {
+"../../vmath": 317,
+"./vertex-data": 42
+} ],
+33: [ (function(t, e, i) {
+"use strict";
+i.__esModule = !0;
+i.default = function() {
+var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : .5, e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 1, i = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {};
+return (0, n.default)(0, t, e, i);
+};
+var n = (function(t) {
+return t && t.__esModule ? t : {
+default: t
+};
+})(t("./cylinder"));
+e.exports = i.default;
+}), {
+"./cylinder": 34
+} ],
+34: [ (function(t, e, i) {
+"use strict";
+i.__esModule = !0;
+i.default = function() {
+var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : .5, e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : .5, i = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : 2, a = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : {}, c = .5 * i, l = a.radialSegments || 32, h = a.heightSegments || 1, u = void 0 === a.capped || a.capped, _ = a.arc || 2 * Math.PI, f = 0;
+if (!u) {
+t > 0 && f++;
+e > 0 && f++;
+}
+var d = (l + 1) * (h + 1);
+u && (d += (l + 1) * f + l * f);
+var m = l * h * 2 * 3;
+u && (m += l * f * 3);
+var p = new Array(m), v = new Array(3 * d), y = new Array(3 * d), g = new Array(2 * d), x = Math.max(t, e), C = n.vec3.create(-x, -c, -x), b = n.vec3.create(x, c, x), A = Math.sqrt(x * x + c * c), S = 0, w = 0;
+(function() {
+for (var r = [], a = t - e, u = a * a / i * Math.sign(a), f = 0; f <= h; f++) {
+for (var d = [], m = f / h, x = m * a + e, C = 0; C <= l; ++C) {
+var b = C / l, A = b * _, T = Math.sin(A), E = Math.cos(A);
+v[3 * S] = x * T;
+v[3 * S + 1] = m * i - c;
+v[3 * S + 2] = x * E;
+n.vec3.normalize(s, n.vec3.set(o, T, -u, E));
+y[3 * S] = s.x;
+y[3 * S + 1] = s.y;
+y[3 * S + 2] = s.z;
+g[2 * S] = 2 * (1 - b) % 1;
+g[2 * S + 1] = m;
+d.push(S);
+++S;
+}
+r.push(d);
+}
+for (var M = 0; M < h; ++M) for (var B = 0; B < l; ++B) {
+var D = r[M][B], I = r[M + 1][B], P = r[M + 1][B + 1], R = r[M][B + 1];
+p[w] = D;
+p[++w] = R;
+p[++w] = I;
+p[++w] = R;
+p[++w] = P;
+p[++w] = I;
+++w;
+}
+})();
+if (u) {
+e > 0 && T(!1);
+t > 0 && T(!0);
+}
+return new r.default(v, y, g, p, C, b, A);
+function T(i) {
+var n, r, s = i ? t : e, o = i ? 1 : -1;
+n = S;
+for (var a = 1; a <= l; ++a) {
+v[3 * S] = 0;
+v[3 * S + 1] = c * o;
+v[3 * S + 2] = 0;
+y[3 * S] = 0;
+y[3 * S + 1] = o;
+y[3 * S + 2] = 0;
+g[2 * S] = .5;
+g[2 * S + 1] = .5;
+++S;
+}
+r = S;
+for (var h = 0; h <= l; ++h) {
+var u = h / l * _, f = Math.cos(u), d = Math.sin(u);
+v[3 * S] = s * d;
+v[3 * S + 1] = c * o;
+v[3 * S + 2] = s * f;
+y[3 * S] = 0;
+y[3 * S + 1] = o;
+y[3 * S + 2] = 0;
+g[2 * S] = .5 - .5 * d * o;
+g[2 * S + 1] = .5 + .5 * f;
+++S;
+}
+for (var m = 0; m < l; ++m) {
+var x = n + m, C = r + m;
+if (i) {
+p[w] = C + 1;
+p[++w] = x;
+p[++w] = C;
+++w;
+} else {
+p[w] = x;
+p[++w] = C + 1;
+p[++w] = C;
+++w;
+}
+}
+}
+};
+var n = t("../../vmath"), r = (function(t) {
+return t && t.__esModule ? t : {
+default: t
+};
+})(t("./vertex-data"));
+var s = n.vec3.create(0, 0, 0), o = n.vec3.create(0, 0, 0);
+e.exports = i.default;
+}), {
+"../../vmath": 317,
+"./vertex-data": 42
+} ],
+35: [ (function(t, e, i) {
+"use strict";
+var n = d(t("./utils")), r = d(t("./box")), s = d(t("./cone")), o = d(t("./cylinder")), a = d(t("./plane")), c = d(t("./quad")), l = d(t("./sphere")), h = d(t("./torus")), u = d(t("./capsule")), _ = t("./polyhedron"), f = d(t("./vertex-data"));
+function d(t) {
+return t && t.__esModule ? t : {
+default: t
+};
+}
+cc.primitive = Object.assign({
+box: r.default,
+cone: s.default,
+cylinder: o.default,
+plane: a.default,
+quad: c.default,
+sphere: l.default,
+torus: h.default,
+capsule: u.default,
+polyhedron: _.polyhedron,
+PolyhedronType: _.PolyhedronType,
+VertexData: f.default
+}, n.default);
+}), {
+"./box": 31,
+"./capsule": 32,
+"./cone": 33,
+"./cylinder": 34,
+"./plane": 36,
+"./polyhedron": 37,
+"./quad": 38,
+"./sphere": 39,
+"./torus": 40,
+"./utils": 41,
+"./vertex-data": 42
+} ],
+36: [ (function(t, e, i) {
+"use strict";
+i.__esModule = !0;
+i.default = function() {
+var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : 10, e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 10, i = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {}, _ = void 0 !== i.widthSegments ? i.widthSegments : 10, f = void 0 !== i.lengthSegments ? i.lengthSegments : 10, d = .5 * t, m = .5 * e, p = [], v = [], y = [], g = [], x = n.vec3.create(-d, 0, -m), C = n.vec3.create(d, 0, m), b = Math.sqrt(t * t + e * e);
+n.vec3.set(l, -d, 0, m);
+n.vec3.set(h, d, 0, m);
+n.vec3.set(u, -d, 0, -m);
+for (var A = 0; A <= f; A++) for (var S = 0; S <= _; S++) {
+var w = S / _, T = A / f;
+n.vec3.lerp(s, l, h, w);
+n.vec3.lerp(o, l, u, T);
+n.vec3.sub(a, o, l);
+n.vec3.add(c, s, a);
+p.push(c.x, c.y, c.z);
+v.push(0, 1, 0);
+y.push(w, T);
+if (S < _ && A < f) {
+var E = _ + 1, M = S + A * E, B = S + (A + 1) * E, D = S + 1 + (A + 1) * E, I = S + 1 + A * E;
+g.push(M, I, B);
+g.push(I, D, B);
+}
+}
+return new r.default(p, v, y, g, x, C, b);
+};
+var n = t("../../vmath"), r = (function(t) {
+return t && t.__esModule ? t : {
+default: t
+};
+})(t("./vertex-data"));
+var s = n.vec3.create(0, 0, 0), o = n.vec3.create(0, 0, 0), a = n.vec3.create(0, 0, 0), c = n.vec3.create(0, 0, 0), l = n.vec3.create(0, 0, 0), h = n.vec3.create(0, 0, 0), u = n.vec3.create(0, 0, 0);
+e.exports = i.default;
+}), {
+"../../vmath": 317,
+"./vertex-data": 42
+} ],
+37: [ (function(t, e, i) {
+"use strict";
+i.__esModule = !0;
+i.polyhedron = i.PolyhedronType = void 0;
+var n = t("./utils"), r = t("../../vmath"), s = (function(t) {
+return t && t.__esModule ? t : {
+default: t
+};
+})(t("./vertex-data"));
+i.PolyhedronType = cc.Enum({
+Tetrahedron: 0,
+Octahedron: 1,
+Dodecahedron: 2,
+Icosahedron: 3,
+Rhombicuboctahedron: 4,
+TriangularPrism: 5,
+PentagonalPrism: 6,
+HexagonalPrism: 7,
+SquarePyramid: 8,
+PentagonalPyramid: 9,
+TriangularDipyramid: 10,
+PentagonalDipyramid: 11,
+ElongatedSquareDipyramid: 12,
+ElongatedPentagonalDipyramid: 13,
+ElongatedPentagonalCupola: 14
+});
+var o = [];
+o[0] = {
+vertex: [ [ 0, 0, 1.732051 ], [ 1.632993, 0, -.5773503 ], [ -.8164966, 1.414214, -.5773503 ], [ -.8164966, -1.414214, -.5773503 ] ],
+face: [ [ 0, 1, 2 ], [ 0, 2, 3 ], [ 0, 3, 1 ], [ 1, 3, 2 ] ]
+};
+o[1] = {
+vertex: [ [ 0, 0, 1.414214 ], [ 1.414214, 0, 0 ], [ 0, 1.414214, 0 ], [ -1.414214, 0, 0 ], [ 0, -1.414214, 0 ], [ 0, 0, -1.414214 ] ],
+face: [ [ 0, 1, 2 ], [ 0, 2, 3 ], [ 0, 3, 4 ], [ 0, 4, 1 ], [ 1, 4, 5 ], [ 1, 5, 2 ], [ 2, 5, 3 ], [ 3, 5, 4 ] ]
+};
+o[2] = {
+vertex: [ [ 0, 0, 1.070466 ], [ .7136442, 0, .7978784 ], [ -.3568221, .618034, .7978784 ], [ -.3568221, -.618034, .7978784 ], [ .7978784, .618034, .3568221 ], [ .7978784, -.618034, .3568221 ], [ -.9341724, .381966, .3568221 ], [ .1362939, 1, .3568221 ], [ .1362939, -1, .3568221 ], [ -.9341724, -.381966, .3568221 ], [ .9341724, .381966, -.3568221 ], [ .9341724, -.381966, -.3568221 ], [ -.7978784, .618034, -.3568221 ], [ -.1362939, 1, -.3568221 ], [ -.1362939, -1, -.3568221 ], [ -.7978784, -.618034, -.3568221 ], [ .3568221, .618034, -.7978784 ], [ .3568221, -.618034, -.7978784 ], [ -.7136442, 0, -.7978784 ], [ 0, 0, -1.070466 ] ],
+face: [ [ 0, 1, 4, 7, 2 ], [ 0, 2, 6, 9, 3 ], [ 0, 3, 8, 5, 1 ], [ 1, 5, 11, 10, 4 ], [ 2, 7, 13, 12, 6 ], [ 3, 9, 15, 14, 8 ], [ 4, 10, 16, 13, 7 ], [ 5, 8, 14, 17, 11 ], [ 6, 12, 18, 15, 9 ], [ 10, 11, 17, 19, 16 ], [ 12, 13, 16, 19, 18 ], [ 14, 15, 18, 19, 17 ] ]
+};
+o[3] = {
+vertex: [ [ 0, 0, 1.175571 ], [ 1.051462, 0, .5257311 ], [ .3249197, 1, .5257311 ], [ -.8506508, .618034, .5257311 ], [ -.8506508, -.618034, .5257311 ], [ .3249197, -1, .5257311 ], [ .8506508, .618034, -.5257311 ], [ .8506508, -.618034, -.5257311 ], [ -.3249197, 1, -.5257311 ], [ -1.051462, 0, -.5257311 ], [ -.3249197, -1, -.5257311 ], [ 0, 0, -1.175571 ] ],
+face: [ [ 0, 1, 2 ], [ 0, 2, 3 ], [ 0, 3, 4 ], [ 0, 4, 5 ], [ 0, 5, 1 ], [ 1, 5, 7 ], [ 1, 7, 6 ], [ 1, 6, 2 ], [ 2, 6, 8 ], [ 2, 8, 3 ], [ 3, 8, 9 ], [ 3, 9, 4 ], [ 4, 9, 10 ], [ 4, 10, 5 ], [ 5, 10, 7 ], [ 6, 7, 11 ], [ 6, 11, 8 ], [ 7, 10, 11 ], [ 8, 11, 9 ], [ 9, 11, 10 ] ]
+};
+o[4] = {
+vertex: [ [ 0, 0, 1.070722 ], [ .7148135, 0, .7971752 ], [ -.104682, .7071068, .7971752 ], [ -.6841528, .2071068, .7971752 ], [ -.104682, -.7071068, .7971752 ], [ .6101315, .7071068, .5236279 ], [ 1.04156, .2071068, .1367736 ], [ .6101315, -.7071068, .5236279 ], [ -.3574067, 1, .1367736 ], [ -.7888348, -.5, .5236279 ], [ -.9368776, .5, .1367736 ], [ -.3574067, -1, .1367736 ], [ .3574067, 1, -.1367736 ], [ .9368776, -.5, -.1367736 ], [ .7888348, .5, -.5236279 ], [ .3574067, -1, -.1367736 ], [ -.6101315, .7071068, -.5236279 ], [ -1.04156, -.2071068, -.1367736 ], [ -.6101315, -.7071068, -.5236279 ], [ .104682, .7071068, -.7971752 ], [ .6841528, -.2071068, -.7971752 ], [ .104682, -.7071068, -.7971752 ], [ -.7148135, 0, -.7971752 ], [ 0, 0, -1.070722 ] ],
+face: [ [ 0, 2, 3 ], [ 1, 6, 5 ], [ 4, 9, 11 ], [ 7, 15, 13 ], [ 8, 16, 10 ], [ 12, 14, 19 ], [ 17, 22, 18 ], [ 20, 21, 23 ], [ 0, 1, 5, 2 ], [ 0, 3, 9, 4 ], [ 0, 4, 7, 1 ], [ 1, 7, 13, 6 ], [ 2, 5, 12, 8 ], [ 2, 8, 10, 3 ], [ 3, 10, 17, 9 ], [ 4, 11, 15, 7 ], [ 5, 6, 14, 12 ], [ 6, 13, 20, 14 ], [ 8, 12, 19, 16 ], [ 9, 17, 18, 11 ], [ 10, 16, 22, 17 ], [ 11, 18, 21, 15 ], [ 13, 15, 21, 20 ], [ 14, 20, 23, 19 ], [ 16, 19, 23, 22 ], [ 18, 22, 23, 21 ] ]
+};
+o[5] = {
+vertex: [ [ 0, 0, 1.322876 ], [ 1.309307, 0, .1889822 ], [ -.9819805, .8660254, .1889822 ], [ .1636634, -1.299038, .1889822 ], [ .3273268, .8660254, -.9449112 ], [ -.8183171, -.4330127, -.9449112 ] ],
+face: [ [ 0, 3, 1 ], [ 2, 4, 5 ], [ 0, 1, 4, 2 ], [ 0, 2, 5, 3 ], [ 1, 3, 5, 4 ] ]
+};
+o[6] = {
+vertex: [ [ 0, 0, 1.159953 ], [ 1.013464, 0, .5642542 ], [ -.3501431, .9510565, .5642542 ], [ -.7715208, -.6571639, .5642542 ], [ .6633206, .9510565, -.03144481 ], [ .8682979, -.6571639, -.3996071 ], [ -1.121664, .2938926, -.03144481 ], [ -.2348831, -1.063314, -.3996071 ], [ .5181548, .2938926, -.9953061 ], [ -.5850262, -.112257, -.9953061 ] ],
+face: [ [ 0, 1, 4, 2 ], [ 0, 2, 6, 3 ], [ 1, 5, 8, 4 ], [ 3, 6, 9, 7 ], [ 5, 7, 9, 8 ], [ 0, 3, 7, 5, 1 ], [ 2, 4, 8, 9, 6 ] ]
+};
+o[7] = {
+vertex: [ [ 0, 0, 1.118034 ], [ .8944272, 0, .6708204 ], [ -.2236068, .8660254, .6708204 ], [ -.7826238, -.4330127, .6708204 ], [ .6708204, .8660254, .2236068 ], [ 1.006231, -.4330127, -.2236068 ], [ -1.006231, .4330127, .2236068 ], [ -.6708204, -.8660254, -.2236068 ], [ .7826238, .4330127, -.6708204 ], [ .2236068, -.8660254, -.6708204 ], [ -.8944272, 0, -.6708204 ], [ 0, 0, -1.118034 ] ],
+face: [ [ 0, 1, 4, 2 ], [ 0, 2, 6, 3 ], [ 1, 5, 8, 4 ], [ 3, 6, 10, 7 ], [ 5, 9, 11, 8 ], [ 7, 10, 11, 9 ], [ 0, 3, 7, 9, 5, 1 ], [ 2, 4, 8, 11, 10, 6 ] ]
+};
+o[8] = {
+vertex: [ [ -.729665, .670121, .319155 ], [ -.655235, -.29213, -.754096 ], [ -.093922, -.607123, .537818 ], [ .702196, .595691, .485187 ], [ .776626, -.36656, -.588064 ] ],
+face: [ [ 1, 4, 2 ], [ 0, 1, 2 ], [ 3, 0, 2 ], [ 4, 3, 2 ], [ 4, 1, 0, 3 ] ]
+};
+o[9] = {
+vertex: [ [ -.868849, -.100041, .61257 ], [ -.329458, .976099, .28078 ], [ -.26629, -.013796, -.477654 ], [ -.13392, -1.034115, .229829 ], [ .738834, .707117, -.307018 ], [ .859683, -.535264, -.338508 ] ],
+face: [ [ 3, 0, 2 ], [ 5, 3, 2 ], [ 4, 5, 2 ], [ 1, 4, 2 ], [ 0, 1, 2 ], [ 0, 3, 5, 4, 1 ] ]
+};
+o[10] = {
+vertex: [ [ -.610389, .243975, .531213 ], [ -.187812, -.48795, -.664016 ], [ -.187812, .9759, -.664016 ], [ .187812, -.9759, .664016 ], [ .798201, .243975, .132803 ] ],
+face: [ [ 1, 3, 0 ], [ 3, 4, 0 ], [ 3, 1, 4 ], [ 0, 2, 1 ], [ 0, 4, 2 ], [ 2, 4, 1 ] ]
+};
+o[11] = {
+vertex: [ [ -1.028778, .392027, -.048786 ], [ -.640503, -.646161, .621837 ], [ -.125162, -.395663, -.540059 ], [ .004683, .888447, -.651988 ], [ .125161, .395663, .540059 ], [ .632925, -.791376, .433102 ], [ 1.031672, .157063, -.354165 ] ],
+face: [ [ 3, 2, 0 ], [ 2, 1, 0 ], [ 2, 5, 1 ], [ 0, 4, 3 ], [ 0, 1, 4 ], [ 4, 1, 5 ], [ 2, 3, 6 ], [ 3, 4, 6 ], [ 5, 2, 6 ], [ 4, 5, 6 ] ]
+};
+o[12] = {
+vertex: [ [ -.669867, .334933, -.529576 ], [ -.669867, .334933, .529577 ], [ -.4043, 1.212901, 0 ], [ -.334933, -.669867, -.529576 ], [ -.334933, -.669867, .529577 ], [ .334933, .669867, -.529576 ], [ .334933, .669867, .529577 ], [ .4043, -1.212901, 0 ], [ .669867, -.334933, -.529576 ], [ .669867, -.334933, .529577 ] ],
+face: [ [ 8, 9, 7 ], [ 6, 5, 2 ], [ 3, 8, 7 ], [ 5, 0, 2 ], [ 4, 3, 7 ], [ 0, 1, 2 ], [ 9, 4, 7 ], [ 1, 6, 2 ], [ 9, 8, 5, 6 ], [ 8, 3, 0, 5 ], [ 3, 4, 1, 0 ], [ 4, 9, 6, 1 ] ]
+};
+o[13] = {
+vertex: [ [ -.931836, .219976, -.264632 ], [ -.636706, .318353, .692816 ], [ -.613483, -.735083, -.264632 ], [ -.326545, .979634, 0 ], [ -.318353, -.636706, .692816 ], [ -.159176, .477529, -.856368 ], [ .159176, -.477529, -.856368 ], [ .318353, .636706, .692816 ], [ .326545, -.979634, 0 ], [ .613482, .735082, -.264632 ], [ .636706, -.318353, .692816 ], [ .931835, -.219977, -.264632 ] ],
+face: [ [ 11, 10, 8 ], [ 7, 9, 3 ], [ 6, 11, 8 ], [ 9, 5, 3 ], [ 2, 6, 8 ], [ 5, 0, 3 ], [ 4, 2, 8 ], [ 0, 1, 3 ], [ 10, 4, 8 ], [ 1, 7, 3 ], [ 10, 11, 9, 7 ], [ 11, 6, 5, 9 ], [ 6, 2, 0, 5 ], [ 2, 4, 1, 0 ], [ 4, 10, 7, 1 ] ]
+};
+o[14] = {
+vertex: [ [ -.93465, .300459, -.271185 ], [ -.838689, -.260219, -.516017 ], [ -.711319, .717591, .128359 ], [ -.710334, -.156922, .080946 ], [ -.599799, .556003, -.725148 ], [ -.503838, -.004675, -.969981 ], [ -.487004, .26021, .48049 ], [ -.460089, -.750282, -.512622 ], [ -.376468, .973135, -.325605 ], [ -.331735, -.646985, .084342 ], [ -.254001, .831847, .530001 ], [ -.125239, -.494738, -.966586 ], [ .029622, .027949, .730817 ], [ .056536, -.982543, -.262295 ], [ .08085, 1.087391, .076037 ], [ .125583, -.532729, .485984 ], [ .262625, .599586, .780328 ], [ .391387, -.726999, -.716259 ], [ .513854, -.868287, .139347 ], [ .597475, .85513, .326364 ], [ .641224, .109523, .783723 ], [ .737185, -.451155, .538891 ], [ .848705, -.612742, -.314616 ], [ .976075, .365067, .32976 ], [ 1.072036, -.19561, .084927 ] ],
+face: [ [ 15, 18, 21 ], [ 12, 20, 16 ], [ 6, 10, 2 ], [ 3, 0, 1 ], [ 9, 7, 13 ], [ 2, 8, 4, 0 ], [ 0, 4, 5, 1 ], [ 1, 5, 11, 7 ], [ 7, 11, 17, 13 ], [ 13, 17, 22, 18 ], [ 18, 22, 24, 21 ], [ 21, 24, 23, 20 ], [ 20, 23, 19, 16 ], [ 16, 19, 14, 10 ], [ 10, 14, 8, 2 ], [ 15, 9, 13, 18 ], [ 12, 15, 21, 20 ], [ 6, 12, 16, 10 ], [ 3, 6, 2, 0 ], [ 9, 3, 1, 7 ], [ 9, 15, 12, 6, 3 ], [ 22, 17, 11, 5, 4, 8, 14, 19, 23, 24 ] ]
+};
+i.polyhedron = function(t) {
+var e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 1, i = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {};
+t = t && (t < 0 || t >= o.length) ? 0 : t || 0;
+for (var a = i.sizeX || e, c = i.sizeY || e, l = i.sizeZ || e, h = o[t], u = h.face.length, _ = [], f = [], d = [], m = [], p = r.vec3.create(Infinity, Infinity, Infinity), v = r.vec3.create(-Infinity, -Infinity, -Infinity), y = 0; y < h.vertex.length; y++) {
+var g = h.vertex[y][0] * a, x = h.vertex[y][1] * c, C = h.vertex[y][2] * l;
+p.x = Math.min(p.x, g);
+p.y = Math.min(p.y, x);
+p.z = Math.min(p.z, C);
+v.x = Math.max(v.x, g);
+v.y = Math.max(v.y, x);
+v.z = Math.max(v.z, C);
+_.push(g, x, C);
+m.push(0, 0);
+}
+for (var b = 0; b < u; b++) for (var A = 0; A < h.face[b].length - 2; A++) f.push(h.face[b][0], h.face[b][A + 2], h.face[b][A + 1]);
+(0, n.calcNormals)(_, f, d);
+var S = Math.sqrt(Math.pow(v.x - p.x, 2), Math.pow(v.y - p.y, 2), Math.pow(v.z - p.z, 2));
+return new s.default(_, d, m, f, p, v, S);
+};
+}), {
+"../../vmath": 317,
+"./utils": 41,
+"./vertex-data": 42
+} ],
+38: [ (function(t, e, i) {
+"use strict";
+i.__esModule = !0;
+i.default = function() {
+return new r.default(s, c, o, a, l, h, u);
+};
+var n = t("../../vmath"), r = (function(t) {
+return t && t.__esModule ? t : {
+default: t
+};
+})(t("./vertex-data"));
+var s = [ -.5, -.5, 0, -.5, .5, 0, .5, .5, 0, .5, -.5, 0 ], o = [ 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1 ], a = [ 0, 0, 0, 1, 1, 1, 1, 0 ], c = [ 0, 3, 1, 3, 2, 1 ], l = n.vec3.create(-.5, -.5, 0), h = n.vec3.create(.5, .5, 0), u = Math.sqrt(.5);
+e.exports = i.default;
+}), {
+"../../vmath": 317,
+"./vertex-data": 42
+} ],
+39: [ (function(t, e, i) {
+"use strict";
+i.__esModule = !0;
+i.default = function() {
+for (var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : .5, e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {}, i = void 0 !== e.segments ? e.segments : 32, s = [], o = [], a = [], c = [], l = n.vec3.create(-t, -t, -t), h = n.vec3.create(t, t, t), u = t, _ = 0; _ <= i; ++_) for (var f = _ * Math.PI / i, d = Math.sin(f), m = -Math.cos(f), p = 0; p <= i; ++p) {
+var v = 2 * p * Math.PI / i - Math.PI / 2, y = Math.sin(v) * d, g = m, x = Math.cos(v) * d, C = p / i, b = _ / i;
+s.push(y * t, g * t, x * t);
+o.push(y, g, x);
+a.push(C, b);
+if (_ < i && p < i) {
+var A = i + 1, S = A * _ + p, w = A * (_ + 1) + p, T = A * (_ + 1) + p + 1, E = A * _ + p + 1;
+c.push(S, E, w);
+c.push(E, T, w);
+}
+}
+return new r.default(s, c, o, a, l, h, u);
+};
+var n = t("../../vmath"), r = (function(t) {
+return t && t.__esModule ? t : {
+default: t
+};
+})(t("./vertex-data"));
+e.exports = i.default;
+}), {
+"../../vmath": 317,
+"./vertex-data": 42
+} ],
+40: [ (function(t, e, i) {
+"use strict";
+i.__esModule = !0;
+i.default = function() {
+for (var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : .4, e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : .1, i = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {}, s = i.radialSegments || 32, o = i.tubularSegments || 32, a = i.arc || 2 * Math.PI, c = [], l = [], h = [], u = [], _ = n.vec3.create(-t - e, -e, -t - e), f = n.vec3.create(t + e, e, t + e), d = t + e, m = 0; m <= s; m++) for (var p = 0; p <= o; p++) {
+var v = p / o, y = m / s, g = v * a, x = y * Math.PI * 2, C = (t + e * Math.cos(x)) * Math.sin(g), b = e * Math.sin(x), A = (t + e * Math.cos(x)) * Math.cos(g), S = Math.sin(g) * Math.cos(x), w = Math.sin(x), T = Math.cos(g) * Math.cos(x);
+c.push(C, b, A);
+l.push(S, w, T);
+h.push(v, y);
+if (p < o && m < s) {
+var E = o + 1, M = E * m + p, B = E * (m + 1) + p, D = E * (m + 1) + p + 1, I = E * m + p + 1;
+u.push(M, I, B);
+u.push(I, D, B);
+}
+}
+return new r.default(c, l, h, u, _, f, d);
+};
+var n = t("../../vmath"), r = (function(t) {
+return t && t.__esModule ? t : {
+default: t
+};
+})(t("./vertex-data"));
+e.exports = i.default;
+}), {
+"../../vmath": 317,
+"./vertex-data": 42
+} ],
+41: [ (function(t, e, i) {
+"use strict";
+i.__esModule = !0;
+i.wireframe = function(t) {
+for (var e = [ [ 0, 1 ], [ 1, 2 ], [ 2, 0 ] ], i = [], n = {}, r = 0; r < t.length; r += 3) for (var s = 0; s < 3; ++s) {
+var o = t[r + e[s][0]], a = t[r + e[s][1]], c = o > a ? a << 16 | o : o << 16 | a;
+if (void 0 === n[c]) {
+n[c] = 0;
+i.push(o, a);
+}
+}
+return i;
+};
+i.invWinding = function(t) {
+for (var e = [], i = 0; i < t.length; i += 3) e.push(t[i], t[i + 2], t[i + 1]);
+return e;
+};
+i.toWavefrontOBJ = function(t) {
+for (var e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 1, i = t.positions, n = t.uvs, r = t.normals, s = t.indices, o = function(t) {
+return s[t] + 1 + "/" + (s[t] + 1) + "/" + (s[t] + 1);
+}, a = "", c = 0; c < i.length; c += 3) a += "v " + i[c] * e + " " + i[c + 1] * e + " " + i[c + 2] * e + "\n";
+for (var l = 0; l < n.length; l += 2) a += "vt " + n[l] + " " + n[l + 1] + "\n";
+for (var h = 0; h < r.length; h += 3) a += "vn " + r[h] + " " + r[h + 1] + " " + r[h + 2] + "\n";
+for (var u = 0; u < s.length; u += 3) a += "f " + o(u) + " " + o(u + 1) + " " + o(u + 2) + "\n";
+return a;
+};
+i.normals = function(t, e) {
+for (var i = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : 1, n = new Array(2 * t.length), r = 0; r < t.length / 3; ++r) {
+var s = 3 * r, o = 6 * r;
+n[o + 0] = t[s + 0];
+n[o + 1] = t[s + 1];
+n[o + 2] = t[s + 2];
+n[o + 3] = t[s + 0] + e[s + 0] * i;
+n[o + 4] = t[s + 1] + e[s + 1] * i;
+n[o + 5] = t[s + 2] + e[s + 2] * i;
+}
+return n;
+};
+i.calcNormals = function(t, e, i) {
+for (var s = 0, o = (i = i || new Array(t.length)).length; s < o; s++) i[s] = 0;
+for (var a = void 0, c = void 0, l = void 0, h = cc.v3(), u = cc.v3(), _ = cc.v3(), f = cc.v3(), d = cc.v3(), m = 0, p = e.length; m < p; m += 3) {
+a = 3 * e[m + 0];
+c = 3 * e[m + 1];
+l = 3 * e[m + 2];
+r(h, t, a);
+r(u, t, c);
+r(_, t, l);
+n.vec3.sub(f, _, u);
+n.vec3.sub(d, h, u);
+n.vec3.cross(f, f, d);
+i[a] += f.x;
+i[a + 1] += f.y;
+i[a + 2] += f.z;
+i[c] += f.x;
+i[c + 1] += f.y;
+i[c + 2] += f.z;
+i[l] += f.x;
+i[l + 1] += f.y;
+i[l + 2] += f.z;
+}
+for (var v = cc.v3(), y = 0, g = i.length; y < g; y += 3) {
+v.x = i[y];
+v.y = i[y + 1];
+v.z = i[y + 2];
+v.normalizeSelf();
+i[y] = v.x;
+i[y + 1] = v.y;
+i[y + 2] = v.z;
+}
+return i;
+};
+var n = t("../../vmath");
+function r(t, e, i) {
+t.x = e[i];
+t.y = e[i + 1];
+t.z = e[i + 2];
+}
+}), {
+"../../vmath": 317
+} ],
+42: [ (function(t, e, i) {
+"use strict";
+i.__esModule = !0;
+i.default = function(t, e, i, n, r, s, o) {
+this.positions = t;
+this.normals = e;
+this.uvs = i;
+this.indices = n;
+this.minPos = r;
+this.maxPos = s;
+this.boundingRadius = o;
+};
+e.exports = i.default;
+}), {} ],
+43: [ (function(t, e, i) {
+"use strict";
+var n = t("../../../animation/animation-curves"), r = n.DynamicAnimCurve, s = n.quickFindIndex, o = cc.Class({
+name: "cc.JointMatrixCurve",
+extends: r,
+_findFrameIndex: s,
+sample: function(t, e) {
+var i = this.ratios, n = this._findFrameIndex(i, e);
+n < -1 && (n = ~n - 1);
+for (var r = this.pairs, s = 0; s < r.length; s++) {
+var o = r[s];
+o.target._jointMatrix = o.values[n];
+}
+}
+});
+e.exports = o;
+}), {
+"../../../animation/animation-curves": 11
+} ],
+44: [ (function(t, e, i) {
+"use strict";
+var n = cc.Class({
+name: "cc.Skeleton",
+extends: cc.Asset,
+ctor: function() {
+this._bindposes = [];
+this._uniqueBindPoses = [];
+this._jointPaths = [];
+},
+properties: {
+_model: cc.Model,
+_jointIndices: [],
+_skinIndex: -1,
+jointPaths: {
+get: function() {
+return this._jointPaths;
+}
+},
+bindposes: {
+get: function() {
+return this._bindposes;
+}
+},
+uniqueBindPoses: {
+get: function() {
+return this._uniqueBindPoses;
+}
+},
+model: {
+get: function() {
+return this._model;
+}
+}
+},
+onLoad: function() {
+for (var t = this._model.nodes, e = this._jointIndices, i = this._jointPaths, n = this._bindposes, r = this._uniqueBindPoses, s = 0; s < e.length; s++) {
+var o = t[e[s]];
+i[s] = o.path;
+o.uniqueBindPose ? n[s] = r[s] = o.uniqueBindPose : n[s] = o.bindpose[this._skinIndex];
+}
+}
+});
+cc.Skeleton = e.exports = n;
+}), {} ],
+45: [ (function(t, e, i) {
+"use strict";
+var n = t("../../components/CCAnimation"), r = t("../CCModel"), s = t("./CCSkeletonAnimationClip"), o = cc.Class({
+name: "cc.SkeletonAnimation",
+extends: n,
+editor: !1,
+properties: {
+_model: {
+default: null,
+type: r
+},
+_defaultClip: {
+override: !0,
+default: null,
+type: s
+},
+_clips: {
+override: !0,
+default: [],
+type: [ s ],
+visible: !0
+},
+defaultClip: {
+override: !0,
+get: function() {
+return this._defaultClip;
+},
+set: function(t) {
+this._defaultClip = t;
+},
+type: s
+},
+model: {
+get: function() {
+return this._model;
+},
+set: function(t) {
+this._model = t;
+this._updateClipModel();
+},
+type: r
+}
+},
+__preload: function() {
+this._updateClipModel();
+},
+_updateClipModel: function() {
+this._defaultClip && (this._defaultClip._model = this._model);
+for (var t = this._clips, e = 0; e < t.length; e++) t[e]._model = this._model;
+},
+addClip: function(t, e) {
+t._model = this._model;
+return n.prototype.addClip.call(this, t, e);
+},
+searchClips: !1
+});
+cc.SkeletonAnimation = e.exports = o;
+}), {
+"../../components/CCAnimation": 90,
+"../CCModel": 27,
+"./CCSkeletonAnimationClip": 46,
+"fire-path": void 0
+} ],
+46: [ (function(t, e, i) {
+"use strict";
+var n = (function(t) {
+return t && t.__esModule ? t : {
+default: t
+};
+})(t("../../vmath/mat4"));
+var r = t("../../../animation/animation-clip"), s = t("./CCJointMatrixCurve");
+function o(t) {
+var e = new Float32Array(16);
+e[0] = t.m00;
+e[1] = t.m01;
+e[2] = t.m02;
+e[3] = t.m03;
+e[4] = t.m04;
+e[5] = t.m05;
+e[6] = t.m06;
+e[7] = t.m07;
+e[8] = t.m08;
+e[9] = t.m09;
+e[10] = t.m10;
+e[11] = t.m11;
+e[12] = t.m12;
+e[13] = t.m13;
+e[14] = t.m14;
+e[15] = t.m15;
+return e;
+}
+var a = cc.Class({
+name: "cc.SkeletonAnimationClip",
+extends: r,
+properties: {
+_nativeAsset: {
+override: !0,
+get: function() {
+return this._buffer;
+},
+set: function(t) {
+var e = ArrayBuffer.isView(t) ? t.buffer : t;
+this._buffer = new Float32Array(e || t, 0, e.byteLength / 4);
+}
+},
+description: {
+default: null,
+type: Object
+},
+curveData: {
+visible: !1,
+override: !0,
+get: function() {
+return this._curveData || {};
+},
+set: function() {}
+}
+},
+_init: function() {
+if (this._curveData) return this._curveData;
+this._curveData = {};
+this._generateCommonCurve();
+this._model.precomputeJointMatrix && this._generateJointMatrixCurve();
+return this._curveData;
+},
+_generateCommonCurve: function() {
+var t = this._buffer, e = this.description, i = 0;
+function n() {
+return t[i++];
+}
+this._curveData.paths || (this._curveData.paths = {});
+var r = this._curveData.paths;
+for (var s in e) {
+var o = e[s], a = {};
+r[s] = {
+props: a
+};
+for (var c in o) {
+var l = [], h = o[c].frameCount;
+i = o[c].offset;
+for (var u = 0; u < h; u++) {
+var _ = n(), f = void 0;
+"position" === c || "scale" === c ? f = cc.v3(n(), n(), n()) : "quat" === c && (f = cc.quat(n(), n(), n(), n()));
+l.push({
+frame: _,
+value: f
+});
+}
+a[c] = l;
+}
+}
+},
+_generateJointMatrixCurve: function() {
+var t = this._model.rootNode, e = this._curveData.paths, i = {
+ratios: [],
+jointMatrixMap: {}
+}, r = i.jointMatrixMap;
+function s(i, a, c) {
+var l = void 0, h = e[i.path];
+if (i !== t && h) {
+var u = h.props;
+for (var _ in u) for (var f = u[_], d = 0; d < f.length; d++) {
+var m = f[d];
+if (Math.abs(m.frame - a) < 1e-4) {
+i[_].set(m.value);
+break;
+}
+if (m.frame > a) {
+var p = f[d - 1], v = (a - p.frame) / (m.frame - p.frame);
+p.value.lerp(m.value, v, i[_]);
+break;
+}
+}
+l = n.default.create();
+n.default.fromRTS(l, i.quat, i.position, i.scale);
+c && n.default.mul(l, c, l);
+u._jointMatrix || (u._jointMatrix = []);
+var y = void 0;
+if (i.uniqueBindPose) {
+y = n.default.create();
+n.default.mul(y, l, i.uniqueBindPose);
+}
+r[i.path] || (r[i.path] = []);
+y ? r[i.path].push(o(y)) : r[i.path].push(l);
+}
+var g = i.children;
+for (var x in g) {
+s(g[x], a, l);
+}
+}
+for (var a = 0, c = this.duration, l = 1 / this.sample; a < c; ) {
+i.ratios.push(a / c);
+s(t, a);
+a += l;
+}
+this._curveData = i;
+},
+_createJointMatrixCurve: function(t, e) {
+var i = new s();
+i.ratios = this.curveData.ratios;
+i.pairs = [];
+var n = this.curveData.jointMatrixMap;
+for (var r in n) {
+var o = cc.find(r, e);
+o && i.pairs.push({
+target: o,
+values: n[r]
+});
+}
+return [ i ];
+},
+createCurves: function(t, e) {
+if (!this._model) {
+cc.warn("Skeleton Animation Clip [" + this.name + "] Can not find model");
+return [];
+}
+this._init();
+return this._model.precomputeJointMatrix ? this._createJointMatrixCurve(t, e) : r.prototype.createCurves.call(this, t, e);
+}
+});
+cc.SkeletonAnimationClip = e.exports = a;
+}), {
+"../../../animation/animation-clip": 10,
+"../../vmath/mat4": 321,
+"./CCJointMatrixCurve": 43
+} ],
+47: [ (function(t, e, i) {
+"use strict";
+var n = t("./CCSkeleton"), r = t("../../mesh/CCMeshRenderer"), s = t("../../renderer/render-flow"), o = cc.vmath.mat4, a = o.create(), c = o.create(), l = new cc.Node(), h = cc.Class({
+name: "cc.SkinnedMeshRenderer",
+extends: r,
+editor: !1,
+ctor: function() {
+this._jointsData = this._jointsFloat32Data = null;
+this._jointsTexture = null;
+this._joints = [];
+this._usingRGBA8Texture = !1;
+},
+properties: {
+_skeleton: n,
+_rootBone: cc.Node,
+skeleton: {
+get: function() {
+return this._skeleton;
+},
+set: function(t) {
+this._skeleton = t;
+this._init();
+this._activateMaterial(!0);
+},
+type: n
+},
+rootBone: {
+get: function() {
+return this._rootBone;
+},
+set: function(t) {
+this._rootBone = t;
+this._init();
+},
+type: cc.Node
+}
+},
+_activateMaterial: function(t) {
+this._jointsData ? this._super(t) : this.disableRender();
+},
+__preload: function() {
+this._init();
+},
+_init: function() {
+this._model = this._skeleton && this._skeleton.model;
+this._initJoints();
+this._initJointsTexture();
+},
+_calcWorldMatrixToRoot: function(t) {
+var e = t._worldMatrixToRoot;
+if (!e) {
+t._worldMatrixToRoot = e = cc.mat4();
+t.getLocalMatrix(e);
+var i = t.parent;
+if (i !== this.rootBone) {
+i._worldMatrixToRoot || this._calcWorldMatrixToRoot(i);
+o.mul(e, i._worldMatrixToRoot, e);
+}
+}
+},
+_initJoints: function() {
+var t = this._joints;
+t.length = 0;
+if (this.skeleton && this.rootBone) {
+for (var e = this._useJointMatrix(), i = this.skeleton.jointPaths, n = this.rootBone, r = 0; r < i.length; r++) {
+var c = cc.find(i[r], n);
+c || cc.warn("Can not find joint in root bone [%s] with path [%s]", n.name, i[r]);
+if (e) {
+c._renderFlag &= ~s.FLAG_CHILDREN;
+this._calcWorldMatrixToRoot(c);
+}
+t.push(c);
+}
+if (e) for (var l = this.skeleton.uniqueBindPoses, h = 0; h < i.length; h++) {
+var u = t[h];
+if (l[h]) {
+o.mul(a, u._worldMatrixToRoot, l[h]);
+u._jointMatrix = o.array([], a);
+} else u._jointMatrix = u._worldMatrixToRoot;
+}
+}
+},
+_initJointsTexture: function() {
+if (this._skeleton) {
+var t = this._joints.length, e = this._customProperties, i = !1;
+if (t <= cc.sys.getMaxJointMatrixSize()) {
+i = !0;
+this._jointsData = this._jointsFloat32Data = new Float32Array(16 * t);
+e.setProperty("_jointMatrices", this._jointsFloat32Data);
+e.define("_USE_JOINTS_TEXTRUE", !1);
+}
+if (!i) {
+var n = !!cc.sys.glExtension("OES_texture_float"), r = void 0;
+r = t > 256 ? 64 : t > 64 ? 32 : t > 16 ? 16 : 8;
+this._jointsData = this._jointsFloat32Data = new Float32Array(r * r * 4);
+var s = cc.Texture2D.PixelFormat.RGBA32F, o = r, a = r;
+if (!n) {
+this._jointsData = new Uint8Array(this._jointsFloat32Data.buffer);
+s = cc.Texture2D.PixelFormat.RGBA8888;
+o *= 4;
+this._usingRGBA8Texture = !0;
+cc.warn("SkinnedMeshRenderer [" + this.node.name + "] has too many joints [" + t + "] and device do not support float32 texture, fallback to use RGBA8888 texture, which is much slower.");
+}
+var c = this._jointsTexture || new cc.Texture2D(), l = cc.Texture2D.Filter.NEAREST;
+c.setFilters(l, l);
+c.initWithData(this._jointsData, s, o, a);
+this._jointsTexture = c;
+e.setProperty("_jointsTexture", c.getImpl());
+e.setProperty("_jointsTextureSize", new Float32Array([ o, a ]));
+e.define("_JOINTS_TEXTURE_FLOAT32", n);
+e.define("_USE_JOINTS_TEXTRUE", !0);
+}
+e.define("_USE_SKINNING", !0);
+}
+},
+_setJointsDataWithArray: function(t, e) {
+this._jointsFloat32Data.set(e, 16 * t);
+},
+_setJointsDataWithMatrix: function(t, e) {
+var i = this._jointsFloat32Data;
+i[16 * t + 0] = e.m00;
+i[16 * t + 1] = e.m01;
+i[16 * t + 2] = e.m02;
+i[16 * t + 3] = e.m03;
+i[16 * t + 4] = e.m04;
+i[16 * t + 5] = e.m05;
+i[16 * t + 6] = e.m06;
+i[16 * t + 7] = e.m07;
+i[16 * t + 8] = e.m08;
+i[16 * t + 9] = e.m09;
+i[16 * t + 10] = e.m10;
+i[16 * t + 11] = e.m11;
+i[16 * t + 12] = e.m12;
+i[16 * t + 13] = e.m13;
+i[16 * t + 14] = e.m14;
+i[16 * t + 15] = e.m15;
+},
+_commitJointsData: function() {
+this._jointsTexture && this._jointsTexture.update({
+image: this._jointsData
+});
+},
+_useJointMatrix: function() {
+return this._model && this._model.precomputeJointMatrix;
+},
+getRenderNode: function() {
+return this._useJointMatrix() || this._usingRGBA8Texture ? this.rootBone : l;
+},
+calcJointMatrix: function() {
+if (this.skeleton && this.rootBone) {
+var t = this._joints, e = this.skeleton.bindposes, i = this.skeleton.uniqueBindPoses;
+if (this._useJointMatrix()) for (var n = 0; n < t.length; ++n) {
+var r = t[n]._jointMatrix;
+if (i[n]) this._setJointsDataWithArray(n, r); else {
+o.multiply(a, r, e[n]);
+this._setJointsDataWithMatrix(n, a);
+}
+} else if (this._usingRGBA8Texture) {
+this.rootBone._updateWorldMatrix();
+for (var s = this.rootBone._worldMatrix, l = o.invert(c, s), h = 0; h < t.length; ++h) {
+var u = t[h];
+u._updateWorldMatrix();
+o.multiply(a, l, u._worldMatrix);
+o.multiply(a, a, e[h]);
+this._setJointsDataWithMatrix(h, a);
+}
+} else for (var _ = 0; _ < t.length; ++_) {
+var f = t[_];
+f._updateWorldMatrix();
+o.multiply(a, f._worldMatrix, e[_]);
+this._setJointsDataWithMatrix(_, a);
+}
+this._commitJointsData();
+}
+}
+});
+cc.SkinnedMeshRenderer = e.exports = h;
+}), {
+"../../mesh/CCMeshRenderer": 168,
+"../../renderer/render-flow": 245,
+"./CCSkeleton": 44
+} ],
+48: [ (function(t, e, i) {
+"use strict";
+var n = t("./CCSkinnedMeshRenderer"), r = t("../../mesh/mesh-renderer"), s = cc.js.addon({
+fillBuffers: function(t, e) {
+t.calcJointMatrix();
+r.fillBuffers(t, e);
+}
+}, r);
+e.exports = n._assembler = s;
+}), {
+"../../mesh/mesh-renderer": 171,
+"./CCSkinnedMeshRenderer": 47
+} ],
+49: [ (function(t, e, i) {
+"use strict";
+t("../../DebugInfos");
+var n = "https://github.com/cocos-creator/engine/blob/master/EngineErrorMap.md", r = void 0;
+cc.log = cc.warn = cc.error = cc.assert = console.log.bind ? console.log.bind(console) : console.log;
+cc._throw = function(t) {
+var e = t.stack;
+e ? cc.error(t + "\n" + e) : cc.error(t);
+};
+function s(t) {
+return function() {
+var e = arguments[0], i = t + " " + e + ", please go to " + n + "#" + e + " to see details.";
+if (1 === arguments.length) return i;
+if (2 === arguments.length) return i + " Arguments: " + arguments[1];
+var r = cc.js.shiftArguments.apply(null, arguments);
+return i + " Arguments: " + r.join(", ");
+};
+}
+var o = s("Log");
+cc.logID = function() {
+cc.log(o.apply(null, arguments));
+};
+var a = s("Warning");
+cc.warnID = function() {
+cc.warn(a.apply(null, arguments));
+};
+var c = s("Error");
+cc.errorID = function() {
+cc.error(c.apply(null, arguments));
+};
+var l = s("Assert");
+cc.assertID = function(t) {
+t || cc.assert(!1, l.apply(null, cc.js.shiftArguments.apply(null, arguments)));
+};
+var h = cc.Enum({
+NONE: 0,
+INFO: 1,
+WARN: 2,
+ERROR: 3,
+INFO_FOR_WEB_PAGE: 4,
+WARN_FOR_WEB_PAGE: 5,
+ERROR_FOR_WEB_PAGE: 6
+});
+e.exports = cc.debug = {
+DebugMode: h,
+_resetDebugSetting: function(t) {
+cc.log = cc.warn = cc.error = cc.assert = function() {};
+if (t !== h.NONE) {
+if (t > h.ERROR) {
+var e = function(t) {
+if (cc.game.canvas) {
+if (!r) {
+var e = document.createElement("Div");
+e.setAttribute("id", "logInfoDiv");
+e.setAttribute("width", "200");
+e.setAttribute("height", cc.game.canvas.height);
+var i = e.style;
+i.zIndex = "99999";
+i.position = "absolute";
+i.top = i.left = "0";
+(r = document.createElement("textarea")).setAttribute("rows", "20");
+r.setAttribute("cols", "30");
+r.setAttribute("disabled", "true");
+var n = r.style;
+n.backgroundColor = "transparent";
+n.borderBottom = "1px solid #cccccc";
+n.borderTopWidth = n.borderLeftWidth = n.borderRightWidth = "0px";
+n.borderTopStyle = n.borderLeftStyle = n.borderRightStyle = "none";
+n.padding = "0px";
+n.margin = 0;
+e.appendChild(r);
+cc.game.canvas.parentNode.appendChild(e);
+}
+r.value = r.value + t + "\r\n";
+r.scrollTop = r.scrollHeight;
+}
+};
+cc.error = function() {
+e("ERROR : " + cc.js.formatStr.apply(null, arguments));
+};
+cc.assert = function(t, i) {
+if (!t && i) {
+i = cc.js.formatStr.apply(null, cc.js.shiftArguments.apply(null, arguments));
+e("ASSERT: " + i);
+}
+};
+t !== h.ERROR_FOR_WEB_PAGE && (cc.warn = function() {
+e("WARN : " + cc.js.formatStr.apply(null, arguments));
+});
+t === h.INFO_FOR_WEB_PAGE && (cc.log = function() {
+e(cc.js.formatStr.apply(null, arguments));
+});
+} else if (console && console.log.apply) {
+console.error || (console.error = console.log);
+console.warn || (console.warn = console.log);
+console.error.bind ? cc.error = console.error.bind(console) : cc.error = console.error;
+cc.assert = function(t, e) {
+if (!t) {
+e && (e = cc.js.formatStr.apply(null, cc.js.shiftArguments.apply(null, arguments)));
+throw new Error(e);
+}
+};
+}
+t !== h.ERROR && (console.warn.bind ? cc.warn = console.warn.bind(console) : cc.warn = console.warn);
+t === h.INFO && ("JavaScriptCore" === scriptEngineType ? cc.log = function() {
+return console.log.apply(console, arguments);
+} : cc.log = console.log);
+}
+},
+getError: s("ERROR"),
+isDisplayStats: function() {
+return !!cc.profiler && cc.profiler.isShowingStats();
+},
+setDisplayStats: function(t) {
+if (cc.profiler) {
+t ? cc.profiler.showStats() : cc.profiler.hideStats();
+cc.game.config.showFPS = !!t;
+}
+}
+};
+}), {
+"../../DebugInfos": void 0
+} ],
+50: [ (function(i, n, r) {
+"use strict";
+var s = i("./event/event-target"), o = i("./load-pipeline/auto-release-utils"), a = i("./component-scheduler"), c = i("./node-activator"), l = i("./platform/CCObject"), h = i("./CCGame"), u = i("./renderer"), _ = i("./event-manager"), f = i("./CCScheduler");
+cc.Director = function() {
+s.call(this);
+this._paused = !1;
+this._purgeDirectorInNextLoop = !1;
+this._winSizeInPoints = null;
+this._loadingScene = "";
+this._scene = null;
+this._totalFrames = 0;
+this._lastUpdate = 0;
+this._deltaTime = 0;
+this._scheduler = null;
+this._compScheduler = null;
+this._nodeActivator = null;
+this._actionManager = null;
+var t = this;
+h.on(h.EVENT_SHOW, (function() {
+t._lastUpdate = performance.now();
+}));
+h.once(h.EVENT_ENGINE_INITED, this.init, this);
+};
+cc.Director.prototype = {
+constructor: cc.Director,
+init: function() {
+this._totalFrames = 0;
+this._lastUpdate = performance.now();
+this._paused = !1;
+this._purgeDirectorInNextLoop = !1;
+this._winSizeInPoints = cc.size(0, 0);
+this._scheduler = new f();
+if (cc.ActionManager) {
+this._actionManager = new cc.ActionManager();
+this._scheduler.scheduleUpdate(this._actionManager, f.PRIORITY_SYSTEM, !1);
+} else this._actionManager = null;
+this.sharedInit();
+return !0;
+},
+sharedInit: function() {
+this._compScheduler = new a();
+this._nodeActivator = new c();
+_ && _.setEnabled(!0);
+if (cc.AnimationManager) {
+this._animationManager = new cc.AnimationManager();
+this._scheduler.scheduleUpdate(this._animationManager, f.PRIORITY_SYSTEM, !1);
+} else this._animationManager = null;
+if (cc.CollisionManager) {
+this._collisionManager = new cc.CollisionManager();
+this._scheduler.scheduleUpdate(this._collisionManager, f.PRIORITY_SYSTEM, !1);
+} else this._collisionManager = null;
+if (cc.PhysicsManager) {
+this._physicsManager = new cc.PhysicsManager();
+this._scheduler.scheduleUpdate(this._physicsManager, f.PRIORITY_SYSTEM, !1);
+} else this._physicsManager = null;
+cc._widgetManager && cc._widgetManager.init(this);
+cc.loader.init(this);
+},
+calculateDeltaTime: function(t) {
+t || (t = performance.now());
+this._deltaTime = (t - this._lastUpdate) / 1e3;
+0;
+this._lastUpdate = t;
+},
+convertToGL: function(t) {
+var e = h.container, i = cc.view, n = e.getBoundingClientRect(), r = n.left + window.pageXOffset - e.clientLeft, s = n.top + window.pageYOffset - e.clientTop, o = i._devicePixelRatio * (t.x - r), a = i._devicePixelRatio * (s + n.height - t.y);
+return i._isRotated ? cc.v2(i._viewportRect.width - a, o) : cc.v2(o, a);
+},
+convertToUI: function(t) {
+var e = h.container, i = cc.view, n = e.getBoundingClientRect(), r = n.left + window.pageXOffset - e.clientLeft, s = n.top + window.pageYOffset - e.clientTop, o = cc.v2(0, 0);
+if (i._isRotated) {
+o.x = r + t.y / i._devicePixelRatio;
+o.y = s + n.height - (i._viewportRect.width - t.x) / i._devicePixelRatio;
+} else {
+o.x = r + t.x * i._devicePixelRatio;
+o.y = s + n.height - t.y * i._devicePixelRatio;
+}
+return o;
+},
+end: function() {
+this._purgeDirectorInNextLoop = !0;
+},
+getWinSize: function() {
+return cc.size(cc.winSize);
+},
+getWinSizeInPixels: function() {
+return cc.size(cc.winSize);
+},
+pause: function() {
+this._paused || (this._paused = !0);
+},
+purgeCachedData: function() {
+cc.loader.releaseAll();
+},
+purgeDirector: function() {
+this._scheduler.unscheduleAll();
+this._compScheduler.unscheduleAll();
+this._nodeActivator.reset();
+_ && _.setEnabled(!1);
+cc.isValid(this._scene) && this._scene.destroy();
+this._scene = null;
+cc.renderer.clear();
+cc.AssetLibrary.resetBuiltins();
+cc.game.pause();
+cc.loader.releaseAll();
+},
+reset: function() {
+this.purgeDirector();
+_ && _.setEnabled(!0);
+this._actionManager && this._scheduler.scheduleUpdate(this._actionManager, cc.Scheduler.PRIORITY_SYSTEM, !1);
+this._animationManager && this._scheduler.scheduleUpdate(this._animationManager, cc.Scheduler.PRIORITY_SYSTEM, !1);
+this._collisionManager && this._scheduler.scheduleUpdate(this._collisionManager, cc.Scheduler.PRIORITY_SYSTEM, !1);
+this._physicsManager && this._scheduler.scheduleUpdate(this._physicsManager, cc.Scheduler.PRIORITY_SYSTEM, !1);
+cc.game.resume();
+},
+runSceneImmediate: function(t, e, i) {
+cc.assertID(t instanceof cc.Scene, 1216);
+t._load();
+for (var n = Object.keys(h._persistRootNodes).map((function(t) {
+return h._persistRootNodes[t];
+})), r = 0; r < n.length; r++) {
+var s = n[r], a = t.getChildByUuid(s.uuid);
+if (a) {
+var c = a.getSiblingIndex();
+a._destroyImmediate();
+t.insertChild(s, c);
+} else s.parent = t;
+}
+var u = this._scene, _ = u && u.autoReleaseAssets && u.dependAssets;
+o.autoRelease(_, t.dependAssets, n);
+cc.isValid(u) && u.destroy();
+this._scene = null;
+l._deferredDestroy();
+e && e();
+this.emit(cc.Director.EVENT_BEFORE_SCENE_LAUNCH, t);
+this._scene = t;
+t._activate();
+cc.game.resume();
+i && i(null, t);
+this.emit(cc.Director.EVENT_AFTER_SCENE_LAUNCH, t);
+},
+runScene: function(t, e, i) {
+cc.assertID(t, 1205);
+cc.assertID(t instanceof cc.Scene, 1216);
+t._load();
+this.once(cc.Director.EVENT_AFTER_UPDATE, (function() {
+this.runSceneImmediate(t, e, i);
+}), this);
+},
+_getSceneUuid: function(i) {
+var n = h._sceneInfos;
+if ("string" === ("object" === (e = typeof i) ? t(i) : e)) {
+i.endsWith(".fire") || (i += ".fire");
+"/" === i[0] || i.startsWith("db://") || (i = "/" + i);
+for (var r = 0; r < n.length; r++) {
+var s = n[r];
+if (s.url.endsWith(i)) return s;
+}
+} else if ("number" === ("object" === (e = typeof i) ? t(i) : e)) {
+if (0 <= i && i < n.length) return n[i];
+cc.errorID(1206, i);
+} else cc.errorID(1207, i);
+return null;
+},
+loadScene: function(t, e, i) {
+if (this._loadingScene) {
+cc.errorID(1208, t, this._loadingScene);
+return !1;
+}
+var n = this._getSceneUuid(t);
+if (n) {
+var r = n.uuid;
+this.emit(cc.Director.EVENT_BEFORE_SCENE_LOADING, t);
+this._loadingScene = t;
+this._loadSceneByUuid(r, e, i);
+return !0;
+}
+cc.errorID(1209, t);
+return !1;
+},
+preloadScene: function(t, e, i) {
+if (void 0 === i) {
+i = e;
+e = null;
+}
+var n = this._getSceneUuid(t);
+if (n) {
+this.emit(cc.Director.EVENT_BEFORE_SCENE_LOADING, t);
+cc.loader.load({
+uuid: n.uuid,
+type: "uuid"
+}, e, (function(e, n) {
+if (e) {
+cc.errorID(1210, t, e.message);
+i && i(new Error(e));
+}
+i && i(e, n);
+}));
+} else {
+var r = 'Can not preload the scene "' + t + '" because it is not in the build settings.';
+i(new Error(r));
+cc.error("preloadScene: " + r);
+}
+},
+_loadSceneByUuid: function(t, e, i, n) {
+0;
+console.time("LoadScene " + t);
+cc.AssetLibrary.loadAsset(t, (function(n, r) {
+console.timeEnd("LoadScene " + t);
+var s = cc.director;
+s._loadingScene = "";
+if (n) {
+n = "Failed to load scene: " + n;
+cc.error(n);
+} else {
+if (r instanceof cc.SceneAsset) {
+var o = r.scene;
+o._id = r._uuid;
+o._name = r._name;
+s.runSceneImmediate(o, i, e);
+return;
+}
+n = "The asset " + t + " is not a scene";
+cc.error(n);
+}
+e && e(n);
+}));
+},
+resume: function() {
+if (this._paused) {
+this._lastUpdate = performance.now();
+this._lastUpdate || cc.logID(1200);
+this._paused = !1;
+this._deltaTime = 0;
+}
+},
+setDepthTest: function(t) {
+cc.Camera.main && (cc.Camera.main.depth = !!t);
+},
+setClearColor: function(t) {
+cc.Camera.main && (cc.Camera.main.backgroundColor = t);
+},
+getRunningScene: function() {
+return this._scene;
+},
+getScene: function() {
+return this._scene;
+},
+getAnimationInterval: function() {
+return 1e3 / h.getFrameRate();
+},
+setAnimationInterval: function(t) {
+h.setFrameRate(Math.round(1e3 / t));
+},
+getDeltaTime: function() {
+return this._deltaTime;
+},
+getTotalFrames: function() {
+return this._totalFrames;
+},
+isPaused: function() {
+return this._paused;
+},
+getScheduler: function() {
+return this._scheduler;
+},
+setScheduler: function(t) {
+this._scheduler !== t && (this._scheduler = t);
+},
+getActionManager: function() {
+return this._actionManager;
+},
+setActionManager: function(t) {
+if (this._actionManager !== t) {
+this._actionManager && this._scheduler.unscheduleUpdate(this._actionManager);
+this._actionManager = t;
+this._scheduler.scheduleUpdate(this._actionManager, cc.Scheduler.PRIORITY_SYSTEM, !1);
+}
+},
+getAnimationManager: function() {
+return this._animationManager;
+},
+getCollisionManager: function() {
+return this._collisionManager;
+},
+getPhysicsManager: function() {
+return this._physicsManager;
+},
+startAnimation: function() {
+cc.game.resume();
+},
+stopAnimation: function() {
+cc.game.pause();
+},
+_resetDeltaTime: function() {
+this._lastUpdate = performance.now();
+this._deltaTime = 0;
+},
+mainLoop: function(t) {
+if (this._purgeDirectorInNextLoop) {
+this._purgeDirectorInNextLoop = !1;
+this.purgeDirector();
+} else {
+this.calculateDeltaTime(t);
+if (!this._paused) {
+this.emit(cc.Director.EVENT_BEFORE_UPDATE);
+this._compScheduler.startPhase();
+this._compScheduler.updatePhase(this._deltaTime);
+this._scheduler.update(this._deltaTime);
+this._compScheduler.lateUpdatePhase(this._deltaTime);
+this.emit(cc.Director.EVENT_AFTER_UPDATE);
+l._deferredDestroy();
+}
+this.emit(cc.Director.EVENT_BEFORE_DRAW);
+u.render(this._scene);
+this.emit(cc.Director.EVENT_AFTER_DRAW);
+_.frameUpdateListeners();
+this._totalFrames++;
+}
+},
+__fastOn: function(t, e, i) {
+this.add(t, e, i);
+},
+__fastOff: function(t, e, i) {
+this.remove(t, e, i);
+}
+};
+cc.js.addon(cc.Director.prototype, s.prototype);
+cc.Director.EVENT_PROJECTION_CHANGED = "director_projection_changed";
+cc.Director.EVENT_BEFORE_SCENE_LOADING = "director_before_scene_loading";
+cc.Director.EVENT_BEFORE_SCENE_LAUNCH = "director_before_scene_launch";
+cc.Director.EVENT_AFTER_SCENE_LAUNCH = "director_after_scene_launch";
+cc.Director.EVENT_BEFORE_UPDATE = "director_before_update";
+cc.Director.EVENT_AFTER_UPDATE = "director_after_update";
+cc.Director.EVENT_BEFORE_VISIT = "director_before_draw";
+cc.Director.EVENT_AFTER_VISIT = "director_before_draw";
+cc.Director.EVENT_BEFORE_DRAW = "director_before_draw";
+cc.Director.EVENT_AFTER_DRAW = "director_after_draw";
+cc.Director.PROJECTION_2D = 0;
+cc.Director.PROJECTION_3D = 1;
+cc.Director.PROJECTION_CUSTOM = 3;
+cc.Director.PROJECTION_DEFAULT = cc.Director.PROJECTION_2D;
+cc.director = new cc.Director();
+n.exports = cc.director;
+}), {
+"./CCGame": 51,
+"./CCScheduler": 55,
+"./component-scheduler": 89,
+"./event-manager": 131,
+"./event/event-target": 133,
+"./load-pipeline/auto-release-utils": 151,
+"./node-activator": 172,
+"./platform/CCObject": 207,
+"./renderer": 244
+} ],
+51: [ (function(i, n, r) {
+"use strict";
+var s = i("./event/event-target");
+i("../audio/CCAudioEngine");
+var o = i("./CCDebug"), a = i("./renderer/index.js"), c = i("./platform/CCInputManager"), l = i("../core/renderer/utils/dynamic-atlas/manager"), h = {
+EVENT_HIDE: "game_on_hide",
+EVENT_SHOW: "game_on_show",
+EVENT_RESTART: "game_on_restart",
+EVENT_GAME_INITED: "game_inited",
+EVENT_ENGINE_INITED: "engine_inited",
+EVENT_RENDERER_INITED: "engine_inited",
+RENDER_TYPE_CANVAS: 0,
+RENDER_TYPE_WEBGL: 1,
+RENDER_TYPE_OPENGL: 2,
+_persistRootNodes: {},
+_paused: !0,
+_configLoaded: !1,
+_isCloning: !1,
+_prepared: !1,
+_rendererInitialized: !1,
+_renderContext: null,
+_intervalId: null,
+_lastTime: null,
+_frameTime: null,
+_sceneInfos: [],
+frame: null,
+container: null,
+canvas: null,
+renderType: -1,
+config: null,
+onStart: null,
+setFrameRate: function(t) {
+this.config.frameRate = t;
+this._intervalId && window.cancelAnimFrame(this._intervalId);
+this._intervalId = 0;
+this._paused = !0;
+this._setAnimFrame();
+this._runMainLoop();
+},
+getFrameRate: function() {
+return this.config.frameRate;
+},
+step: function() {
+cc.director.mainLoop();
+},
+pause: function() {
+if (!this._paused) {
+this._paused = !0;
+this._intervalId && window.cancelAnimFrame(this._intervalId);
+this._intervalId = 0;
+}
+},
+resume: function() {
+if (this._paused) {
+this._paused = !1;
+cc.audioEngine && cc.audioEngine._restore();
+cc.director._resetDeltaTime();
+this._runMainLoop();
+}
+},
+isPaused: function() {
+return this._paused;
+},
+restart: function() {
+cc.director.once(cc.Director.EVENT_AFTER_DRAW, (function() {
+for (var t in h._persistRootNodes) h.removePersistRootNode(h._persistRootNodes[t]);
+cc.director.getScene().destroy();
+cc.Object._deferredDestroy();
+cc.audioEngine && cc.audioEngine.uncacheAll();
+cc.director.reset();
+h.pause();
+cc.AssetLibrary._loadBuiltins((function() {
+h.onStart();
+h.emit(h.EVENT_RESTART);
+}));
+}));
+},
+end: function() {
+close();
+},
+_initEngine: function() {
+if (!this._rendererInitialized) {
+this._initRenderer();
+this._initEvents();
+this.emit(this.EVENT_ENGINE_INITED);
+}
+},
+_prepareFinished: function(t) {
+var e = this;
+0;
+this._initEngine();
+this._setAnimFrame();
+cc.AssetLibrary._loadBuiltins((function() {
+console.log("Cocos Creator v" + cc.ENGINE_VERSION);
+e._prepared = !0;
+e._runMainLoop();
+e.emit(e.EVENT_GAME_INITED);
+t && t();
+}));
+},
+eventTargetOn: s.prototype.on,
+eventTargetOnce: s.prototype.once,
+on: function(t, e, i) {
+this._prepared && t === this.EVENT_ENGINE_INITED || !this._paused && t === this.EVENT_GAME_INITED ? e.call(i) : this.eventTargetOn(t, e, i);
+},
+once: function(t, e, i) {
+this._prepared && t === this.EVENT_ENGINE_INITED || !this._paused && t === this.EVENT_GAME_INITED ? e.call(i) : this.eventTargetOnce(t, e, i);
+},
+prepare: function(t) {
+if (this._prepared) t && t(); else {
+var e = this.config.jsList;
+if (e && e.length > 0) {
+var i = this;
+cc.loader.load(e, (function(e) {
+if (e) throw new Error(JSON.stringify(e));
+i._prepareFinished(t);
+}));
+} else this._prepareFinished(t);
+}
+},
+run: function(t, e) {
+this._initConfig(t);
+this.onStart = e;
+this.prepare(h.onStart && h.onStart.bind(h));
+},
+addPersistRootNode: function(t) {
+if (cc.Node.isNode(t) && t.uuid) {
+var e = t.uuid;
+if (!this._persistRootNodes[e]) {
+var i = cc.director._scene;
+if (cc.isValid(i)) if (t.parent) {
+if (!(t.parent instanceof cc.Scene)) {
+cc.warnID(3801);
+return;
+}
+if (t.parent !== i) {
+cc.warnID(3802);
+return;
+}
+} else t.parent = i;
+this._persistRootNodes[e] = t;
+t._persistNode = !0;
+}
+} else cc.warnID(3800);
+},
+removePersistRootNode: function(t) {
+var e = t.uuid || "";
+if (t === this._persistRootNodes[e]) {
+delete this._persistRootNodes[e];
+t._persistNode = !1;
+}
+},
+isPersistRootNode: function(t) {
+return t._persistNode;
+},
+_setAnimFrame: function() {
+this._lastTime = performance.now();
+var t = h.config.frameRate;
+this._frameTime = 1e3 / t;
+jsb.setPreferredFramesPerSecond(t);
+window.requestAnimFrame = window.requestAnimationFrame;
+window.cancelAnimFrame = window.cancelAnimationFrame;
+},
+_stTime: function(t) {
+var e = performance.now(), i = Math.max(0, h._frameTime - (e - h._lastTime)), n = window.setTimeout((function() {
+t();
+}), i);
+h._lastTime = e + i;
+return n;
+},
+_ctTime: function(t) {
+window.clearTimeout(t);
+},
+_runMainLoop: function() {
+0;
+if (this._prepared) {
+var t, e = this, i = e.config, n = cc.director;
+i.frameRate;
+o.setDisplayStats(i.showFPS);
+t = function(i) {
+if (!e._paused) {
+e._intervalId = window.requestAnimFrame(t);
+0;
+n.mainLoop(i);
+}
+};
+e._intervalId = window.requestAnimFrame(t);
+e._paused = !1;
+}
+},
+_initConfig: function(i) {
+"number" !== ("object" === (e = typeof i.debugMode) ? t(i.debugMode) : e) && (i.debugMode = 0);
+i.exposeClassName = !!i.exposeClassName;
+"number" !== ("object" === (e = typeof i.frameRate) ? t(i.frameRate) : e) && (i.frameRate = 60);
+var n = i.renderMode;
+("number" !== ("object" === (e = typeof n) ? t(n) : e) || n > 2 || n < 0) && (i.renderMode = 0);
+"boolean" !== ("object" === (e = typeof i.registerSystemEvent) ? t(i.registerSystemEvent) : e) && (i.registerSystemEvent = !0);
+i.showFPS = !!i.showFPS;
+this._sceneInfos = i.scenes || [];
+this.collisionMatrix = i.collisionMatrix || [];
+this.groupList = i.groupList || [];
+o._resetDebugSetting(i.debugMode);
+this.config = i;
+this._configLoaded = !0;
+},
+_determineRenderType: function() {
+var t = this.config, e = parseInt(t.renderMode) || 0;
+this.renderType = this.RENDER_TYPE_CANVAS;
+var i = !1;
+if (0 === e) {
+if (cc.sys.capabilities.opengl) {
+this.renderType = this.RENDER_TYPE_WEBGL;
+i = !0;
+} else if (cc.sys.capabilities.canvas) {
+this.renderType = this.RENDER_TYPE_CANVAS;
+i = !0;
+}
+} else if (1 === e && cc.sys.capabilities.canvas) {
+this.renderType = this.RENDER_TYPE_CANVAS;
+i = !0;
+} else if (2 === e && cc.sys.capabilities.opengl) {
+this.renderType = this.RENDER_TYPE_WEBGL;
+i = !0;
+}
+if (!i) throw new Error(o.getError(3820, e));
+},
+_initRenderer: function() {
+if (!this._rendererInitialized) {
+this.config.id;
+var t = void 0, e = void 0;
+this.container = e = document.createElement("DIV");
+this.frame = e.parentNode === document.body ? document.documentElement : e.parentNode;
+if (cc.sys.browserType === cc.sys.BROWSER_TYPE_WECHAT_GAME_SUB) t = window.sharedCanvas || wx.getSharedCanvas(); else {
+t = window.__canvas;
+}
+this.canvas = t;
+this._determineRenderType();
+if (this.renderType === this.RENDER_TYPE_WEBGL) {
+var i = {
+stencil: !0,
+antialias: cc.macro.ENABLE_WEBGL_ANTIALIAS,
+alpha: cc.macro.ENABLE_TRANSPARENT_CANVAS
+};
+0;
+a.initWebGL(t, i);
+this._renderContext = a.device._gl;
+!cc.macro.CLEANUP_IMAGE_CACHE && l && (l.enabled = !0);
+}
+if (!this._renderContext) {
+this.renderType = this.RENDER_TYPE_CANVAS;
+a.initCanvas(t);
+this._renderContext = a.device._ctx;
+}
+this.canvas.oncontextmenu = function() {
+if (!cc._isContextMenuEnable) return !1;
+};
+this._rendererInitialized = !0;
+}
+},
+_initEvents: function() {
+var i, n = window;
+this.config.registerSystemEvent && c.registerSystemEvent(this.canvas);
+"undefined" !== ("object" === (e = typeof document.hidden) ? t(document.hidden) : e) ? i = "hidden" : "undefined" !== ("object" === (e = typeof document.mozHidden) ? t(document.mozHidden) : e) ? i = "mozHidden" : "undefined" !== ("object" === (e = typeof document.msHidden) ? t(document.msHidden) : e) ? i = "msHidden" : "undefined" !== ("object" === (e = typeof document.webkitHidden) ? t(document.webkitHidden) : e) && (i = "webkitHidden");
+var r = !1;
+function s() {
+if (!r) {
+r = !0;
+h.emit(h.EVENT_HIDE);
+}
+}
+function o(t, e, i, n, s) {
+if (r) {
+r = !1;
+h.emit(h.EVENT_SHOW, t, e, i, n, s);
+}
+}
+if (i) for (var a = [ "visibilitychange", "mozvisibilitychange", "msvisibilitychange", "webkitvisibilitychange", "qbrowserVisibilityChange" ], l = 0; l < a.length; l++) document.addEventListener(a[l], (function(t) {
+var e = document[i];
+(e = e || t.hidden) ? s() : o();
+})); else {
+n.addEventListener("blur", s);
+n.addEventListener("focus", o);
+}
+navigator.userAgent.indexOf("MicroMessenger") > -1 && (n.onfocus = o);
+0;
+if ("onpageshow" in window && "onpagehide" in window) {
+n.addEventListener("pagehide", s);
+n.addEventListener("pageshow", o);
+document.addEventListener("pagehide", s);
+document.addEventListener("pageshow", o);
+}
+this.on(h.EVENT_HIDE, (function() {
+cc.audioEngine.pauseMusic();
+cc.audioEngine.pauseAllEffects();
+cc.audioEngine.setEffectsVolume(0);
+cc.audioEngine.setMusicVolume(0);
+}));
+this.on(h.EVENT_SHOW, (function() {
+h.resume();
+cc.audioEngine.resumeAllEffects();
+cc.audioEngine.resumeMusic();
+cc.audioEngine.setEffectsVolume(1);
+cc.audioEngine.setMusicVolume(1);
+}));
+}
+};
+s.call(h);
+cc.js.addon(h, s.prototype);
+cc.game = n.exports = h;
+}), {
+"../audio/CCAudioEngine": 21,
+"../core/renderer/utils/dynamic-atlas/manager": 247,
+"./CCDebug": 49,
+"./event/event-target": 133,
+"./platform/BKInputManager": 199,
+"./platform/CCInputManager": 205,
+"./renderer/index.js": 244
+} ],
+52: [ (function(i, n, r) {
+"use strict";
+var s = i("./vmath"), o = i("./utils/base-node"), a = i("./utils/prefab-helper"), c = i("./utils/math-pools"), l = i("./utils/affine-transform"), h = i("./event-manager"), u = i("./platform/CCMacro"), _ = i("./platform/js"), f = (i("./event/event"),
+i("./event/event-target")), d = i("./renderer/render-flow"), m = cc.Object.Flags.Destroying, p = Math.PI / 180, v = !!cc.ActionManager, y = function() {}, g = cc.v2(), x = cc.v2(), C = s.mat4.create(), b = s.vec3.create(), A = s.quat.create(), S = new Array(16);
+S.length = 0;
+var w = cc.Enum({
+DEBUG: 31
+}), T = cc.Enum({
+POSITION: 1,
+SCALE: 2,
+ROTATION: 4,
+SKEW: 8,
+RT: 7,
+ALL: 65535
+}), E = cc.Enum({
+TOUCH_START: "touchstart",
+TOUCH_MOVE: "touchmove",
+TOUCH_END: "touchend",
+TOUCH_CANCEL: "touchcancel",
+MOUSE_DOWN: "mousedown",
+MOUSE_MOVE: "mousemove",
+MOUSE_ENTER: "mouseenter",
+MOUSE_LEAVE: "mouseleave",
+MOUSE_UP: "mouseup",
+MOUSE_WHEEL: "mousewheel",
+POSITION_CHANGED: "position-changed",
+ROTATION_CHANGED: "rotation-changed",
+SCALE_CHANGED: "scale-changed",
+SIZE_CHANGED: "size-changed",
+ANCHOR_CHANGED: "anchor-changed",
+COLOR_CHANGED: "color-changed",
+CHILD_ADDED: "child-added",
+CHILD_REMOVED: "child-removed",
+CHILD_REORDER: "child-reorder",
+GROUP_CHANGED: "group-changed"
+}), M = [ E.TOUCH_START, E.TOUCH_MOVE, E.TOUCH_END, E.TOUCH_CANCEL ], B = [ E.MOUSE_DOWN, E.MOUSE_ENTER, E.MOUSE_MOVE, E.MOUSE_LEAVE, E.MOUSE_UP, E.MOUSE_WHEEL ], D = null, I = function(t, e) {
+var i = t.getLocation(), n = this.owner;
+if (n._hitTest(i, this)) {
+e.type = E.TOUCH_START;
+e.touch = t;
+e.bubbles = !0;
+n.dispatchEvent(e);
+return !0;
+}
+return !1;
+}, P = function(t, e) {
+var i = this.owner;
+e.type = E.TOUCH_MOVE;
+e.touch = t;
+e.bubbles = !0;
+i.dispatchEvent(e);
+}, R = function(t, e) {
+var i = t.getLocation(), n = this.owner;
+n._hitTest(i, this) ? e.type = E.TOUCH_END : e.type = E.TOUCH_CANCEL;
+e.touch = t;
+e.bubbles = !0;
+n.dispatchEvent(e);
+}, L = function(t, e) {
+t.getLocation();
+var i = this.owner;
+e.type = E.TOUCH_CANCEL;
+e.touch = t;
+e.bubbles = !0;
+i.dispatchEvent(e);
+}, F = function(t) {
+var e = t.getLocation(), i = this.owner;
+if (i._hitTest(e, this)) {
+t.type = E.MOUSE_DOWN;
+t.bubbles = !0;
+i.dispatchEvent(t);
+}
+}, O = function(t) {
+var e = t.getLocation(), i = this.owner;
+if (i._hitTest(e, this)) {
+if (!this._previousIn) {
+if (D && D._mouseListener) {
+t.type = E.MOUSE_LEAVE;
+D.dispatchEvent(t);
+D._mouseListener._previousIn = !1;
+}
+D = this.owner;
+t.type = E.MOUSE_ENTER;
+i.dispatchEvent(t);
+this._previousIn = !0;
+}
+t.type = E.MOUSE_MOVE;
+t.bubbles = !0;
+i.dispatchEvent(t);
+} else {
+if (!this._previousIn) return;
+t.type = E.MOUSE_LEAVE;
+i.dispatchEvent(t);
+this._previousIn = !1;
+D = null;
+}
+t.stopPropagation();
+}, V = function(t) {
+var e = t.getLocation(), i = this.owner;
+if (i._hitTest(e, this)) {
+t.type = E.MOUSE_UP;
+t.bubbles = !0;
+i.dispatchEvent(t);
+t.stopPropagation();
+}
+}, N = function(t) {
+var e = t.getLocation(), i = this.owner;
+if (i._hitTest(e, this)) {
+t.type = E.MOUSE_WHEEL;
+t.bubbles = !0;
+i.dispatchEvent(t);
+t.stopPropagation();
+}
+};
+function k(t) {
+var e = cc.Mask;
+if (e) for (var i = 0, n = t; n && cc.Node.isNode(n); n = n._parent, ++i) if (n.getComponent(e)) return {
+index: i,
+node: n
+};
+return null;
+}
+function z(t, e) {
+if (!(t._objFlags & m)) {
+var i = 0;
+if (t._bubblingListeners) for (;i < e.length; ++i) if (t._bubblingListeners.hasEventListener(e[i])) return !0;
+if (t._capturingListeners) for (;i < e.length; ++i) if (t._capturingListeners.hasEventListener(e[i])) return !0;
+return !1;
+}
+return !0;
+}
+function G(t, e) {
+var i, n;
+e.target = t;
+S.length = 0;
+t._getCapturingTargets(e.type, S);
+e.eventPhase = 1;
+for (n = S.length - 1; n >= 0; --n) if ((i = S[n])._capturingListeners) {
+e.currentTarget = i;
+i._capturingListeners.emit(e.type, e, S);
+if (e._propagationStopped) {
+S.length = 0;
+return;
+}
+}
+S.length = 0;
+e.eventPhase = 2;
+e.currentTarget = t;
+t._capturingListeners && t._capturingListeners.emit(e.type, e);
+!e._propagationImmediateStopped && t._bubblingListeners && t._bubblingListeners.emit(e.type, e);
+if (!e._propagationStopped && e.bubbles) {
+t._getBubblingTargets(e.type, S);
+e.eventPhase = 3;
+for (n = 0; n < S.length; ++n) if ((i = S[n])._bubblingListeners) {
+e.currentTarget = i;
+i._bubblingListeners.emit(e.type, e);
+if (e._propagationStopped) {
+S.length = 0;
+return;
+}
+}
+}
+S.length = 0;
+}
+function U(t) {
+var e = t.groupIndex;
+0 === e && t.parent && (e = U(t.parent));
+return e;
+}
+function j(t) {
+var e = U(t);
+t._cullingMask = 1 << e;
+for (var i = 0; i < t._children.length; i++) j(t._children[i]);
+}
+var W = {
+name: "cc.Node",
+extends: o,
+properties: {
+_opacity: 255,
+_color: cc.Color.WHITE,
+_contentSize: cc.Size,
+_anchorPoint: cc.v2(.5, .5),
+_position: cc.Vec3,
+_scale: cc.Vec3.ONE,
+_eulerAngles: cc.Vec3,
+_skewX: 0,
+_skewY: 0,
+_zIndex: {
+default: void 0,
+type: cc.Integer
+},
+_localZOrder: {
+default: 0,
+serializable: !1
+},
+_is3DNode: !1,
+groupIndex: {
+default: 0,
+type: cc.Integer
+},
+group: {
+get: function() {
+return cc.game.groupList[this.groupIndex] || "";
+},
+set: function(t) {
+this.groupIndex = cc.game.groupList.indexOf(t);
+j(this);
+this.emit(E.GROUP_CHANGED, this);
+}
+},
+x: {
+get: function() {
+return this._position.x;
+},
+set: function(t) {
+var e = this._position;
+if (t !== e.x) {
+e.x = t;
+this.setLocalDirty(T.POSITION);
+this._renderFlag |= d.FLAG_WORLD_TRANSFORM;
+1 & this._eventMask && this.emit(E.POSITION_CHANGED);
+}
+}
+},
+y: {
+get: function() {
+return this._position.y;
+},
+set: function(t) {
+var e = this._position;
+if (t !== e.y) {
+e.y = t;
+this.setLocalDirty(T.POSITION);
+this._renderFlag |= d.FLAG_WORLD_TRANSFORM;
+1 & this._eventMask && this.emit(E.POSITION_CHANGED);
+}
+}
+},
+rotation: {
+get: function() {
+0;
+return -this.angle;
+},
+set: function(t) {
+0;
+this.angle = -t;
+}
+},
+angle: {
+get: function() {
+return this._eulerAngles.z;
+},
+set: function(t) {
+s.vec3.set(this._eulerAngles, 0, 0, t);
+s.quat.fromAngleZ(this._quat, t);
+this.setLocalDirty(T.ROTATION);
+this._renderFlag |= d.FLAG_TRANSFORM;
+4 & this._eventMask && this.emit(E.ROTATION_CHANGED);
+}
+},
+rotationX: {
+get: function() {
+0;
+return this._eulerAngles.x;
+},
+set: function(t) {
+0;
+if (this._eulerAngles.x !== t) {
+this._eulerAngles.x = t;
+this._eulerAngles.x === this._eulerAngles.y ? s.quat.fromAngleZ(this._quat, -t) : s.quat.fromEuler(this._quat, t, this._eulerAngles.y, 0);
+this.setLocalDirty(T.ROTATION);
+this._renderFlag |= d.FLAG_TRANSFORM;
+4 & this._eventMask && this.emit(E.ROTATION_CHANGED);
+}
+}
+},
+rotationY: {
+get: function() {
+0;
+return this._eulerAngles.y;
+},
+set: function(t) {
+0;
+if (this._eulerAngles.y !== t) {
+this._eulerAngles.y = t;
+this._eulerAngles.x === this._eulerAngles.y ? s.quat.fromAngleZ(this._quat, -t) : s.quat.fromEuler(this._quat, this._eulerAngles.x, t, 0);
+this.setLocalDirty(T.ROTATION);
+this._renderFlag |= d.FLAG_TRANSFORM;
+4 & this._eventMask && this.emit(E.ROTATION_CHANGED);
+}
+}
+},
+scale: {
+get: function() {
+return this._scale.x;
+},
+set: function(t) {
+this.setScale(t);
+}
+},
+scaleX: {
+get: function() {
+return this._scale.x;
+},
+set: function(t) {
+if (this._scale.x !== t) {
+this._scale.x = t;
+this.setLocalDirty(T.SCALE);
+this._renderFlag |= d.FLAG_TRANSFORM;
+2 & this._eventMask && this.emit(E.SCALE_CHANGED);
+}
+}
+},
+scaleY: {
+get: function() {
+return this._scale.y;
+},
+set: function(t) {
+if (this._scale.y !== t) {
+this._scale.y = t;
+this.setLocalDirty(T.SCALE);
+this._renderFlag |= d.FLAG_TRANSFORM;
+2 & this._eventMask && this.emit(E.SCALE_CHANGED);
+}
+}
+},
+skewX: {
+get: function() {
+return this._skewX;
+},
+set: function(t) {
+this._skewX = t;
+this.setLocalDirty(T.SKEW);
+this._renderFlag |= d.FLAG_TRANSFORM;
+}
+},
+skewY: {
+get: function() {
+return this._skewY;
+},
+set: function(t) {
+this._skewY = t;
+this.setLocalDirty(T.SKEW);
+this._renderFlag |= d.FLAG_TRANSFORM;
+}
+},
+opacity: {
+get: function() {
+return this._opacity;
+},
+set: function(t) {
+t = cc.misc.clampf(t, 0, 255);
+if (this._opacity !== t) {
+this._opacity = t;
+this._renderFlag |= d.FLAG_OPACITY;
+}
+},
+range: [ 0, 255 ]
+},
+color: {
+get: function() {
+return this._color.clone();
+},
+set: function(t) {
+if (!this._color.equals(t)) {
+this._color.set(t);
+0;
+32 & this._eventMask && this.emit(E.COLOR_CHANGED, t);
+}
+}
+},
+anchorX: {
+get: function() {
+return this._anchorPoint.x;
+},
+set: function(t) {
+var e = this._anchorPoint;
+if (e.x !== t) {
+e.x = t;
+16 & this._eventMask && this.emit(E.ANCHOR_CHANGED);
+}
+}
+},
+anchorY: {
+get: function() {
+return this._anchorPoint.y;
+},
+set: function(t) {
+var e = this._anchorPoint;
+if (e.y !== t) {
+e.y = t;
+16 & this._eventMask && this.emit(E.ANCHOR_CHANGED);
+}
+}
+},
+width: {
+get: function() {
+return this._contentSize.width;
+},
+set: function(t) {
+if (t !== this._contentSize.width) {
+this._contentSize.width = t;
+8 & this._eventMask && this.emit(E.SIZE_CHANGED);
+}
+}
+},
+height: {
+get: function() {
+return this._contentSize.height;
+},
+set: function(t) {
+if (t !== this._contentSize.height) {
+this._contentSize.height = t;
+8 & this._eventMask && this.emit(E.SIZE_CHANGED);
+}
+}
+},
+zIndex: {
+get: function() {
+return this._localZOrder >> 16;
+},
+set: function(t) {
+if (t > u.MAX_ZINDEX) {
+cc.warnID(1636);
+t = u.MAX_ZINDEX;
+} else if (t < u.MIN_ZINDEX) {
+cc.warnID(1637);
+t = u.MIN_ZINDEX;
+}
+if (this.zIndex !== t) {
+this._localZOrder = 65535 & this._localZOrder | t << 16;
+this._parent && this._onSiblingIndexChanged();
+}
+}
+}
+},
+ctor: function() {
+this._reorderChildDirty = !1;
+this._widget = null;
+this._renderComponent = null;
+this._capturingListeners = null;
+this._bubblingListeners = null;
+this._touchListener = null;
+this._mouseListener = null;
+this._matrix = c.mat4.get();
+this._worldMatrix = c.mat4.get();
+this._localMatDirty = T.ALL;
+this._worldMatDirty = !0;
+this._eventMask = 0;
+this._cullingMask = 1;
+this._childArrivalOrder = 1;
+this._quat = cc.quat();
+},
+statics: {
+EventType: E,
+_LocalDirtyFlag: T,
+isNode: function(t) {
+return t instanceof H && (t.constructor === H || !(t instanceof cc.Scene));
+},
+BuiltinGroupIndex: w
+},
+_onSiblingIndexChanged: function() {
+for (var t = this._parent, e = t._children, i = 0, n = e.length; i < n; i++) e[i]._updateOrderOfArrival();
+t._delaySort();
+},
+_onPreDestroy: function() {
+this._onPreDestroyBase();
+v && cc.director.getActionManager().removeAllActionsFromTarget(this);
+D === this && (D = null);
+if (this._touchListener || this._mouseListener) {
+h.removeListeners(this);
+if (this._touchListener) {
+this._touchListener.owner = null;
+this._touchListener.mask = null;
+this._touchListener = null;
+}
+if (this._mouseListener) {
+this._mouseListener.owner = null;
+this._mouseListener.mask = null;
+this._mouseListener = null;
+}
+}
+c.mat4.put(this._matrix);
+c.mat4.put(this._worldMatrix);
+this._matrix = this._worldMatrix = null;
+this._reorderChildDirty && cc.director.__fastOff(cc.Director.EVENT_AFTER_UPDATE, this.sortAllChildren, this);
+},
+_onPostActivated: function(t) {
+var e = v ? cc.director.getActionManager() : null;
+if (t) {
+this._renderFlag |= d.FLAG_WORLD_TRANSFORM;
+e && e.resumeTarget(this);
+h.resumeTarget(this);
+if (this._touchListener) {
+var i = this._touchListener.mask = k(this);
+this._mouseListener && (this._mouseListener.mask = i);
+} else this._mouseListener && (this._mouseListener.mask = k(this));
+} else {
+e && e.pauseTarget(this);
+h.pauseTarget(this);
+}
+},
+_onHierarchyChanged: function(t) {
+this._updateOrderOfArrival();
+j(this);
+this._parent && this._parent._delaySort();
+this._renderFlag |= d.FLAG_WORLD_TRANSFORM;
+this._onHierarchyChangedBase(t);
+cc._widgetManager && (cc._widgetManager._nodesOrderDirty = !0);
+},
+_toEuler: function() {
+if (this.is3DNode) this._quat.toEuler(this._eulerAngles); else {
+var t = Math.asin(this._quat.z) / p * 2;
+s.vec3.set(this._eulerAngles, 0, 0, t);
+}
+},
+_fromEuler: function() {
+this.is3DNode ? this._quat.fromEuler(this._eulerAngles) : s.quat.fromAngleZ(this._quat, this._eulerAngles.z);
+},
+_upgrade_1x_to_2x: function() {
+if (void 0 !== this._scaleX) {
+this._scale.x = this._scaleX;
+this._scaleX = void 0;
+}
+if (void 0 !== this._scaleY) {
+this._scale.y = this._scaleY;
+this._scaleY = void 0;
+}
+if (void 0 !== this._zIndex) {
+this._localZOrder = this._zIndex << 16;
+this._zIndex = void 0;
+}
+this._fromEuler();
+if (this._color.a < 255 && 255 === this._opacity) {
+this._opacity = this._color.a;
+this._color.a = 255;
+}
+},
+_onBatchCreated: function() {
+var t = this._prefab;
+if (t && t.sync && t.root === this) {
+0;
+a.syncWithPrefab(this);
+}
+this._upgrade_1x_to_2x();
+this._updateOrderOfArrival();
+this._cullingMask = 1 << U(this);
+if (!this._activeInHierarchy) {
+v && cc.director.getActionManager().pauseTarget(this);
+h.pauseTarget(this);
+}
+for (var e = this._children, i = 0, n = e.length; i < n; i++) e[i]._onBatchCreated();
+e.length > 0 && (this._renderFlag |= d.FLAG_CHILDREN);
+},
+_onBatchRestored: function() {
+this._upgrade_1x_to_2x();
+this._cullingMask = 1 << U(this);
+if (!this._activeInHierarchy) {
+var t = cc.director.getActionManager();
+t && t.pauseTarget(this);
+h.pauseTarget(this);
+}
+for (var e = this._children, i = 0, n = e.length; i < n; i++) e[i]._onBatchRestored();
+e.length > 0 && (this._renderFlag |= d.FLAG_CHILDREN);
+},
+_checknSetupSysEvent: function(t) {
+var e = !1, i = !1;
+if (-1 !== M.indexOf(t)) {
+if (!this._touchListener) {
+this._touchListener = cc.EventListener.create({
+event: cc.EventListener.TOUCH_ONE_BY_ONE,
+swallowTouches: !0,
+owner: this,
+mask: k(this),
+onTouchBegan: I,
+onTouchMoved: P,
+onTouchEnded: R,
+onTouchCancelled: L
+});
+h.addListener(this._touchListener, this);
+e = !0;
+}
+i = !0;
+} else if (-1 !== B.indexOf(t)) {
+if (!this._mouseListener) {
+this._mouseListener = cc.EventListener.create({
+event: cc.EventListener.MOUSE,
+_previousIn: !1,
+owner: this,
+mask: k(this),
+onMouseDown: F,
+onMouseMove: O,
+onMouseUp: V,
+onMouseScroll: N
+});
+h.addListener(this._mouseListener, this);
+e = !0;
+}
+i = !0;
+}
+e && !this._activeInHierarchy && cc.director.getScheduler().schedule((function() {
+this._activeInHierarchy || h.pauseTarget(this);
+}), this, 0, 0, 0, !1);
+return i;
+},
+on: function(t, e, i, n) {
+if (this._checknSetupSysEvent(t)) return this._onDispatch(t, e, i, n);
+switch (t) {
+case E.POSITION_CHANGED:
+this._eventMask |= 1;
+break;
+
+case E.SCALE_CHANGED:
+this._eventMask |= 2;
+break;
+
+case E.ROTATION_CHANGED:
+this._eventMask |= 4;
+break;
+
+case E.SIZE_CHANGED:
+this._eventMask |= 8;
+break;
+
+case E.ANCHOR_CHANGED:
+this._eventMask |= 16;
+break;
+
+case E.COLOR_CHANGED:
+this._eventMask |= 32;
+}
+this._bubblingListeners || (this._bubblingListeners = new f());
+return this._bubblingListeners.on(t, e, i);
+},
+once: function(t, e, i, n) {
+var r = this._checknSetupSysEvent(t), s = "__ONCE_FLAG:" + t, o = null;
+if (!(o = r && n ? this._capturingListeners = this._capturingListeners || new f() : this._bubblingListeners = this._bubblingListeners || new f()).hasEventListener(s, e, i)) {
+var a = this;
+this.on(t, (function n(r, c, l, h, u) {
+a.off(t, n, i);
+o.remove(s, e, i);
+e.call(this, r, c, l, h, u);
+}), i);
+o.add(s, e, i);
+}
+},
+_onDispatch: function(i, n, r, s) {
+if ("boolean" === ("object" === (e = typeof r) ? t(r) : e)) {
+s = r;
+r = void 0;
+} else s = !!s;
+if (n) {
+var o = null;
+if (!(o = s ? this._capturingListeners = this._capturingListeners || new f() : this._bubblingListeners = this._bubblingListeners || new f()).hasEventListener(i, n, r)) {
+o.add(i, n, r);
+r && r.__eventTargets && r.__eventTargets.push(this);
+}
+return n;
+}
+cc.errorID(6800);
+},
+off: function(t, e, i, n) {
+var r = -1 !== M.indexOf(t), s = !r && -1 !== B.indexOf(t);
+if (r || s) {
+this._offDispatch(t, e, i, n);
+if (r) {
+if (this._touchListener && !z(this, M)) {
+h.removeListener(this._touchListener);
+this._touchListener = null;
+}
+} else if (s && this._mouseListener && !z(this, B)) {
+h.removeListener(this._mouseListener);
+this._mouseListener = null;
+}
+} else if (this._bubblingListeners) {
+this._bubblingListeners.off(t, e, i);
+if (!this._bubblingListeners.hasEventListener(t)) switch (t) {
+case E.POSITION_CHANGED:
+this._eventMask &= -2;
+break;
+
+case E.SCALE_CHANGED:
+this._eventMask &= -3;
+break;
+
+case E.ROTATION_CHANGED:
+this._eventMask &= -5;
+break;
+
+case E.SIZE_CHANGED:
+this._eventMask &= -9;
+break;
+
+case E.ANCHOR_CHANGED:
+this._eventMask &= -17;
+break;
+
+case E.COLOR_CHANGED:
+this._eventMask &= -33;
+}
+}
+},
+_offDispatch: function(i, n, r, s) {
+if ("boolean" === ("object" === (e = typeof r) ? t(r) : e)) {
+s = r;
+r = void 0;
+} else s = !!s;
+if (n) {
+var o = s ? this._capturingListeners : this._bubblingListeners;
+if (o) {
+o.remove(i, n, r);
+r && r.__eventTargets && _.array.fastRemove(r.__eventTargets, this);
+}
+} else {
+this._capturingListeners && this._capturingListeners.removeAll(i);
+this._bubblingListeners && this._bubblingListeners.removeAll(i);
+}
+},
+targetOff: function(t) {
+var e = this._bubblingListeners;
+if (e) {
+e.targetOff(t);
+1 & this._eventMask && !e.hasEventListener(E.POSITION_CHANGED) && (this._eventMask &= -2);
+2 & this._eventMask && !e.hasEventListener(E.SCALE_CHANGED) && (this._eventMask &= -3);
+4 & this._eventMask && !e.hasEventListener(E.ROTATION_CHANGED) && (this._eventMask &= -5);
+8 & this._eventMask && !e.hasEventListener(E.SIZE_CHANGED) && (this._eventMask &= -9);
+16 & this._eventMask && !e.hasEventListener(E.ANCHOR_CHANGED) && (this._eventMask &= -17);
+32 & this._eventMask && !e.hasEventListener(E.COLOR_CHANGED) && (this._eventMask &= -33);
+}
+this._capturingListeners && this._capturingListeners.targetOff(t);
+t && t.__eventTargets && _.array.fastRemove(t.__eventTargets, this);
+if (this._touchListener && !z(this, M)) {
+h.removeListener(this._touchListener);
+this._touchListener = null;
+}
+if (this._mouseListener && !z(this, B)) {
+h.removeListener(this._mouseListener);
+this._mouseListener = null;
+}
+},
+hasEventListener: function(t) {
+var e = !1;
+this._bubblingListeners && (e = this._bubblingListeners.hasEventListener(t));
+!e && this._capturingListeners && (e = this._capturingListeners.hasEventListener(t));
+return e;
+},
+emit: function(t, e, i, n, r, s) {
+this._bubblingListeners && this._bubblingListeners.emit(t, e, i, n, r, s);
+},
+dispatchEvent: function(t) {
+G(this, t);
+S.length = 0;
+},
+pauseSystemEvents: function(t) {
+h.pauseTarget(this, t);
+},
+resumeSystemEvents: function(t) {
+h.resumeTarget(this, t);
+},
+_hitTest: function(t, e) {
+var i = this._contentSize.width, n = this._contentSize.height, r = g, o = x, a = cc.Camera.findCamera(this);
+a ? a.getScreenToWorldPoint(t, r) : r.set(t);
+this._updateWorldMatrix();
+if (!s.mat4.invert(C, this._worldMatrix)) return !1;
+s.vec2.transformMat4(o, r, C);
+o.x += this._anchorPoint.x * i;
+o.y += this._anchorPoint.y * n;
+if (o.x >= 0 && o.y >= 0 && o.x <= i && o.y <= n) {
+if (e && e.mask) {
+for (var c = e.mask, l = this, h = 0; l && h < c.index; ++h, l = l.parent) ;
+if (l === c.node) {
+var u = l.getComponent(cc.Mask);
+return !u || !u.enabledInHierarchy || u._hitTest(r);
+}
+e.mask = null;
+return !0;
+}
+return !0;
+}
+return !1;
+},
+_getCapturingTargets: function(t, e) {
+for (var i = this.parent; i; ) {
+i._capturingListeners && i._capturingListeners.hasEventListener(t) && e.push(i);
+i = i.parent;
+}
+},
+_getBubblingTargets: function(t, e) {
+for (var i = this.parent; i; ) {
+i._bubblingListeners && i._bubblingListeners.hasEventListener(t) && e.push(i);
+i = i.parent;
+}
+},
+runAction: v ? function(t) {
+if (this.active) {
+cc.assertID(t, 1618);
+cc.director.getActionManager().addAction(t, this, !1);
+return t;
+}
+} : y,
+pauseAllActions: v ? function() {
+cc.director.getActionManager().pauseTarget(this);
+} : y,
+resumeAllActions: v ? function() {
+cc.director.getActionManager().resumeTarget(this);
+} : y,
+stopAllActions: v ? function() {
+cc.director.getActionManager().removeAllActionsFromTarget(this);
+} : y,
+stopAction: v ? function(t) {
+cc.director.getActionManager().removeAction(t);
+} : y,
+stopActionByTag: v ? function(t) {
+t !== cc.Action.TAG_INVALID ? cc.director.getActionManager().removeActionByTag(t, this) : cc.logID(1612);
+} : y,
+getActionByTag: v ? function(t) {
+if (t === cc.Action.TAG_INVALID) {
+cc.logID(1613);
+return null;
+}
+return cc.director.getActionManager().getActionByTag(t, this);
+} : function() {
+return null;
+},
+getNumberOfRunningActions: v ? function() {
+return cc.director.getActionManager().getNumberOfRunningActionsInTarget(this);
+} : function() {
+return 0;
+},
+getPosition: function(t) {
+return (t = t || cc.v3()).set(this._position);
+},
+setPosition: function(t, e) {
+var i;
+if (void 0 === e) {
+i = t.x;
+e = t.y;
+} else i = t;
+var n = this._position;
+if (n.x !== i || n.y !== e) {
+n.x = i;
+n.y = e;
+this.setLocalDirty(T.POSITION);
+this._renderFlag |= d.FLAG_WORLD_TRANSFORM;
+1 & this._eventMask && this.emit(E.POSITION_CHANGED);
+}
+},
+getScale: function(t) {
+if (t) return t.set(this._scale);
+0;
+return this._scale.x;
+},
+setScale: function(i, n) {
+if (i && "number" !== ("object" === (e = typeof i) ? t(i) : e)) {
+n = i.y;
+i = i.x;
+} else void 0 === n && (n = i);
+if (this._scale.x !== i || this._scale.y !== n) {
+this._scale.x = i;
+this._scale.y = n;
+this.setLocalDirty(T.SCALE);
+this._renderFlag |= d.FLAG_TRANSFORM;
+2 & this._eventMask && this.emit(E.SCALE_CHANGED);
+}
+},
+getRotation: function(t) {
+if (t instanceof cc.Quat) return t.set(this._quat);
+0;
+return -this.angle;
+},
+setRotation: function(i, n, r, s) {
+if ("number" === ("object" === (e = typeof i) ? t(i) : e) && void 0 === n) {
+0;
+this.angle = -i;
+} else {
+var o = i;
+if (void 0 === n) {
+o = i.x;
+n = i.y;
+r = i.z;
+s = i.w;
+}
+var a = this._quat;
+if (a.x !== o || a.y !== n || a.z !== r || a.w !== s) {
+a.x = o;
+a.y = n;
+a.z = r;
+a.w = s;
+this.setLocalDirty(T.ROTATION);
+this._renderFlag |= d.FLAG_TRANSFORM;
+4 & this._eventMask && this.emit(E.ROTATION_CHANGED);
+0;
+}
+}
+},
+getContentSize: function() {
+return cc.size(this._contentSize.width, this._contentSize.height);
+},
+setContentSize: function(t, e) {
+var i = this._contentSize;
+if (void 0 === e) {
+if (t.width === i.width && t.height === i.height) return;
+0;
+i.width = t.width;
+i.height = t.height;
+} else {
+if (t === i.width && e === i.height) return;
+0;
+i.width = t;
+i.height = e;
+}
+8 & this._eventMask && this.emit(E.SIZE_CHANGED);
+},
+getAnchorPoint: function() {
+return cc.v2(this._anchorPoint);
+},
+setAnchorPoint: function(t, e) {
+var i = this._anchorPoint;
+if (void 0 === e) {
+if (t.x === i.x && t.y === i.y) return;
+i.x = t.x;
+i.y = t.y;
+} else {
+if (t === i.x && e === i.y) return;
+i.x = t;
+i.y = e;
+}
+this.setLocalDirty(T.POSITION);
+16 & this._eventMask && this.emit(E.ANCHOR_CHANGED);
+},
+_invTransformPoint: function(t, e) {
+this._parent ? this._parent._invTransformPoint(t, e) : s.vec3.copy(t, e);
+s.vec3.sub(t, t, this._position);
+s.quat.conjugate(A, this._quat);
+s.vec3.transformQuat(t, t, A);
+s.vec3.inverseSafe(b, this._scale);
+s.vec3.mul(t, t, b);
+return t;
+},
+getWorldPosition: function(t) {
+s.vec3.copy(t, this._position);
+for (var e = this._parent; e; ) {
+s.vec3.mul(t, t, e._scale);
+s.vec3.transformQuat(t, t, e._quat);
+s.vec3.add(t, t, e._position);
+e = e._parent;
+}
+return t;
+},
+setWorldPosition: function(t) {
+this._parent ? this._parent._invTransformPoint(this._position, t) : s.vec3.copy(this._position, t);
+this.setLocalDirty(T.POSITION);
+1 & this._eventMask && this.emit(E.POSITION_CHANGED);
+},
+getWorldRotation: function(t) {
+s.quat.copy(t, this._quat);
+for (var e = this._parent; e; ) {
+s.quat.mul(t, e._quat, t);
+e = e._parent;
+}
+return t;
+},
+setWorldRotation: function(t) {
+if (this._parent) {
+this._parent.getWorldRotation(this._quat);
+s.quat.conjugate(this._quat, this._quat);
+s.quat.mul(this._quat, this._quat, t);
+} else s.quat.copy(this._quat, s.quat);
+this._toEuler();
+this.setLocalDirty(T.ROTATION);
+},
+getWorldScale: function(t) {
+s.vec3.copy(t, this._scale);
+for (var e = this._parent; e; ) {
+s.vec3.mul(t, t, e._scale);
+e = e._parent;
+}
+return t;
+},
+setWorldScale: function(t) {
+if (this._parent) {
+this._parent.getWorldScale(this._scale);
+s.vec3.div(this._scale, t, this._scale);
+} else s.vec3.copy(this._scale, t);
+this.setLocalDirty(T.SCALE);
+},
+getWorldRT: function(t) {
+var e = b, i = A;
+s.vec3.copy(e, this._position);
+s.quat.copy(i, this._quat);
+for (var n = this._parent; n; ) {
+s.vec3.mul(e, e, n._scale);
+s.vec3.transformQuat(e, e, n._quat);
+s.vec3.add(e, e, n._position);
+s.quat.mul(i, n._quat, i);
+n = n._parent;
+}
+s.mat4.fromRT(t, i, e);
+return t;
+},
+lookAt: function(t, e) {
+this.getWorldPosition(b);
+s.vec3.sub(b, b, t);
+s.vec3.normalize(b, b);
+s.quat.fromViewUp(A, b, e);
+this.setWorldRotation(A);
+},
+_updateLocalMatrix: function() {
+var t = this._localMatDirty;
+if (t) {
+var e = this._matrix;
+if (t & (T.RT | T.SKEW)) {
+var i = -this._eulerAngles.z, n = this._skewX || this._skewY, r = this._scale.x, s = this._scale.y;
+if (i || n) {
+var o = 1, a = 0, c = 0, l = 1;
+if (i) {
+var h = i * p;
+c = Math.sin(h);
+o = l = Math.cos(h);
+a = -c;
+}
+e.m00 = o *= r;
+e.m01 = a *= r;
+e.m04 = c *= s;
+e.m05 = l *= s;
+if (n) {
+var u = e.m00, _ = e.m01, f = e.m04, d = e.m05, m = Math.tan(this._skewX * p), v = Math.tan(this._skewY * p);
+Infinity === m && (m = 99999999);
+Infinity === v && (v = 99999999);
+e.m00 = u + f * v;
+e.m01 = _ + d * v;
+e.m04 = f + u * m;
+e.m05 = d + _ * m;
+}
+} else {
+e.m00 = r;
+e.m01 = 0;
+e.m04 = 0;
+e.m05 = s;
+}
+}
+e.m12 = this._position.x;
+e.m13 = this._position.y;
+this._localMatDirty = 0;
+this._worldMatDirty = !0;
+}
+},
+_calculWorldMatrix: function() {
+this._localMatDirty && this._updateLocalMatrix();
+var t = this._parent;
+t ? this._mulMat(this._worldMatrix, t._worldMatrix, this._matrix) : s.mat4.copy(this._worldMatrix, this._matrix);
+this._worldMatDirty = !1;
+},
+_mulMat: function(t, e, i) {
+var n = e.m00, r = e.m01, s = e.m04, o = e.m05, a = e.m12, c = e.m13, l = i.m00, h = i.m01, u = i.m04, _ = i.m05, f = i.m12, d = i.m13;
+if (0 !== r || 0 !== s) {
+t.m00 = l * n + h * s;
+t.m01 = l * r + h * o;
+t.m04 = u * n + _ * s;
+t.m05 = u * r + _ * o;
+t.m12 = n * f + s * d + a;
+t.m13 = r * f + o * d + c;
+} else {
+t.m00 = l * n;
+t.m01 = h * o;
+t.m04 = u * n;
+t.m05 = _ * o;
+t.m12 = n * f + a;
+t.m13 = o * d + c;
+}
+},
+_updateWorldMatrix: function() {
+this._parent && this._parent._updateWorldMatrix();
+if (this._worldMatDirty) {
+this._calculWorldMatrix();
+for (var t = this._children, e = 0, i = t.length; e < i; e++) t[e]._worldMatDirty = !0;
+}
+},
+setLocalDirty: function(t) {
+this._localMatDirty = this._localMatDirty | t;
+this._worldMatDirty = !0;
+},
+setWorldDirty: function() {
+this._worldMatDirty = !0;
+},
+getLocalMatrix: function(t) {
+this._updateLocalMatrix();
+return s.mat4.copy(t, this._matrix);
+},
+getWorldMatrix: function(t) {
+this._updateWorldMatrix();
+return s.mat4.copy(t, this._worldMatrix);
+},
+convertToNodeSpaceAR: function(t, e) {
+this._updateWorldMatrix();
+s.mat4.invert(C, this._worldMatrix);
+if (t instanceof cc.Vec2) {
+e = e || new cc.Vec2();
+return s.vec2.transformMat4(e, t, C);
+}
+e = e || new cc.Vec3();
+return s.vec3.transformMat4(e, t, C);
+},
+convertToWorldSpaceAR: function(t, e) {
+this._updateWorldMatrix();
+if (t instanceof cc.Vec2) {
+e = e || new cc.Vec2();
+return s.vec2.transformMat4(e, t, this._worldMatrix);
+}
+e = e || new cc.Vec3();
+return s.vec3.transformMat4(e, t, this._worldMatrix);
+},
+convertToNodeSpace: function(t) {
+this._updateWorldMatrix();
+s.mat4.invert(C, this._worldMatrix);
+var e = new cc.Vec2();
+s.vec2.transformMat4(e, t, C);
+e.x += this._anchorPoint.x * this._contentSize.width;
+e.y += this._anchorPoint.y * this._contentSize.height;
+return e;
+},
+convertToWorldSpace: function(t) {
+this._updateWorldMatrix();
+var e = new cc.Vec2(t.x - this._anchorPoint.x * this._contentSize.width, t.y - this._anchorPoint.y * this._contentSize.height);
+return s.vec2.transformMat4(e, e, this._worldMatrix);
+},
+getNodeToParentTransform: function(t) {
+t || (t = l.identity());
+this._updateLocalMatrix();
+var e = this._contentSize;
+b.x = -this._anchorPoint.x * e.width;
+b.y = -this._anchorPoint.y * e.height;
+s.mat4.copy(C, this._matrix);
+s.mat4.translate(C, C, b);
+return l.fromMat4(t, C);
+},
+getNodeToParentTransformAR: function(t) {
+t || (t = l.identity());
+this._updateLocalMatrix();
+return l.fromMat4(t, this._matrix);
+},
+getNodeToWorldTransform: function(t) {
+t || (t = l.identity());
+this._updateWorldMatrix();
+var e = this._contentSize;
+b.x = -this._anchorPoint.x * e.width;
+b.y = -this._anchorPoint.y * e.height;
+s.mat4.copy(C, this._worldMatrix);
+s.mat4.translate(C, C, b);
+return l.fromMat4(t, C);
+},
+getNodeToWorldTransformAR: function(t) {
+t || (t = l.identity());
+this._updateWorldMatrix();
+return l.fromMat4(t, this._worldMatrix);
+},
+getParentToNodeTransform: function(t) {
+t || (t = l.identity());
+this._updateLocalMatrix();
+s.mat4.invert(C, this._matrix);
+return l.fromMat4(t, C);
+},
+getWorldToNodeTransform: function(t) {
+t || (t = l.identity());
+this._updateWorldMatrix();
+s.mat4.invert(C, this._worldMatrix);
+return l.fromMat4(t, C);
+},
+convertTouchToNodeSpace: function(t) {
+return this.convertToNodeSpace(t.getLocation());
+},
+convertTouchToNodeSpaceAR: function(t) {
+return this.convertToNodeSpaceAR(t.getLocation());
+},
+getBoundingBox: function() {
+this._updateLocalMatrix();
+var t = this._contentSize.width, e = this._contentSize.height, i = cc.rect(-this._anchorPoint.x * t, -this._anchorPoint.y * e, t, e);
+return i.transformMat4(i, this._matrix);
+},
+getBoundingBoxToWorld: function() {
+if (this._parent) {
+this._parent._updateWorldMatrix();
+return this._getBoundingBoxTo(this._parent._worldMatrix);
+}
+return this.getBoundingBox();
+},
+_getBoundingBoxTo: function(t) {
+this._updateLocalMatrix();
+var e = this._contentSize.width, i = this._contentSize.height, n = cc.rect(-this._anchorPoint.x * e, -this._anchorPoint.y * i, e, i);
+t = s.mat4.mul(this._worldMatrix, t, this._matrix);
+n.transformMat4(n, t);
+if (!this._children) return n;
+for (var r = this._children, o = 0; o < r.length; o++) {
+var a = r[o];
+if (a && a.active) {
+var c = a._getBoundingBoxTo(t);
+c && n.union(n, c);
+}
+}
+return n;
+},
+_updateOrderOfArrival: function() {
+var t = this._parent ? ++this._parent._childArrivalOrder : 0;
+this._localZOrder = 4294901760 & this._localZOrder | t;
+if (65535 === t) {
+var e = this._parent._children;
+e.forEach((function(t, e) {
+t._localZOrder = 4294901760 & t._localZOrder | e + 1;
+}));
+this._parent._childArrivalOrder = e.length;
+}
+},
+addChild: function(t, e, i) {
+0;
+cc.assertID(t, 1606);
+cc.assertID(null === t._parent, 1605);
+t.parent = this;
+void 0 !== e && (t.zIndex = e);
+void 0 !== i && (t.name = i);
+},
+cleanup: function() {
+v && cc.director.getActionManager().removeAllActionsFromTarget(this);
+h.removeListeners(this);
+var t, e, i = this._children.length;
+for (t = 0; t < i; ++t) (e = this._children[t]) && e.cleanup();
+},
+sortAllChildren: function() {
+if (this._reorderChildDirty) {
+h._setDirtyForNode(this);
+this._reorderChildDirty = !1;
+var t = this._children;
+if (t.length > 1) {
+var e, i, n, r = t.length;
+for (e = 1; e < r; e++) {
+n = t[e];
+i = e - 1;
+for (;i >= 0 && n._localZOrder < t[i]._localZOrder; ) {
+t[i + 1] = t[i];
+i--;
+}
+t[i + 1] = n;
+}
+this.emit(E.CHILD_REORDER, this);
+}
+cc.director.__fastOff(cc.Director.EVENT_AFTER_UPDATE, this.sortAllChildren, this);
+}
+},
+_delaySort: function() {
+if (!this._reorderChildDirty) {
+this._reorderChildDirty = !0;
+cc.director.__fastOn(cc.Director.EVENT_AFTER_UPDATE, this.sortAllChildren, this);
+}
+},
+_restoreProperties: !1,
+onRestore: !1
+};
+0;
+var H = cc.Class(W), q = H.prototype;
+_.getset(q, "position", q.getPosition, q.setPosition, !1, !0);
+cc.Node = n.exports = H;
+}), {
+"./event-manager": 131,
+"./event/event": 134,
+"./event/event-target": 133,
+"./platform/CCMacro": 206,
+"./platform/js": 221,
+"./renderer/render-flow": 245,
+"./utils/affine-transform": 286,
+"./utils/base-node": 287,
+"./utils/math-pools": 295,
+"./utils/prefab-helper": 299,
+"./vmath": 317
+} ],
+53: [ (function(t, e, i) {
+"use strict";
+var n = t("./CCNode"), r = t("./renderer/render-flow"), s = (cc.Object.Flags.HideInHierarchy,
+n._LocalDirtyFlag), o = cc.Class({
+name: "cc.PrivateNode",
+extends: n,
+properties: {
+x: {
+get: function() {
+return this._originPos.x;
+},
+set: function(t) {
+var e = this._originPos;
+if (t !== e.x) {
+e.x = t;
+this._posDirty(!0);
+}
+},
+override: !0
+},
+y: {
+get: function() {
+return this._originPos.y;
+},
+set: function(t) {
+var e = this._originPos;
+if (t !== e.y) {
+e.y = t;
+this._posDirty(!0);
+}
+},
+override: !0
+},
+zIndex: {
+get: function() {
+return cc.macro.MIN_ZINDEX;
+},
+set: function() {
+cc.warnID(1638);
+},
+override: !0
+},
+showInEditor: {
+default: !1,
+editorOnly: !0,
+override: !0
+}
+},
+ctor: function(t) {
+this._localZOrder = cc.macro.MIN_ZINDEX << 16;
+this._originPos = cc.v2();
+0;
+},
+_posDirty: function(t) {
+this.setLocalDirty(s.POSITION);
+this._renderFlag |= r.FLAG_TRANSFORM;
+!0 === t && 1 & this._eventMask && this.emit(n.EventType.POSITION_CHANGED);
+},
+_updateLocalMatrix: function() {
+if (this._localMatDirty) {
+var t = this.parent;
+if (t) {
+this._position.x = this._originPos.x - (t._anchorPoint.x - .5) * t._contentSize.width;
+this._position.y = this._originPos.y - (t._anchorPoint.y - .5) * t._contentSize.height;
+}
+this._super();
+}
+},
+getPosition: function() {
+return new cc.Vec2(this._originPos);
+},
+setPosition: function(t, e) {
+void 0 === e && (e = (t = t.x).y);
+var i = this._originPos;
+if (i.x !== t || i.y !== e) {
+i.x = t;
+i.y = e;
+this._posDirty(!0);
+}
+},
+setParent: function(t) {
+var e = this._parent;
+this._super(t);
+if (e !== t) {
+e && e.off(n.EventType.ANCHOR_CHANGED, this._posDirty, this);
+t && t.on(n.EventType.ANCHOR_CHANGED, this._posDirty, this);
+}
+},
+_updateOrderOfArrival: function() {}
+});
+cc.js.getset(o.prototype, "parent", o.prototype.getParent, o.prototype.setParent);
+cc.js.getset(o.prototype, "position", o.prototype.getPosition, o.prototype.setPosition);
+cc.PrivateNode = e.exports = o;
+}), {
+"./CCNode": 52,
+"./renderer/render-flow": 245
+} ],
+54: [ (function(t, e, i) {
+"use strict";
+cc.Scene = cc.Class({
+name: "cc.Scene",
+extends: t("./CCNode"),
+properties: {
+_is3DNode: {
+default: !0,
+override: !0
+},
+autoReleaseAssets: {
+default: void 0,
+type: cc.Boolean
+}
+},
+ctor: function() {
+this._anchorPoint.x = 0;
+this._anchorPoint.y = 0;
+this._activeInHierarchy = !1;
+this._inited = !cc.game._isCloning;
+0;
+this.dependAssets = null;
+},
+destroy: function() {
+if (cc.Object.prototype.destroy.call(this)) for (var t = this._children, e = 0; e < t.length; ++e) t[e].active = !1;
+this._active = !1;
+this._activeInHierarchy = !1;
+},
+_onHierarchyChanged: function() {},
+_instantiate: null,
+_load: function() {
+if (!this._inited) {
+0;
+this._onBatchCreated();
+this._inited = !0;
+}
+},
+_activate: function(t) {
+t = !1 !== t;
+0;
+cc.director._nodeActivator.activateNode(this, t);
+}
+});
+e.exports = cc.Scene;
+}), {
+"./CCNode": 52
+} ],
+55: [ (function(i, n, r) {
+"use strict";
+var s = i("./platform/js"), o = new (i("./platform/id-generater"))("Scheduler"), a = function(t, e, i, n) {
+this.target = t;
+this.priority = e;
+this.paused = i;
+this.markedForDeletion = n;
+}, c = [];
+a.get = function(t, e, i, n) {
+var r = c.pop();
+if (r) {
+r.target = t;
+r.priority = e;
+r.paused = i;
+r.markedForDeletion = n;
+} else r = new a(t, e, i, n);
+return r;
+};
+a.put = function(t) {
+if (c.length < 20) {
+t.target = null;
+c.push(t);
+}
+};
+var l = function(t, e, i, n) {
+this.list = t;
+this.entry = e;
+this.target = i;
+this.callback = n;
+}, h = [];
+l.get = function(t, e, i, n) {
+var r = h.pop();
+if (r) {
+r.list = t;
+r.entry = e;
+r.target = i;
+r.callback = n;
+} else r = new l(t, e, i, n);
+return r;
+};
+l.put = function(t) {
+if (h.length < 20) {
+t.list = t.entry = t.target = t.callback = null;
+h.push(t);
+}
+};
+var u = function(t, e, i, n, r, s) {
+var o = this;
+o.timers = t;
+o.target = e;
+o.timerIndex = i;
+o.currentTimer = n;
+o.currentTimerSalvaged = r;
+o.paused = s;
+}, _ = [];
+u.get = function(t, e, i, n, r, s) {
+var o = _.pop();
+if (o) {
+o.timers = t;
+o.target = e;
+o.timerIndex = i;
+o.currentTimer = n;
+o.currentTimerSalvaged = r;
+o.paused = s;
+} else o = new u(t, e, i, n, r, s);
+return o;
+};
+u.put = function(t) {
+if (_.length < 20) {
+t.timers = t.target = t.currentTimer = null;
+_.push(t);
+}
+};
+function f() {
+this._lock = !1;
+this._scheduler = null;
+this._elapsed = -1;
+this._runForever = !1;
+this._useDelay = !1;
+this._timesExecuted = 0;
+this._repeat = 0;
+this._delay = 0;
+this._interval = 0;
+this._target = null;
+this._callback = null;
+}
+var d = f.prototype;
+d.initWithCallback = function(t, e, i, n, r, s) {
+this._lock = !1;
+this._scheduler = t;
+this._target = i;
+this._callback = e;
+this._elapsed = -1;
+this._interval = n;
+this._delay = s;
+this._useDelay = this._delay > 0;
+this._repeat = r;
+this._runForever = this._repeat === cc.macro.REPEAT_FOREVER;
+return !0;
+};
+d.getInterval = function() {
+return this._interval;
+};
+d.setInterval = function(t) {
+this._interval = t;
+};
+d.update = function(t) {
+if (-1 === this._elapsed) {
+this._elapsed = 0;
+this._timesExecuted = 0;
+} else {
+this._elapsed += t;
+if (this._runForever && !this._useDelay) {
+if (this._elapsed >= this._interval) {
+this.trigger();
+this._elapsed = 0;
+}
+} else {
+if (this._useDelay) {
+if (this._elapsed >= this._delay) {
+this.trigger();
+this._elapsed -= this._delay;
+this._timesExecuted += 1;
+this._useDelay = !1;
+}
+} else if (this._elapsed >= this._interval) {
+this.trigger();
+this._elapsed = 0;
+this._timesExecuted += 1;
+}
+this._callback && !this._runForever && this._timesExecuted > this._repeat && this.cancel();
+}
+}
+};
+d.getCallback = function() {
+return this._callback;
+};
+d.trigger = function() {
+if (this._target && this._callback) {
+this._lock = !0;
+this._callback.call(this._target, this._elapsed);
+this._lock = !1;
+}
+};
+d.cancel = function() {
+this._scheduler.unschedule(this._callback, this._target);
+};
+var m = [];
+f.get = function() {
+return m.pop() || new f();
+};
+f.put = function(t) {
+if (m.length < 20 && !t._lock) {
+t._scheduler = t._target = t._callback = null;
+m.push(t);
+}
+};
+cc.Scheduler = function() {
+this._timeScale = 1;
+this._updatesNegList = [];
+this._updates0List = [];
+this._updatesPosList = [];
+this._hashForUpdates = s.createMap(!0);
+this._hashForTimers = s.createMap(!0);
+this._currentTarget = null;
+this._currentTargetSalvaged = !1;
+this._updateHashLocked = !1;
+this._arrayForTimers = [];
+};
+cc.Scheduler.prototype = {
+constructor: cc.Scheduler,
+_removeHashElement: function(t) {
+delete this._hashForTimers[t.target._id];
+for (var e = this._arrayForTimers, i = 0, n = e.length; i < n; i++) if (e[i] === t) {
+e.splice(i, 1);
+break;
+}
+u.put(t);
+},
+_removeUpdateFromHash: function(t) {
+var e = t.target._id, i = this._hashForUpdates[e];
+if (i) {
+for (var n = i.list, r = i.entry, s = 0, o = n.length; s < o; s++) if (n[s] === r) {
+n.splice(s, 1);
+break;
+}
+delete this._hashForUpdates[e];
+a.put(r);
+l.put(i);
+}
+},
+_priorityIn: function(t, e, i) {
+for (var n = 0; n < t.length; n++) if (i < t[n].priority) {
+t.splice(n, 0, e);
+return;
+}
+t.push(e);
+},
+_appendIn: function(t, e) {
+t.push(e);
+},
+enableForTarget: function(t) {
+t._id || (t.__instanceId ? cc.warnID(1513) : t._id = o.getNewId());
+},
+setTimeScale: function(t) {
+this._timeScale = t;
+},
+getTimeScale: function() {
+return this._timeScale;
+},
+update: function(t) {
+this._updateHashLocked = !0;
+1 !== this._timeScale && (t *= this._timeScale);
+var e, i, n, r;
+for (e = 0, n = (i = this._updatesNegList).length; e < n; e++) (r = i[e]).paused || r.markedForDeletion || r.target.update(t);
+for (e = 0, n = (i = this._updates0List).length; e < n; e++) (r = i[e]).paused || r.markedForDeletion || r.target.update(t);
+for (e = 0, n = (i = this._updatesPosList).length; e < n; e++) (r = i[e]).paused || r.markedForDeletion || r.target.update(t);
+var s, o = this._arrayForTimers;
+for (e = 0; e < o.length; e++) {
+s = o[e];
+this._currentTarget = s;
+this._currentTargetSalvaged = !1;
+if (!s.paused) for (s.timerIndex = 0; s.timerIndex < s.timers.length; ++s.timerIndex) {
+s.currentTimer = s.timers[s.timerIndex];
+s.currentTimerSalvaged = !1;
+s.currentTimer.update(t);
+s.currentTimer = null;
+}
+if (this._currentTargetSalvaged && 0 === this._currentTarget.timers.length) {
+this._removeHashElement(this._currentTarget);
+--e;
+}
+}
+for (e = 0, i = this._updatesNegList; e < i.length; ) (r = i[e]).markedForDeletion ? this._removeUpdateFromHash(r) : e++;
+for (e = 0, i = this._updates0List; e < i.length; ) (r = i[e]).markedForDeletion ? this._removeUpdateFromHash(r) : e++;
+for (e = 0, i = this._updatesPosList; e < i.length; ) (r = i[e]).markedForDeletion ? this._removeUpdateFromHash(r) : e++;
+this._updateHashLocked = !1;
+this._currentTarget = null;
+},
+schedule: function(i, n, r, s, o, a) {
+if ("function" !== ("object" === (e = typeof i) ? t(i) : e)) {
+var c = i;
+i = n;
+n = c;
+}
+if (4 === arguments.length || 5 === arguments.length) {
+a = !!s;
+s = cc.macro.REPEAT_FOREVER;
+o = 0;
+}
+cc.assertID(n, 1502);
+var l = n._id;
+if (!l) if (n.__instanceId) {
+cc.warnID(1513);
+l = n._id = n.__instanceId;
+} else cc.errorID(1510);
+var h, _, d = this._hashForTimers[l];
+if (d) d.paused !== a && cc.warnID(1511); else {
+d = u.get(null, n, 0, null, null, a);
+this._arrayForTimers.push(d);
+this._hashForTimers[l] = d;
+}
+if (null == d.timers) d.timers = []; else for (_ = 0; _ < d.timers.length; ++_) if ((h = d.timers[_]) && i === h._callback) {
+cc.logID(1507, h.getInterval(), r);
+h._interval = r;
+return;
+}
+(h = f.get()).initWithCallback(this, i, n, r, s, o);
+d.timers.push(h);
+this._currentTarget === d && this._currentTargetSalvaged && (this._currentTargetSalvaged = !1);
+},
+scheduleUpdate: function(t, e, i) {
+var n = t._id;
+if (!n) if (t.__instanceId) {
+cc.warnID(1513);
+n = t._id = t.__instanceId;
+} else cc.errorID(1510);
+var r = this._hashForUpdates[n];
+if (r && r.entry) {
+if (r.entry.priority === e) {
+r.entry.markedForDeletion = !1;
+r.entry.paused = i;
+return;
+}
+if (this._updateHashLocked) {
+cc.logID(1506);
+r.entry.markedForDeletion = !1;
+r.entry.paused = i;
+return;
+}
+this.unscheduleUpdate(t);
+}
+var s, o = a.get(t, e, i, !1);
+if (0 === e) {
+s = this._updates0List;
+this._appendIn(s, o);
+} else {
+s = e < 0 ? this._updatesNegList : this._updatesPosList;
+this._priorityIn(s, o, e);
+}
+this._hashForUpdates[n] = l.get(s, o, t, null);
+},
+unschedule: function(t, e) {
+if (e && t) {
+var i = e._id;
+if (!i) if (e.__instanceId) {
+cc.warnID(1513);
+i = e._id = e.__instanceId;
+} else cc.errorID(1510);
+var n = this._hashForTimers[i];
+if (n) for (var r = n.timers, s = 0, o = r.length; s < o; s++) {
+var a = r[s];
+if (t === a._callback) {
+a !== n.currentTimer || n.currentTimerSalvaged || (n.currentTimerSalvaged = !0);
+r.splice(s, 1);
+f.put(a);
+n.timerIndex >= s && n.timerIndex--;
+0 === r.length && (this._currentTarget === n ? this._currentTargetSalvaged = !0 : this._removeHashElement(n));
+return;
+}
+}
+}
+},
+unscheduleUpdate: function(t) {
+if (t) {
+var e = t._id;
+if (!e) if (t.__instanceId) {
+cc.warnID(1513);
+e = t._id = t.__instanceId;
+} else cc.errorID(1510);
+var i = this._hashForUpdates[e];
+i && (this._updateHashLocked ? i.entry.markedForDeletion = !0 : this._removeUpdateFromHash(i.entry));
+}
+},
+unscheduleAllForTarget: function(t) {
+if (t) {
+var e = t._id;
+if (!e) if (t.__instanceId) {
+cc.warnID(1513);
+e = t._id = t.__instanceId;
+} else cc.errorID(1510);
+var i = this._hashForTimers[e];
+if (i) {
+var n = i.timers;
+n.indexOf(i.currentTimer) > -1 && !i.currentTimerSalvaged && (i.currentTimerSalvaged = !0);
+for (var r = 0, s = n.length; r < s; r++) f.put(n[r]);
+n.length = 0;
+this._currentTarget === i ? this._currentTargetSalvaged = !0 : this._removeHashElement(i);
+}
+this.unscheduleUpdate(t);
+}
+},
+unscheduleAll: function() {
+this.unscheduleAllWithMinPriority(cc.Scheduler.PRIORITY_SYSTEM);
+},
+unscheduleAllWithMinPriority: function(t) {
+var e, i, n, r = this._arrayForTimers;
+for (e = r.length - 1; e >= 0; e--) {
+i = r[e];
+this.unscheduleAllForTarget(i.target);
+}
+var s = 0;
+if (t < 0) for (e = 0; e < this._updatesNegList.length; ) {
+s = this._updatesNegList.length;
+(n = this._updatesNegList[e]) && n.priority >= t && this.unscheduleUpdate(n.target);
+s == this._updatesNegList.length && e++;
+}
+if (t <= 0) for (e = 0; e < this._updates0List.length; ) {
+s = this._updates0List.length;
+(n = this._updates0List[e]) && this.unscheduleUpdate(n.target);
+s == this._updates0List.length && e++;
+}
+for (e = 0; e < this._updatesPosList.length; ) {
+s = this._updatesPosList.length;
+(n = this._updatesPosList[e]) && n.priority >= t && this.unscheduleUpdate(n.target);
+s == this._updatesPosList.length && e++;
+}
+},
+isScheduled: function(t, e) {
+cc.assertID(t, 1508);
+cc.assertID(e, 1509);
+var i = e._id;
+if (!i) if (e.__instanceId) {
+cc.warnID(1513);
+i = e._id = e.__instanceId;
+} else cc.errorID(1510);
+var n = this._hashForTimers[i];
+if (!n) return !1;
+if (null == n.timers) return !1;
+for (var r = n.timers, s = 0; s < r.length; ++s) {
+if (t === r[s]._callback) return !0;
+}
+return !1;
+},
+pauseAllTargets: function() {
+return this.pauseAllTargetsWithMinPriority(cc.Scheduler.PRIORITY_SYSTEM);
+},
+pauseAllTargetsWithMinPriority: function(t) {
+var e, i, n, r, s = [], o = this._arrayForTimers;
+for (i = 0, n = o.length; i < n; i++) if (e = o[i]) {
+e.paused = !0;
+s.push(e.target);
+}
+if (t < 0) for (i = 0; i < this._updatesNegList.length; i++) if ((r = this._updatesNegList[i]) && r.priority >= t) {
+r.paused = !0;
+s.push(r.target);
+}
+if (t <= 0) for (i = 0; i < this._updates0List.length; i++) if (r = this._updates0List[i]) {
+r.paused = !0;
+s.push(r.target);
+}
+for (i = 0; i < this._updatesPosList.length; i++) if ((r = this._updatesPosList[i]) && r.priority >= t) {
+r.paused = !0;
+s.push(r.target);
+}
+return s;
+},
+resumeTargets: function(t) {
+if (t) for (var e = 0; e < t.length; e++) this.resumeTarget(t[e]);
+},
+pauseTarget: function(t) {
+cc.assertID(t, 1503);
+var e = t._id;
+if (!e) if (t.__instanceId) {
+cc.warnID(1513);
+e = t._id = t.__instanceId;
+} else cc.errorID(1510);
+var i = this._hashForTimers[e];
+i && (i.paused = !0);
+var n = this._hashForUpdates[e];
+n && (n.entry.paused = !0);
+},
+resumeTarget: function(t) {
+cc.assertID(t, 1504);
+var e = t._id;
+if (!e) if (t.__instanceId) {
+cc.warnID(1513);
+e = t._id = t.__instanceId;
+} else cc.errorID(1510);
+var i = this._hashForTimers[e];
+i && (i.paused = !1);
+var n = this._hashForUpdates[e];
+n && (n.entry.paused = !1);
+},
+isTargetPaused: function(t) {
+cc.assertID(t, 1505);
+var e = t._id;
+if (!e) if (t.__instanceId) {
+cc.warnID(1513);
+e = t._id = t.__instanceId;
+} else cc.errorID(1510);
+var i = this._hashForTimers[e];
+if (i) return i.paused;
+var n = this._hashForUpdates[e];
+return !!n && n.entry.paused;
+}
+};
+cc.Scheduler.PRIORITY_SYSTEM = 1 << 31;
+cc.Scheduler.PRIORITY_NON_SYSTEM = cc.Scheduler.PRIORITY_SYSTEM + 1;
+n.exports = cc.Scheduler;
+}), {
+"./platform/id-generater": 217,
+"./platform/js": 221
+} ],
+56: [ (function(t, e, i) {
+"use strict";
+var n = t("./CCRawAsset");
+cc.Asset = cc.Class({
+name: "cc.Asset",
+extends: n,
+ctor: function() {
+this.loaded = !0;
+this.url = "";
+},
+properties: {
+nativeUrl: {
+get: function() {
+if (this._native) {
+var t = this._native;
+if (47 === t.charCodeAt(0)) return t.slice(1);
+if (cc.AssetLibrary) {
+var e = cc.AssetLibrary.getLibUrlNoExt(this._uuid, !0);
+return 46 === t.charCodeAt(0) ? e + t : e + "/" + t;
+}
+cc.errorID(6400);
+}
+return "";
+},
+visible: !1
+},
+_native: "",
+_nativeAsset: {
+get: function() {
+return this._$nativeAsset;
+},
+set: function(t) {
+this._$nativeAsset = t;
+}
+}
+},
+statics: {
+deserialize: !1,
+preventDeferredLoadDependents: !1,
+preventPreloadNativeObject: !1
+},
+toString: function() {
+return this.nativeUrl;
+},
+serialize: !1,
+createNode: null,
+_setRawAsset: function(t, e) {
+this._native = !1 !== e ? t || void 0 : "/" + t;
+}
+});
+e.exports = cc.Asset;
+}), {
+"./CCRawAsset": 65
+} ],
+57: [ (function(t, e, i) {
+"use strict";
+var n = t("./CCAsset"), r = t("../event/event-target"), s = cc.Enum({
+WEB_AUDIO: 0,
+DOM_AUDIO: 1
+}), o = cc.Class({
+name: "cc.AudioClip",
+extends: n,
+mixins: [ r ],
+ctor: function() {
+this.loaded = !1;
+this._audio = null;
+},
+properties: {
+loadMode: {
+default: s.WEB_AUDIO,
+type: s
+},
+_nativeAsset: {
+get: function() {
+return this._audio;
+},
+set: function(t) {
+t instanceof cc.AudioClip ? this._audio = t._nativeAsset : this._audio = t;
+if (this._audio) {
+this.loaded = !0;
+this.emit("load");
+}
+},
+override: !0
+}
+},
+statics: {
+LoadMode: s,
+_loadByUrl: function(t, e) {
+var i = cc.loader.getItem(t) || cc.loader.getItem(t + "?useDom=1");
+i && i.complete ? i._owner instanceof o ? e(null, i._owner) : e(null, i.content) : cc.loader.load(t, (function(n, r) {
+if (n) return e(n);
+i = cc.loader.getItem(t) || cc.loader.getItem(t + "?useDom=1");
+e(null, i.content);
+}));
+}
+},
+destroy: function() {
+cc.audioEngine.uncache(this);
+this._super();
+}
+});
+cc.AudioClip = o;
+e.exports = o;
+}), {
+"../event/event-target": 133,
+"./CCAsset": 56
+} ],
+58: [ (function(t, e, i) {
+"use strict";
+var n = function() {
+this.u = 0;
+this.v = 0;
+this.w = 0;
+this.h = 0;
+this.offsetX = 0;
+this.offsetY = 0;
+this.textureID = 0;
+this.valid = !1;
+this.xAdvance = 0;
+}, r = function(t) {
+this._letterDefinitions = {};
+this._texture = t;
+};
+r.prototype = {
+constructor: r,
+addLetterDefinitions: function(t, e) {
+this._letterDefinitions[t] = e;
+},
+cloneLetterDefinition: function() {
+var t = {};
+for (var e in this._letterDefinitions) {
+var i = new n();
+cc.js.mixin(i, this._letterDefinitions[e]);
+t[e] = i;
+}
+return t;
+},
+getTexture: function() {
+return this._texture;
+},
+getLetter: function(t) {
+return this._letterDefinitions[t];
+},
+getLetterDefinitionForChar: function(t) {
+var e = t.charCodeAt(0);
+return this._letterDefinitions.hasOwnProperty(e) ? this._letterDefinitions[e] : null;
+},
+clear: function() {
+this._letterDefinitions = {};
+}
+};
+var s = cc.Class({
+name: "cc.BitmapFont",
+extends: cc.Font,
+properties: {
+fntDataStr: {
+default: ""
+},
+spriteFrame: {
+default: null,
+type: cc.SpriteFrame
+},
+fontSize: {
+default: -1
+},
+_fntConfig: null,
+_fontDefDictionary: null
+},
+onLoad: function() {
+var t = this.spriteFrame;
+!this._fontDefDictionary && t && (this._fontDefDictionary = new r(t._texture));
+var e = this._fntConfig;
+if (e) {
+var i = e.fontDefDictionary;
+for (var s in i) {
+var o = new n(), a = i[s].rect;
+o.offsetX = i[s].xOffset;
+o.offsetY = i[s].yOffset;
+o.w = a.width;
+o.h = a.height;
+o.u = a.x;
+o.v = a.y;
+o.textureID = 0;
+o.valid = !0;
+o.xAdvance = i[s].xAdvance;
+this._fontDefDictionary.addLetterDefinitions(s, o);
+}
+}
+},
+clearVerticalKeningDict: function() {
+var t = this._fntConfig;
+t ? t.kerningVDict = null : cc.warnID(0, "The fnt config is not exists!");
+},
+setVerticalKerningDict: function(t) {
+var e = this._fntConfig;
+if (e) {
+if (!e.kerningVDict && t) {
+var i = {};
+t.forEach((function(t) {
+i[t.first << 16 | 65535 & t.second] = t.amount;
+}));
+e.kerningVDict = i;
+}
+} else cc.warnID(0, "The fnt config is not exists!");
+}
+});
+cc.BitmapFont = s;
+cc.BitmapFont.FontLetterDefinition = n;
+cc.BitmapFont.FontAtlas = r;
+e.exports = s;
+}), {} ],
+59: [ (function(t, e, i) {
+"use strict";
+var n = cc.Class({
+name: "cc.BufferAsset",
+extends: cc.Asset,
+ctor: function() {
+this._buffer = null;
+},
+properties: {
+_nativeAsset: {
+get: function() {
+return this._buffer;
+},
+set: function(t) {
+this._buffer = t.buffer || t;
+},
+override: !0
+},
+buffer: function() {
+return this._buffer;
+}
+}
+});
+cc.BufferAsset = e.exports = n;
+}), {} ],
+60: [ (function(t, e, i) {
+"use strict";
+var n = t("./CCAsset"), r = cc.Class({
+name: "cc.EffectAsset",
+extends: n,
+properties: {
+properties: Object,
+techniques: [],
+shaders: []
+},
+onLoad: function() {
+if (cc.game.renderType !== cc.game.RENDER_TYPE_CANVAS) for (var t = cc.renderer._forward._programLib, e = 0; e < this.shaders.length; e++) t.define(this.shaders[e]);
+}
+});
+e.exports = cc.EffectAsset = r;
+}), {
+"./CCAsset": 56
+} ],
+61: [ (function(t, e, i) {
+"use strict";
+var n = cc.Class({
+name: "cc.Font",
+extends: cc.Asset
+});
+cc.Font = e.exports = n;
+}), {} ],
+62: [ (function(t, e, i) {
+"use strict";
+var n = cc.Class({
+name: "cc.JsonAsset",
+extends: cc.Asset,
+properties: {
+json: null
+}
+});
+e.exports = cc.JsonAsset = n;
+}), {} ],
+63: [ (function(t, e, i) {
+"use strict";
+var n = cc.Class({
+name: "cc.LabelAtlas",
+extends: cc.BitmapFont,
+onLoad: function() {
+this.spriteFrame ? this._fntConfig ? this._super() : cc.warnID(9101, this.name) : cc.warnID(9100, this.name);
+}
+});
+cc.LabelAtlas = n;
+e.exports = n;
+}), {} ],
+64: [ (function(t, e, i) {
+"use strict";
+var n = cc.Enum({
+AUTO: 0,
+SINGLE_INSTANCE: 1,
+MULTI_INSTANCE: 2
+}), r = cc.Class({
+name: "cc.Prefab",
+extends: cc.Asset,
+ctor: function() {
+this._createFunction = null;
+this._instantiatedTimes = 0;
+},
+properties: {
+data: null,
+optimizationPolicy: n.AUTO,
+asyncLoadAssets: !1,
+readonly: {
+default: !1,
+editorOnly: !0
+}
+},
+statics: {
+OptimizationPolicy: n,
+OptimizationPolicyThreshold: 3
+},
+createNode: !1,
+compileCreateFunction: function() {
+var e = t("../platform/instantiate-jit");
+this._createFunction = e.compile(this.data);
+},
+_doInstantiate: function(t) {
+this.data._prefab ? this.data._prefab._synced = !0 : cc.warnID(3700);
+this._createFunction || this.compileCreateFunction();
+return this._createFunction(t);
+},
+_instantiate: function() {
+var t;
+if (this.optimizationPolicy !== n.SINGLE_INSTANCE && (this.optimizationPolicy === n.MULTI_INSTANCE || this._instantiatedTimes + 1 >= r.OptimizationPolicyThreshold)) {
+t = this._doInstantiate();
+this.data._instantiate(t);
+} else {
+this.data._prefab._synced = !0;
+t = this.data._instantiate();
+}
+++this._instantiatedTimes;
+return t;
+}
+});
+cc.Prefab = e.exports = r;
+cc.js.obsolete(cc, "cc._Prefab", "Prefab");
+}), {
+"../platform/instantiate-jit": 219
+} ],
+65: [ (function(t, e, i) {
+"use strict";
+var n = t("../platform/CCObject"), r = t("../platform/js");
+cc.RawAsset = cc.Class({
+name: "cc.RawAsset",
+extends: n,
+ctor: function() {
+Object.defineProperty(this, "_uuid", {
+value: "",
+writable: !0
+});
+}
+});
+r.value(cc.RawAsset, "isRawAssetType", (function(t) {
+return r.isChildClassOf(t, cc.RawAsset) && !r.isChildClassOf(t, cc.Asset);
+}));
+r.value(cc.RawAsset, "wasRawAssetType", (function(t) {
+return t === cc.Texture2D || t === cc.AudioClip || t === cc.ParticleAsset || t === cc.Asset;
+}));
+e.exports = cc.RawAsset;
+}), {
+"../platform/CCObject": 207,
+"../platform/js": 221
+} ],
+66: [ (function(t, e, i) {
+"use strict";
+var n = (function(t) {
+return t && t.__esModule ? t : {
+default: t
+};
+})(t("../../renderer/gfx"));
+var r = t("../renderer"), s = t("./CCTexture2D"), o = cc.Class({
+name: "cc.RenderTexture",
+extends: s,
+ctor: function() {
+this._framebuffer = null;
+},
+initWithSize: function(t, e, i) {
+this.width = Math.floor(t || cc.visibleRect.width);
+this.height = Math.floor(e || cc.visibleRect.height);
+this._resetUnderlyingMipmaps();
+var s = {
+colors: [ this._texture ]
+};
+this._depthStencilBuffer && this._depthStencilBuffer.destroy();
+var o = void 0;
+if (i) {
+o = new n.default.RenderBuffer(r.device, i, t, e);
+i === n.default.RB_FMT_D24S8 ? s.depthStencil = o : i === n.default.RB_FMT_S8 ? s.stencil = o : i === n.default.RB_FMT_D16 && (s.depth = o);
+}
+this._depthStencilBuffer = o;
+this._framebuffer && this._framebuffer.destroy();
+this._framebuffer = new n.default.FrameBuffer(r.device, t, e, s);
+this._packable = !1;
+this.loaded = !0;
+this.emit("load");
+},
+updateSize: function(t, e) {
+this.width = Math.floor(t || cc.visibleRect.width);
+this.height = Math.floor(e || cc.visibleRect.height);
+this._resetUnderlyingMipmaps();
+var i = this._depthStencilBuffer;
+i && i.update(this.width, this.height);
+this._framebuffer._width = t;
+this._framebuffer._height = e;
+},
+drawTextureAt: function(t, e, i) {
+t._image && this._texture.updateSubImage({
+x: e,
+y: i,
+image: t._image,
+width: t.width,
+height: t.height,
+level: 0,
+flipY: !1,
+premultiplyAlpha: t._premultiplyAlpha
+});
+},
+readPixels: function(t, e, i, n, s) {
+if (!this._framebuffer || !this._texture) return t;
+e = e || 0;
+i = i || 0;
+var o = n || this.width, a = s || this.height;
+t = t || new Uint8Array(o * a * 4);
+var c = r._forward._device._gl, l = c.getParameter(c.FRAMEBUFFER_BINDING);
+c.bindFramebuffer(c.FRAMEBUFFER, this._framebuffer._glID);
+c.readPixels(e, i, o, a, c.RGBA, c.UNSIGNED_BYTE, t);
+c.bindFramebuffer(c.FRAMEBUFFER, l);
+return t;
+},
+destroy: function() {
+this._super();
+this._framebuffer && this._framebuffer.destroy();
+}
+});
+cc.RenderTexture = e.exports = o;
+}), {
+"../../renderer/gfx": 349,
+"../renderer": 244,
+"./CCTexture2D": 73
+} ],
+67: [ (function(t, e, i) {
+"use strict";
+var n = cc.Class({
+name: "cc.SceneAsset",
+extends: cc.Asset,
+properties: {
+scene: null,
+asyncLoadAssets: void 0
+}
+});
+cc.SceneAsset = n;
+e.exports = n;
+}), {} ],
+68: [ (function(t, e, i) {
+"use strict";
+var n = cc.Class({
+name: "cc.Script",
+extends: cc.Asset
+});
+cc._Script = n;
+var r = cc.Class({
+name: "cc.JavaScript",
+extends: n
+});
+cc._JavaScript = r;
+var s = cc.Class({
+name: "cc.CoffeeScript",
+extends: n
+});
+cc._CoffeeScript = s;
+var o = cc.Class({
+name: "cc.TypeScript",
+extends: n
+});
+cc._TypeScript = o;
+}), {} ],
+69: [ (function(t, e, i) {
+"use strict";
+var n = cc.Class({
+name: "cc.SpriteAtlas",
+extends: cc.Asset,
+properties: {
+_spriteFrames: {
+default: {}
+}
+},
+getTexture: function() {
+var t = Object.keys(this._spriteFrames);
+if (t.length > 0) {
+var e = this._spriteFrames[t[0]];
+return e ? e.getTexture() : null;
+}
+return null;
+},
+getSpriteFrame: function(t) {
+var e = this._spriteFrames[t];
+if (!e) return null;
+e.name || (e.name = t);
+return e;
+},
+getSpriteFrames: function() {
+var t = [], e = this._spriteFrames;
+for (var i in e) t.push(this.getSpriteFrame(i));
+return t;
+}
+});
+cc.SpriteAtlas = n;
+e.exports = n;
+}), {} ],
+70: [ (function(i, n, r) {
+"use strict";
+var s = i("../event/event-target"), o = i("../utils/texture-util"), a = [ {
+u: 0,
+v: 0
+}, {
+u: 0,
+v: 0
+}, {
+u: 0,
+v: 0
+}, {
+u: 0,
+v: 0
+} ], c = cc.Class({
+name: "cc.SpriteFrame",
+extends: i("../assets/CCAsset"),
+mixins: [ s ],
+properties: {
+_textureSetter: {
+set: function(t) {
+if (t) {
+0;
+this._texture !== t && this._refreshTexture(t);
+this._textureFilename = t.url;
+}
+}
+},
+insetTop: {
+get: function() {
+return this._capInsets[1];
+},
+set: function(t) {
+this._capInsets[1] = t;
+this._texture && this._calculateSlicedUV();
+}
+},
+insetBottom: {
+get: function() {
+return this._capInsets[3];
+},
+set: function(t) {
+this._capInsets[3] = t;
+this._texture && this._calculateSlicedUV();
+}
+},
+insetLeft: {
+get: function() {
+return this._capInsets[0];
+},
+set: function(t) {
+this._capInsets[0] = t;
+this._texture && this._calculateSlicedUV();
+}
+},
+insetRight: {
+get: function() {
+return this._capInsets[2];
+},
+set: function(t) {
+this._capInsets[2] = t;
+this._texture && this._calculateSlicedUV();
+}
+}
+},
+ctor: function() {
+s.call(this);
+var t = arguments[0], e = arguments[1], i = arguments[2], n = arguments[3], r = arguments[4];
+this._rect = null;
+this.uv = [];
+this._texture = null;
+this._original = null;
+this._offset = null;
+this._originalSize = null;
+this._rotated = !1;
+this.vertices = null;
+this._capInsets = [ 0, 0, 0, 0 ];
+this.uvSliced = [];
+this._textureFilename = "";
+0;
+void 0 !== t && this.setTexture(t, e, i, n, r);
+},
+textureLoaded: function() {
+return this._texture && this._texture.loaded;
+},
+isRotated: function() {
+return this._rotated;
+},
+setRotated: function(t) {
+this._rotated = t;
+this._texture && this._calculateUV();
+},
+getRect: function() {
+return cc.rect(this._rect);
+},
+setRect: function(t) {
+this._rect = t;
+this._texture && this._calculateUV();
+},
+getOriginalSize: function() {
+return cc.size(this._originalSize);
+},
+setOriginalSize: function(t) {
+if (this._originalSize) {
+this._originalSize.width = t.width;
+this._originalSize.height = t.height;
+} else this._originalSize = cc.size(t);
+},
+getTexture: function() {
+return this._texture;
+},
+_textureLoadedCallback: function() {
+var t = this._texture;
+if (t) {
+var e = t.width, i = t.height;
+this._rect ? this._checkRect(this._texture) : this._rect = cc.rect(0, 0, e, i);
+this._originalSize || this.setOriginalSize(cc.size(e, i));
+this._offset || this.setOffset(cc.v2(0, 0));
+this._calculateUV();
+this.emit("load");
+}
+},
+_refreshTexture: function(t) {
+this._texture = t;
+t.loaded ? this._textureLoadedCallback() : t.once("load", this._textureLoadedCallback, this);
+},
+getOffset: function() {
+return cc.v2(this._offset);
+},
+setOffset: function(t) {
+this._offset = cc.v2(t);
+},
+clone: function() {
+return new c(this._texture || this._textureFilename, this._rect, this._rotated, this._offset, this._originalSize);
+},
+setTexture: function(i, n, r, s, o) {
+this._rect = n || null;
+s ? this.setOffset(s) : this._offset = null;
+o ? this.setOriginalSize(o) : this._originalSize = null;
+this._rotated = r || !1;
+var a = i;
+if ("string" === ("object" === (e = typeof a) ? t(a) : e) && a) {
+this._textureFilename = a;
+this._loadTexture();
+}
+a instanceof cc.Texture2D && this._texture !== a && this._refreshTexture(a);
+return !0;
+},
+_loadTexture: function() {
+if (this._textureFilename) {
+var t = o.loadImage(this._textureFilename);
+this._refreshTexture(t);
+}
+},
+ensureLoadTexture: function() {
+if (this._texture) {
+if (!this._texture.loaded) {
+this._refreshTexture(this._texture);
+o.postLoadTexture(this._texture);
+}
+} else this._textureFilename && this._loadTexture();
+},
+clearTexture: function() {
+this._texture = null;
+},
+_checkRect: function(t) {
+var e = this._rect, i = e.x, n = e.y;
+if (this._rotated) {
+i += e.height;
+n += e.width;
+} else {
+i += e.width;
+n += e.height;
+}
+i > t.width && cc.errorID(3300, t.url + "/" + this.name, i, t.width);
+n > t.height && cc.errorID(3400, t.url + "/" + this.name, n, t.height);
+},
+_calculateSlicedUV: function() {
+var t = this._rect, e = this._texture.width, i = this._texture.height, n = this._capInsets[0], r = this._capInsets[2], s = t.width - n - r, o = this._capInsets[1], c = this._capInsets[3], l = t.height - o - c, h = this.uvSliced;
+h.length = 0;
+if (this._rotated) {
+a[0].u = t.x / e;
+a[1].u = (t.x + c) / e;
+a[2].u = (t.x + c + l) / e;
+a[3].u = (t.x + t.height) / e;
+a[3].v = t.y / i;
+a[2].v = (t.y + n) / i;
+a[1].v = (t.y + n + s) / i;
+a[0].v = (t.y + t.width) / i;
+for (var u = 0; u < 4; ++u) for (var _ = a[u], f = 0; f < 4; ++f) {
+var d = a[3 - f];
+h.push({
+u: _.u,
+v: d.v
+});
+}
+} else {
+a[0].u = t.x / e;
+a[1].u = (t.x + n) / e;
+a[2].u = (t.x + n + s) / e;
+a[3].u = (t.x + t.width) / e;
+a[3].v = t.y / i;
+a[2].v = (t.y + o) / i;
+a[1].v = (t.y + o + l) / i;
+a[0].v = (t.y + t.height) / i;
+for (var m = 0; m < 4; ++m) for (var p = a[m], v = 0; v < 4; ++v) {
+var y = a[v];
+h.push({
+u: y.u,
+v: p.v
+});
+}
+}
+},
+_setDynamicAtlasFrame: function(t) {
+if (t) {
+this._original = {
+_texture: this._texture,
+_x: this._rect.x,
+_y: this._rect.y
+};
+this._texture = t.texture;
+this._rect.x = t.x;
+this._rect.y = t.y;
+this._calculateUV();
+}
+},
+_resetDynamicAtlasFrame: function() {
+if (this._original) {
+this._rect.x = this._original._x;
+this._rect.y = this._original._y;
+this._texture = this._original._texture;
+this._original = null;
+this._calculateUV();
+}
+},
+_calculateUV: function() {
+var t = this._rect, e = this._texture, i = this.uv, n = e.width, r = e.height;
+if (this._rotated) {
+var s = 0 === n ? 0 : t.x / n, o = 0 === n ? 0 : (t.x + t.height) / n, a = 0 === r ? 0 : (t.y + t.width) / r, c = 0 === r ? 0 : t.y / r;
+i[0] = s;
+i[1] = c;
+i[2] = s;
+i[3] = a;
+i[4] = o;
+i[5] = c;
+i[6] = o;
+i[7] = a;
+} else {
+var l = 0 === n ? 0 : t.x / n, h = 0 === n ? 0 : (t.x + t.width) / n, u = 0 === r ? 0 : (t.y + t.height) / r, _ = 0 === r ? 0 : t.y / r;
+i[0] = l;
+i[1] = u;
+i[2] = h;
+i[3] = u;
+i[4] = l;
+i[5] = _;
+i[6] = h;
+i[7] = _;
+}
+var f = this.vertices;
+if (f) {
+f.nu.length = 0;
+f.nv.length = 0;
+for (var d = 0; d < f.u.length; d++) {
+f.nu[d] = f.u[d] / n;
+f.nv[d] = f.v[d] / r;
+}
+}
+this._calculateSlicedUV();
+},
+_serialize: !1,
+_deserialize: function(t, e) {
+var i = t.rect;
+i && (this._rect = new cc.Rect(i[0], i[1], i[2], i[3]));
+t.offset && this.setOffset(new cc.Vec2(t.offset[0], t.offset[1]));
+t.originalSize && this.setOriginalSize(new cc.Size(t.originalSize[0], t.originalSize[1]));
+this._rotated = 1 === t.rotated;
+this._name = t.name;
+var n = t.capInsets;
+if (n) {
+this._capInsets[0] = n[0];
+this._capInsets[1] = n[1];
+this._capInsets[2] = n[2];
+this._capInsets[3] = n[3];
+}
+0;
+this.vertices = t.vertices;
+if (this.vertices) {
+this.vertices.nu = [];
+this.vertices.nv = [];
+}
+var r = t.texture;
+r && e.result.push(this, "_textureSetter", r);
+}
+}), l = c.prototype;
+l.copyWithZone = l.clone;
+l.copy = l.clone;
+l.initWithTexture = l.setTexture;
+cc.SpriteFrame = c;
+n.exports = c;
+}), {
+"../assets/CCAsset": 56,
+"../event/event-target": 133,
+"../utils/texture-util": 304
+} ],
+71: [ (function(t, e, i) {
+"use strict";
+var n = t("./CCFont"), r = cc.Class({
+name: "cc.TTFFont",
+extends: n,
+properties: {
+_fontFamily: null,
+_nativeAsset: {
+type: cc.String,
+get: function() {
+return this._fontFamily;
+},
+set: function(t) {
+this._fontFamily = t || "Arial";
+},
+override: !0
+}
+}
+});
+cc.TTFFont = e.exports = r;
+}), {
+"./CCFont": 61
+} ],
+72: [ (function(t, e, i) {
+"use strict";
+var n = cc.Class({
+name: "cc.TextAsset",
+extends: cc.Asset,
+properties: {
+text: ""
+},
+toString: function() {
+return this.text;
+}
+});
+e.exports = cc.TextAsset = n;
+}), {} ],
+73: [ (function(t, e, i) {
+"use strict";
+var n = (function(t) {
+return t && t.__esModule ? t : {
+default: t
+};
+})(t("../../renderer/gfx"));
+var r = t("../event/event-target"), s = t("../renderer");
+t("../platform/CCClass");
+var o = new (t("../platform/id-generater"))("Tex"), a = cc.Enum({
+RGB565: n.default.TEXTURE_FMT_R5_G6_B5,
+RGB5A1: n.default.TEXTURE_FMT_R5_G5_B5_A1,
+RGBA4444: n.default.TEXTURE_FMT_R4_G4_B4_A4,
+RGB888: n.default.TEXTURE_FMT_RGB8,
+RGBA8888: n.default.TEXTURE_FMT_RGBA8,
+RGBA32F: n.default.TEXTURE_FMT_RGBA32F,
+A8: n.default.TEXTURE_FMT_A8,
+I8: n.default.TEXTURE_FMT_L8,
+AI8: n.default.TEXTURE_FMT_L8_A8,
+RGB_PVRTC_2BPPV1: n.default.TEXTURE_FMT_RGB_PVRTC_2BPPV1,
+RGBA_PVRTC_2BPPV1: n.default.TEXTURE_FMT_RGBA_PVRTC_2BPPV1,
+RGB_PVRTC_4BPPV1: n.default.TEXTURE_FMT_RGB_PVRTC_4BPPV1,
+RGBA_PVRTC_4BPPV1: n.default.TEXTURE_FMT_RGBA_PVRTC_4BPPV1,
+RGB_ETC1: n.default.TEXTURE_FMT_RGB_ETC1,
+RGBA_ETC1: 1024,
+RGB_ETC2: n.default.TEXTURE_FMT_RGB_ETC2,
+RGBA_ETC2: n.default.TEXTURE_FMT_RGBA_ETC2
+}), c = cc.Enum({
+REPEAT: 10497,
+CLAMP_TO_EDGE: 33071,
+MIRRORED_REPEAT: 33648
+}), l = cc.Enum({
+LINEAR: 9729,
+NEAREST: 9728
+}), h = {
+9728: 0,
+9729: 1
+}, u = [], _ = {
+width: void 0,
+height: void 0,
+minFilter: void 0,
+magFilter: void 0,
+wrapS: void 0,
+wrapT: void 0,
+format: void 0,
+genMipmaps: void 0,
+images: void 0,
+image: void 0,
+flipY: void 0,
+premultiplyAlpha: void 0
+};
+function f() {
+for (var t in _) _[t] = void 0;
+u.length = 0;
+_.images = u;
+_.flipY = !1;
+return _;
+}
+var d = cc.Class({
+name: "cc.Texture2D",
+extends: t("../assets/CCAsset"),
+mixins: [ r ],
+properties: {
+_nativeAsset: {
+get: function() {
+return this._image;
+},
+set: function(t) {
+t._compressed && t._data ? this.initWithData(t._data, this._format, t.width, t.height) : this.initWithElement(t);
+},
+override: !0
+},
+_format: a.RGBA8888,
+_premultiplyAlpha: !1,
+_flipY: !1,
+_minFilter: l.LINEAR,
+_magFilter: l.LINEAR,
+_mipFilter: l.LINEAR,
+_wrapS: c.CLAMP_TO_EDGE,
+_wrapT: c.CLAMP_TO_EDGE,
+_genMipmaps: !1,
+genMipmaps: {
+get: function() {
+return this._genMipmaps;
+},
+set: function(t) {
+if (this._genMipmaps !== t) {
+var e = f();
+e.genMipmaps = t;
+this.update(e);
+}
+}
+},
+_packable: !0,
+packable: {
+get: function() {
+return this._packable;
+},
+set: function(t) {
+this._packable = t;
+}
+}
+},
+statics: {
+PixelFormat: a,
+WrapMode: c,
+Filter: l,
+_FilterIndex: h,
+extnames: [ ".png", ".jpg", ".jpeg", ".bmp", ".webp", ".pvr", ".pkm" ]
+},
+ctor: function() {
+this._id = o.getNewId();
+this.loaded = !1;
+this.width = 0;
+this.height = 0;
+this._hashDirty = !0;
+this._hash = 0;
+this._texture = null;
+0;
+},
+getImpl: function() {
+return this._texture;
+},
+getId: function() {
+return this._id;
+},
+toString: function() {
+return this.url || "";
+},
+update: function(t) {
+if (t) {
+var e = !1;
+void 0 !== t.width && (this.width = t.width);
+void 0 !== t.height && (this.height = t.height);
+if (void 0 !== t.minFilter) {
+this._minFilter = t.minFilter;
+t.minFilter = h[t.minFilter];
+}
+if (void 0 !== t.magFilter) {
+this._magFilter = t.magFilter;
+t.magFilter = h[t.magFilter];
+}
+if (void 0 !== t.mipFilter) {
+this._mipFilter = t.mipFilter;
+t.mipFilter = h[t.mipFilter];
+}
+void 0 !== t.wrapS && (this._wrapS = t.wrapS);
+void 0 !== t.wrapT && (this._wrapT = t.wrapT);
+void 0 !== t.format && (this._format = t.format);
+if (void 0 !== t.flipY) {
+this._flipY = t.flipY;
+e = !0;
+}
+if (void 0 !== t.premultiplyAlpha) {
+this._premultiplyAlpha = t.premultiplyAlpha;
+e = !0;
+}
+void 0 !== t.genMipmaps && (this._genMipmaps = t.genMipmaps);
+e && this._image && (t.image = this._image);
+if (t.images && t.images.length > 0) this._image = t.images[0]; else if (void 0 !== t.image) {
+this._image = t.image;
+if (!t.images) {
+u.length = 0;
+t.images = u;
+}
+t.images.push(t.image);
+}
+t.images && t.images.length > 0 && this._texture.update(t);
+this._hashDirty = !0;
+}
+},
+initWithElement: function(t) {
+if (t) {
+this._image = t;
+if (t.complete || t instanceof HTMLCanvasElement) this.handleLoadedTexture(); else {
+var e = this;
+t.addEventListener("load", (function() {
+e.handleLoadedTexture();
+}));
+t.addEventListener("error", (function(t) {
+cc.warnID(3119, t.message);
+}));
+}
+}
+},
+initWithData: function(t, e, i, n) {
+var r = f();
+r.image = t;
+r.images = [ r.image ];
+r.genMipmaps = this._genMipmaps;
+r.premultiplyAlpha = this._premultiplyAlpha;
+r.flipY = this._flipY;
+r.minFilter = h[this._minFilter];
+r.magFilter = h[this._magFilter];
+r.wrapS = this._wrapS;
+r.wrapT = this._wrapT;
+r.format = e;
+e === a.RGBA_ETC1 && (r.format = a.RGB_ETC1);
+r.width = i;
+r.height = n;
+this._texture ? this._texture.update(r) : this._texture = new s.Texture2D(s.device, r);
+this.width = i;
+this.height = n;
+this._checkPackable();
+this.loaded = !0;
+this.emit("load");
+return !0;
+},
+getHtmlElementObj: function() {
+return this._image;
+},
+destroy: function() {
+this._image = null;
+this._texture && this._texture.destroy();
+this._super();
+},
+getPixelFormat: function() {
+return this._format;
+},
+hasPremultipliedAlpha: function() {
+return this._premultiplyAlpha || !1;
+},
+handleLoadedTexture: function() {
+if (this._image && this._image.width && this._image.height) {
+this.width = this._image.width;
+this.height = this._image.height;
+var t = f();
+t.image = this._image;
+t.images = [ t.image ];
+t.width = this.width;
+t.height = this.height;
+t.genMipmaps = this._genMipmaps;
+t.format = this._format;
+this._format === a.RGBA_ETC1 && (t.format = a.RGB_ETC1);
+t.premultiplyAlpha = this._premultiplyAlpha;
+t.flipY = this._flipY;
+t.minFilter = h[this._minFilter];
+t.magFilter = h[this._magFilter];
+t.wrapS = this._wrapS;
+t.wrapT = this._wrapT;
+this._texture ? this._texture.update(t) : this._texture = new s.Texture2D(s.device, t);
+this._checkPackable();
+this.loaded = !0;
+this.emit("load");
+cc.macro.CLEANUP_IMAGE_CACHE && this._image instanceof HTMLImageElement && this._clearImage();
+}
+},
+description: function() {
+return "";
+},
+releaseTexture: function() {
+this._image = null;
+this._texture && this._texture.destroy();
+},
+setWrapMode: function(t, e) {
+if (this._wrapS !== t || this._wrapT !== e) {
+var i = f();
+i.wrapS = t;
+i.wrapT = e;
+this.update(i);
+}
+},
+setFilters: function(t, e) {
+if (this._minFilter !== t || this._magFilter !== e) {
+var i = f();
+i.minFilter = t;
+i.magFilter = e;
+this.update(i);
+}
+},
+setFlipY: function(t) {
+if (this._flipY !== t) {
+var e = f();
+e.flipY = t;
+this.update(e);
+}
+},
+setPremultiplyAlpha: function(t) {
+if (this._premultiplyAlpha !== t) {
+var e = f();
+e.premultiplyAlpha = t;
+this.update(e);
+}
+},
+_checkPackable: function() {
+var t = cc.dynamicAtlasManager;
+if (t) if (this._isCompressed()) this._packable = !1; else {
+var e = this.width, i = this.height;
+!this._image || e > t.maxFrameSize || i > t.maxFrameSize || e <= t.minFrameSize || i <= t.minFrameSize || this._getHash() !== t.Atlas.DEFAULT_HASH ? this._packable = !1 : this._image && this._image instanceof HTMLCanvasElement && (this._packable = !0);
+}
+},
+_getOpts: function() {
+var t = f();
+t.width = this.width;
+t.height = this.height;
+t.genMipmaps = this._genMipmaps;
+t.format = this._format;
+t.premultiplyAlpha = this._premultiplyAlpha;
+t.anisotropy = this._anisotropy;
+t.flipY = this._flipY;
+t.minFilter = h[this._minFilter];
+t.magFilter = h[this._magFilter];
+t.mipFilter = h[this._mipFilter];
+t.wrapS = this._wrapS;
+t.wrapT = this._wrapT;
+return t;
+},
+_resetUnderlyingMipmaps: function(t) {
+var e = this._getOpts();
+e.images = t || [ null ];
+this._texture ? this._texture.update(e) : this._texture = new s.Texture2D(s.device, e);
+},
+_serialize: !1,
+_deserialize: function(t, e) {
+var i = cc.renderer.device, n = t.split(","), r = n[0];
+if (r) {
+for (var s = r.split("_"), o = "", c = "", l = 999, h = this._format, u = cc.macro.SUPPORT_TEXTURE_FORMATS, _ = 0; _ < s.length; _++) {
+var f = s[_].split("@"), m = f[0];
+m = d.extnames[m.charCodeAt(0) - 48] || m;
+var p = u.indexOf(m);
+if (-1 !== p && p < l) {
+var v = f[1] ? parseInt(f[1]) : this._format;
+if (".pvr" === m && !i.ext("WEBGL_compressed_texture_pvrtc")) continue;
+if (!(v !== a.RGB_ETC1 && v !== a.RGBA_ETC1 || i.ext("WEBGL_compressed_texture_etc1"))) continue;
+if ((v === a.RGB_ETC2 || v === a.RGBA_ETC2) && !i.ext("WEBGL_compressed_texture_etc")) continue;
+l = p;
+c = m;
+h = v;
+} else o || (o = m);
+}
+if (c) {
+this._setRawAsset(c);
+this._format = h;
+} else {
+this._setRawAsset(o);
+cc.warnID(3120, e.customEnv.url, o, o);
+}
+}
+if (8 === n.length) {
+this._minFilter = parseInt(n[1]);
+this._magFilter = parseInt(n[2]);
+this._wrapS = parseInt(n[3]);
+this._wrapT = parseInt(n[4]);
+this._premultiplyAlpha = 49 === n[5].charCodeAt(0);
+this._genMipmaps = 49 === n[6].charCodeAt(0);
+this._packable = 49 === n[7].charCodeAt(0);
+}
+},
+_getHash: function() {
+if (!this._hashDirty) return this._hash;
+var t = this._genMipmaps ? 1 : 0, e = this._premultiplyAlpha ? 1 : 0, i = this._flipY ? 1 : 0, n = this._minFilter === l.LINEAR ? 1 : 2, r = this._magFilter === l.LINEAR ? 1 : 2, s = this._wrapS === c.REPEAT ? 1 : this._wrapS === c.CLAMP_TO_EDGE ? 2 : 3, o = this._wrapT === c.REPEAT ? 1 : this._wrapT === c.CLAMP_TO_EDGE ? 2 : 3, a = this._format, h = this._image;
+if (h) {
+6408 !== h._glFormat && (a = 0);
+e = h._premultiplyAlpha;
+}
+this._hash = Number("" + n + r + a + s + o + t + e + i);
+this._hashDirty = !1;
+return this._hash;
+},
+_isCompressed: function() {
+return this._texture && this._texture._compressed;
+},
+_clearImage: function() {
+cc.loader.removeItem(this._image.id || this._image.src);
+this._image.src = "";
+}
+});
+cc.Texture2D = e.exports = d;
+}), {
+"../../renderer/gfx": 349,
+"../assets/CCAsset": 56,
+"../event/event-target": 133,
+"../platform/CCClass": 201,
+"../platform/id-generater": 217,
+"../renderer": 244
+} ],
+74: [ (function(t, e, i) {
+"use strict";
+t("./CCRawAsset");
+t("./CCAsset");
+t("./CCFont");
+t("./CCPrefab");
+t("./CCAudioClip");
+t("./CCScripts");
+t("./CCSceneAsset");
+t("./CCSpriteFrame");
+t("./CCTexture2D");
+t("./CCRenderTexture");
+t("./CCTTFFont");
+t("./CCSpriteAtlas");
+t("./CCBitmapFont");
+t("./CCLabelAtlas");
+t("./CCTextAsset");
+t("./CCJsonAsset");
+t("./CCBufferAsset");
+t("./CCEffectAsset");
+t("./material/CCMaterial");
+}), {
+"./CCAsset": 56,
+"./CCAudioClip": 57,
+"./CCBitmapFont": 58,
+"./CCBufferAsset": 59,
+"./CCEffectAsset": 60,
+"./CCFont": 61,
+"./CCJsonAsset": 62,
+"./CCLabelAtlas": 63,
+"./CCPrefab": 64,
+"./CCRawAsset": 65,
+"./CCRenderTexture": 66,
+"./CCSceneAsset": 67,
+"./CCScripts": 68,
+"./CCSpriteAtlas": 69,
+"./CCSpriteFrame": 70,
+"./CCTTFFont": 71,
+"./CCTextAsset": 72,
+"./CCTexture2D": 73,
+"./material/CCMaterial": 75
+} ],
+75: [ (function(t, e, i) {
+"use strict";
+var n = o(t("../../../renderer/core/effect")), r = o(t("./murmurhash2_gc")), s = o(t("./utils"));
+function o(t) {
+return t && t.__esModule ? t : {
+default: t
+};
+}
+var a = t("../CCAsset"), c = t("../CCTexture2D"), l = c.PixelFormat, h = t("../CCEffectAsset"), u = cc.Class({
+name: "cc.Material",
+extends: a,
+ctor: function() {
+this._dirty = !0;
+this._effect = null;
+this._owner = null;
+},
+properties: {
+_effectAsset: {
+type: h,
+default: null
+},
+_defines: {
+default: {},
+type: Object
+},
+_props: {
+default: {},
+type: Object
+},
+effectName: void 0,
+effectAsset: {
+get: function() {
+return this._effectAsset;
+},
+set: function(t) {
+if (cc.game.renderType !== cc.game.RENDER_TYPE_CANVAS) {
+this._effectAsset = t;
+t ? this._effect = n.default.parseEffect(t) : cc.error("Can not set an empty effect asset.");
+}
+}
+},
+effect: {
+get: function() {
+return this._effect;
+}
+},
+owner: {
+get: function() {
+return this._owner;
+}
+}
+},
+statics: {
+getBuiltinMaterial: function(t) {
+return cc.AssetLibrary.getBuiltin("material", "builtin-" + t);
+},
+getInstantiatedBuiltinMaterial: function(t, e) {
+var i = this.getBuiltinMaterial(t);
+return u.getInstantiatedMaterial(i, e);
+},
+getInstantiatedMaterial: function(t, e) {
+if (t._owner === e) return t;
+var i = new u();
+i.copy(t);
+i._name = t._name + " (Instance)";
+i._uuid = t._uuid;
+i._owner = e;
+return i;
+}
+},
+copy: function(t) {
+this.effectAsset = t.effectAsset;
+for (var e in t._defines) this.define(e, t._defines[e]);
+for (var i in t._props) this.setProperty(i, t._props[i]);
+},
+setProperty: function(t, e, i) {
+if (this._props[t] !== e || i) {
+this._props[t] = e;
+this._dirty = !0;
+if (this._effect) if (e instanceof c) {
+this._effect.setProperty(t, e.getImpl());
+e.getPixelFormat() === l.RGBA_ETC1 && this.define("_USE_ETC1_" + t.toUpperCase(), !0);
+} else this._effect.setProperty(t, e);
+}
+},
+getProperty: function(t) {
+return this._props[t];
+},
+define: function(t, e, i) {
+if (this._defines[t] !== e || i) {
+this._defines[t] = e;
+this._dirty = !0;
+this._effect && this._effect.define(t, e);
+}
+},
+getDefine: function(t) {
+return this._defines[t];
+},
+setDirty: function(t) {
+this._dirty = t;
+},
+updateHash: function(t) {
+this._dirty = !1;
+this._hash = t;
+},
+getHash: function() {
+if (!this._dirty) return this._hash;
+this._dirty = !1;
+var t = this._effect, e = "";
+if (t) {
+e += s.default.serializeDefines(t._defines);
+e += s.default.serializeTechniques(t._techniques);
+e += s.default.serializeUniforms(t._properties);
+}
+return this._hash = (0, r.default)(e, 666);
+},
+onLoad: function() {
+this.effectAsset = this._effectAsset;
+if (this._effect) {
+for (var t in this._defines) this.define(t, this._defines[t], !0);
+for (var e in this._props) this.setProperty(e, this._props[e], !0);
+}
+}
+});
+e.exports = cc.Material = u;
+}), {
+"../../../renderer/core/effect": 338,
+"../CCAsset": 56,
+"../CCEffectAsset": 60,
+"../CCTexture2D": 73,
+"./murmurhash2_gc": 77,
+"./utils": 78
+} ],
+76: [ (function(t, e, i) {
+"use strict";
+i.__esModule = !0;
+i.default = void 0;
+var n = t("../../../renderer/types"), r = o(t("./murmurhash2_gc")), s = o(t("./utils"));
+function o(t) {
+return t && t.__esModule ? t : {
+default: t
+};
+}
+function a(t, e) {
+if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function");
+}
+var c = (function() {
+function t() {
+a(this, t);
+this._properties = {};
+this._defines = {};
+this._dirty = !1;
+}
+t.prototype.setProperty = function(t, e) {
+var i = this._properties[t];
+if (i) {
+if (i.value === e) return;
+} else {
+(i = Object.create(null)).name = t;
+i.type = n.ctor2enums[e.constructor];
+this._properties[t] = i;
+}
+this._dirty = !0;
+i.value = e;
+};
+t.prototype.getProperty = function(t) {
+var e = this._properties[t];
+return e ? e.value : null;
+};
+t.prototype.define = function(t, e) {
+if (this._defines[t] !== e) {
+this._dirty = !0;
+this._defines[t] = e;
+}
+};
+t.prototype.getDefine = function(t) {
+return this._defines[t];
+};
+t.prototype.extractProperties = function() {
+var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};
+Object.assign(t, this._properties);
+return t;
+};
+t.prototype.extractDefines = function() {
+var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};
+Object.assign(t, this._defines);
+return t;
+};
+t.prototype.getHash = function() {
+if (!this._dirty) return this._hash;
+this._dirty = !1;
+var t = "";
+t += s.default.serializeDefines(this._defines);
+t += s.default.serializeUniforms(this._properties);
+return this._hash = (0, r.default)(t, 666);
+};
+return t;
+})();
+i.default = c;
+e.exports = i.default;
+}), {
+"../../../renderer/types": 375,
+"./murmurhash2_gc": 77,
+"./utils": 78
+} ],
+77: [ (function(t, e, i) {
+"use strict";
+i.__esModule = !0;
+i.default = function(t, e) {
+var i, n = t.length, r = e ^ n, s = 0;
+for (;n >= 4; ) {
+i = 1540483477 * (65535 & (i = 255 & t.charCodeAt(s) | (255 & t.charCodeAt(++s)) << 8 | (255 & t.charCodeAt(++s)) << 16 | (255 & t.charCodeAt(++s)) << 24)) + ((1540483477 * (i >>> 16) & 65535) << 16);
+r = 1540483477 * (65535 & r) + ((1540483477 * (r >>> 16) & 65535) << 16) ^ (i = 1540483477 * (65535 & (i ^= i >>> 24)) + ((1540483477 * (i >>> 16) & 65535) << 16));
+n -= 4;
+++s;
+}
+switch (n) {
+case 3:
+r ^= (255 & t.charCodeAt(s + 2)) << 16;
+
+case 2:
+r ^= (255 & t.charCodeAt(s + 1)) << 8;
+
+case 1:
+r = 1540483477 * (65535 & (r ^= 255 & t.charCodeAt(s))) + ((1540483477 * (r >>> 16) & 65535) << 16);
+}
+r = 1540483477 * (65535 & (r ^= r >>> 13)) + ((1540483477 * (r >>> 16) & 65535) << 16);
+return (r ^= r >>> 15) >>> 0;
+};
+e.exports = i.default;
+}), {} ],
+78: [ (function(t, e, i) {
+"use strict";
+i.__esModule = !0;
+var n = (function(t) {
+return t && t.__esModule ? t : {
+default: t
+};
+})(t("../../../renderer/enums"));
+function r(t) {
+var e = t._programName + t._cullMode;
+t._blend && (e += t._blendEq + t._blendAlphaEq + t._blendSrc + t._blendDst + t._blendSrcAlpha + t._blendDstAlpha + t._blendColor);
+t._depthTest && (e += t._depthWrite + t._depthFunc);
+t._stencilTest && (e += t._stencilFuncFront + t._stencilRefFront + t._stencilMaskFront + t._stencilFailOpFront + t._stencilZFailOpFront + t._stencilZPassOpFront + t._stencilWriteMaskFront + t._stencilFuncBack + t._stencilRefBack + t._stencilMaskBack + t._stencilFailOpBack + t._stencilZFailOpBack + t._stencilZPassOpBack + t._stencilWriteMaskBack);
+return e;
+}
+i.default = {
+serializeDefines: function(t) {
+var e = "";
+for (var i in t) e += i + t[i];
+return e;
+},
+serializeTechniques: function(t) {
+for (var e = "", i = 0; i < t.length; i++) {
+var n = t[i];
+e += n.stageIDs;
+for (var s = 0; s < n.passes.length; s++) e += r(n.passes[s]);
+}
+return e;
+},
+serializeUniforms: function(t) {
+var e = "";
+for (var i in t) {
+var r = t[i], s = r.value;
+if (s) switch (r.type) {
+case n.default.PARAM_INT:
+case n.default.PARAM_FLOAT:
+e += s + ";";
+break;
+
+case n.default.PARAM_INT2:
+case n.default.PARAM_FLOAT2:
+e += s.x + "," + s.y + ";";
+break;
+
+case n.default.PARAM_INT4:
+case n.default.PARAM_FLOAT4:
+e += s.x + "," + s.y + "," + s.z + "," + s.w + ";";
+break;
+
+case n.default.PARAM_COLOR4:
+e += s.r + "," + s.g + "," + s.b + "," + s.a + ";";
+break;
+
+case n.default.PARAM_MAT2:
+e += s.m00 + "," + s.m01 + "," + s.m02 + "," + s.m03 + ";";
+break;
+
+case n.default.PARAM_TEXTURE_2D:
+case n.default.PARAM_TEXTURE_CUBE:
+e += s._id + ";";
+break;
+
+case n.default.PARAM_INT3:
+case n.default.PARAM_FLOAT3:
+case n.default.PARAM_COLOR3:
+case n.default.PARAM_MAT3:
+case n.default.PARAM_MAT4:
+e += JSON.stringify(s) + ";";
+}
+}
+return e;
+}
+};
+e.exports = i.default;
+}), {
+"../../../renderer/enums": 344
+} ],
+79: [ (function(t, e, i) {
+"use strict";
+t("../CCNode").EventType;
+var n = 56, r = 7, s = cc.Enum({
+ONCE: 0,
+ON_WINDOW_RESIZE: 1,
+ALWAYS: 2
+});
+function o(t) {
+return t instanceof cc.Scene ? cc.visibleRect : t._contentSize;
+}
+function a(t, e, i, n) {
+for (var r = t._parent._scale.x, s = t._parent._scale.y, o = 0, a = 0, c = t._parent; ;) {
+var l = c._position;
+o += l.x;
+a += l.y;
+if (!(c = c._parent)) {
+i.x = i.y = 0;
+n.x = n.y = 1;
+return;
+}
+if (c === e) break;
+var h = c._scale.x, u = c._scale.y;
+o *= h;
+a *= u;
+r *= h;
+s *= u;
+}
+n.x = 0 !== r ? 1 / r : 1;
+n.y = 0 !== s ? 1 / s : 1;
+i.x = -o;
+i.y = -a;
+}
+var c = cc.Vec2.ZERO, l = cc.Vec2.ONE;
+function h(t, e) {
+var i, s, h, u = e._target;
+u ? a(t, i = u, s = c, h = l) : i = t._parent;
+var _ = o(i), f = i._anchorPoint, d = i instanceof cc.Scene, m = t._position.x, p = t._position.y, v = t._anchorPoint;
+if (e._alignFlags & n) {
+var y, g, x = _.width;
+if (d) {
+y = cc.visibleRect.left.x;
+g = cc.visibleRect.right.x;
+} else g = (y = -f.x * x) + x;
+y += e._isAbsLeft ? e._left : e._left * x;
+g -= e._isAbsRight ? e._right : e._right * x;
+if (u) {
+y += s.x;
+y *= h.x;
+g += s.x;
+g *= h.x;
+}
+var C, b = v.x, A = t._scale.x;
+if (A < 0) {
+b = 1 - b;
+A = -A;
+}
+if (e.isStretchWidth) {
+C = g - y;
+0 !== A && (t.width = C / A);
+m = y + b * C;
+} else {
+C = t.width * A;
+if (e.isAlignHorizontalCenter) {
+var S = e._isAbsHorizontalCenter ? e._horizontalCenter : e._horizontalCenter * x, w = (.5 - f.x) * _.width;
+if (u) {
+S *= h.x;
+w += s.x;
+w *= h.x;
+}
+m = w + (b - .5) * C + S;
+} else m = e.isAlignLeft ? y + b * C : g + (b - 1) * C;
+}
+}
+if (e._alignFlags & r) {
+var T, E, M = _.height;
+if (d) {
+E = cc.visibleRect.bottom.y;
+T = cc.visibleRect.top.y;
+} else T = (E = -f.y * M) + M;
+E += e._isAbsBottom ? e._bottom : e._bottom * M;
+T -= e._isAbsTop ? e._top : e._top * M;
+if (u) {
+E += s.y;
+E *= h.y;
+T += s.y;
+T *= h.y;
+}
+var B, D = v.y, I = t._scale.y;
+if (I < 0) {
+D = 1 - D;
+I = -I;
+}
+if (e.isStretchHeight) {
+B = T - E;
+0 !== I && (t.height = B / I);
+p = E + D * B;
+} else {
+B = t.height * I;
+if (e.isAlignVerticalCenter) {
+var P = e._isAbsVerticalCenter ? e._verticalCenter : e._verticalCenter * M, R = (.5 - f.y) * _.height;
+if (u) {
+P *= h.y;
+R += s.y;
+R *= h.y;
+}
+p = R + (D - .5) * B + P;
+} else p = e.isAlignBottom ? E + D * B : T + (D - 1) * B;
+}
+}
+t.setPosition(m, p);
+}
+function u(t) {
+var e = t._widget;
+if (e) {
+0;
+h(t, e);
+e.alignMode !== s.ALWAYS ? e.enabled = !1 : f.push(e);
+}
+for (var i = t._children, n = 0; n < i.length; n++) {
+var r = i[n];
+r._active && u(r);
+}
+}
+function _() {
+var t = cc.director.getScene();
+if (t) {
+d.isAligning = !0;
+if (d._nodesOrderDirty) {
+f.length = 0;
+u(t);
+d._nodesOrderDirty = !1;
+} else {
+var e, i = d._activeWidgetsIterator;
+for (i.i = 0; i.i < f.length; ++i.i) h((e = f[i.i]).node, e);
+}
+d.isAligning = !1;
+}
+0;
+}
+var f = [];
+var d = cc._widgetManager = e.exports = {
+_AlignFlags: {
+TOP: 1,
+MID: 2,
+BOT: 4,
+LEFT: 8,
+CENTER: 16,
+RIGHT: 32
+},
+isAligning: !1,
+_nodesOrderDirty: !1,
+_activeWidgetsIterator: new cc.js.array.MutableForwardIterator(f),
+init: function(t) {
+t.on(cc.Director.EVENT_AFTER_UPDATE, _);
+cc.sys.isMobile ? window.addEventListener("resize", this.onResized.bind(this)) : cc.view.on("canvas-resize", this.onResized, this);
+},
+add: function(t) {
+t.node._widget = t;
+this._nodesOrderDirty = !0;
+0;
+},
+remove: function(t) {
+t.node._widget = null;
+this._activeWidgetsIterator.remove(t);
+0;
+},
+onResized: function() {
+var t = cc.director.getScene();
+t && this.refreshWidgetOnResized(t);
+},
+refreshWidgetOnResized: function(t) {
+var e = cc.Node.isNode(t) && t.getComponent(cc.Widget);
+e && e.alignMode === s.ON_WINDOW_RESIZE && (e.enabled = !0);
+for (var i = t._children, n = 0; n < i.length; n++) {
+var r = i[n];
+this.refreshWidgetOnResized(r);
+}
+},
+updateAlignment: function t(e) {
+var i = e._parent;
+cc.Node.isNode(i) && t(i);
+var n = e._widget || e.getComponent(cc.Widget);
+n && i && h(e, n);
+},
+AlignMode: s
+};
+0;
+}), {
+"../CCNode": 52
+} ],
+80: [ (function(t, e, i) {
+"use strict";
+var n = s(t("../geom-utils")), r = s(t("../../renderer/scene/camera"));
+s(t("../../renderer/core/view"));
+function s(t) {
+return t && t.__esModule ? t : {
+default: t
+};
+}
+var o = t("../utils/affine-transform"), a = t("../renderer/index"), c = t("../renderer/render-flow"), l = t("../CCGame"), h = cc.vmath.mat4, u = cc.vmath.vec2, _ = cc.vmath.vec3, f = h.create(), d = h.create(), m = _.create(), p = _.create(), v = _.create(), y = [], g = null;
+function x() {
+if (g) {
+var t = g.getNode(), e = cc.game.canvas;
+t.z = e.height / 1.1566;
+t.x = e.width / 2;
+t.y = e.height / 2;
+}
+}
+var C = cc.Enum({
+COLOR: 1,
+DEPTH: 2,
+STENCIL: 4
+}), b = cc.Enum({
+OPAQUE: 1,
+TRANSPARENT: 2
+}), A = cc.Class({
+name: "cc.Camera",
+extends: cc.Component,
+ctor: function() {
+if (l.renderType !== l.RENDER_TYPE_CANVAS) {
+var t = new r.default();
+t.setStages([ "opaque" ]);
+t.dirty = !0;
+this._inited = !1;
+this._camera = t;
+} else this._inited = !0;
+},
+editor: !1,
+properties: {
+_cullingMask: 4294967295,
+_clearFlags: C.DEPTH | C.STENCIL,
+_backgroundColor: cc.color(0, 0, 0, 255),
+_depth: 0,
+_zoomRatio: 1,
+_targetTexture: null,
+_fov: 60,
+_orthoSize: 10,
+_nearClip: 1,
+_farClip: 4096,
+_ortho: !0,
+_rect: cc.rect(0, 0, 1, 1),
+_renderStages: 1,
+zoomRatio: {
+get: function() {
+return this._zoomRatio;
+},
+set: function(t) {
+this._zoomRatio = t;
+},
+tooltip: !1
+},
+fov: {
+get: function() {
+return this._fov;
+},
+set: function(t) {
+this._fov = t;
+},
+tooltip: !1
+},
+orthoSize: {
+get: function() {
+return this._orthoSize;
+},
+set: function(t) {
+this._orthoSize = t;
+},
+tooltip: !1
+},
+nearClip: {
+get: function() {
+return this._nearClip;
+},
+set: function(t) {
+this._nearClip = t;
+this._updateClippingpPlanes();
+},
+tooltip: !1
+},
+farClip: {
+get: function() {
+return this._farClip;
+},
+set: function(t) {
+this._farClip = t;
+this._updateClippingpPlanes();
+},
+tooltip: !1
+},
+ortho: {
+get: function() {
+return this._ortho;
+},
+set: function(t) {
+this._ortho = t;
+this._updateProjection();
+},
+tooltip: !1
+},
+rect: {
+get: function() {
+return this._rect;
+},
+set: function(t) {
+this._rect = t;
+this._updateRect();
+},
+tooltip: !1
+},
+cullingMask: {
+get: function() {
+return this._cullingMask;
+},
+set: function(t) {
+this._cullingMask = t;
+this._updateCameraMask();
+},
+tooltip: !1
+},
+clearFlags: {
+get: function() {
+return this._clearFlags;
+},
+set: function(t) {
+this._clearFlags = t;
+this._camera && this._camera.setClearFlags(t);
+},
+tooltip: !1
+},
+backgroundColor: {
+get: function() {
+return this._backgroundColor;
+},
+set: function(t) {
+this._backgroundColor = t;
+this._updateBackgroundColor();
+},
+tooltip: !1
+},
+depth: {
+get: function() {
+return this._depth;
+},
+set: function(t) {
+this._depth = t;
+this._camera && (this._camera._priority = t);
+},
+tooltip: !1
+},
+targetTexture: {
+get: function() {
+return this._targetTexture;
+},
+set: function(t) {
+this._targetTexture = t;
+this._updateTargetTexture();
+},
+tooltip: !1
+},
+renderStages: {
+get: function() {
+return this._renderStages;
+},
+set: function(t) {
+this._renderStages = t;
+this._updateStages();
+},
+tooltip: !1
+},
+_is3D: {
+get: function() {
+return this.node && this.node._is3DNode;
+}
+}
+},
+statics: {
+main: null,
+cameras: y,
+ClearFlags: C,
+findCamera: function(t) {
+for (var e = 0, i = y.length; e < i; e++) {
+var n = y[e];
+if (n.containsNode(t)) return n;
+}
+return null;
+},
+_findRendererCamera: function(t) {
+for (var e = a.scene._cameras, i = 0; i < e._count; i++) if (e._data[i]._cullingMask & t._cullingMask) return e._data[i];
+return null;
+},
+_setupDebugCamera: function() {
+if (!g && l.renderType !== l.RENDER_TYPE_CANVAS) {
+var t = new r.default();
+g = t;
+t.setStages([ "opaque" ]);
+t.setFov(60 * Math.PI / 180);
+t.setNear(.1);
+t.setFar(4096);
+t.dirty = !0;
+t._cullingMask = 1 << cc.Node.BuiltinGroupIndex.DEBUG;
+t._priority = cc.macro.MAX_ZINDEX;
+t.setClearFlags(0);
+t.setColor(0, 0, 0, 0);
+var e = new cc.Node();
+t.setNode(e);
+x();
+cc.view.on("design-resolution-changed", x);
+a.scene.addCamera(t);
+}
+}
+},
+_updateCameraMask: function() {
+if (this._camera) {
+var t = this._cullingMask & ~(1 << cc.Node.BuiltinGroupIndex.DEBUG);
+this._camera._cullingMask = t;
+}
+},
+_updateBackgroundColor: function() {
+if (this._camera) {
+var t = this._backgroundColor;
+this._camera.setColor(t.r / 255, t.g / 255, t.b / 255, t.a / 255);
+}
+},
+_updateTargetTexture: function() {
+if (this._camera) {
+var t = this._targetTexture;
+this._camera._framebuffer = t ? t._framebuffer : null;
+}
+},
+_updateClippingpPlanes: function() {
+if (this._camera) {
+this._camera.setNear(this._nearClip);
+this._camera.setFar(this._farClip);
+}
+},
+_updateProjection: function() {
+if (this._camera) {
+var t = this._ortho ? 1 : 0;
+this._camera.setType(t);
+}
+},
+_updateRect: function() {
+if (this._camera) {
+var t = this._rect;
+this._camera.setRect(t.x, t.y, t.width, t.height);
+}
+},
+_updateStages: function() {
+var t = this._renderStages, e = this._camera._stages;
+e.length = 0;
+t & b.OPAQUE && e.push("opaque");
+t & b.TRANSPARENT && e.push("transparent");
+},
+_init: function() {
+if (!this._inited) {
+this._inited = !0;
+var t = this._camera;
+if (t) {
+t.setNode(this.node);
+t.setClearFlags(this._clearFlags);
+t._priority = this._depth;
+this._updateBackgroundColor();
+this._updateCameraMask();
+this._updateTargetTexture();
+this._updateClippingpPlanes();
+this._updateProjection();
+this._updateStages();
+this._updateRect();
+this.beforeDraw();
+}
+}
+},
+onLoad: function() {
+this._init();
+},
+onEnable: function() {
+if (l.renderType !== l.RENDER_TYPE_CANVAS) {
+cc.director.on(cc.Director.EVENT_BEFORE_DRAW, this.beforeDraw, this);
+a.scene.addCamera(this._camera);
+}
+y.push(this);
+},
+onDisable: function() {
+if (l.renderType !== l.RENDER_TYPE_CANVAS) {
+cc.director.off(cc.Director.EVENT_BEFORE_DRAW, this.beforeDraw, this);
+a.scene.removeCamera(this._camera);
+}
+cc.js.array.remove(y, this);
+},
+getScreenToWorldMatrix2D: function(t) {
+this.getWorldToScreenMatrix2D(t);
+h.invert(t, t);
+return t;
+},
+getWorldToScreenMatrix2D: function(t) {
+this.node.getWorldRT(f);
+var e = this.zoomRatio;
+f.m00 *= e;
+f.m01 *= e;
+f.m04 *= e;
+f.m05 *= e;
+var i = f.m12, n = f.m13, r = cc.visibleRect.center;
+f.m12 = r.x - (f.m00 * i + f.m04 * n);
+f.m13 = r.y - (f.m01 * i + f.m05 * n);
+t !== f && h.copy(t, f);
+return t;
+},
+getScreenToWorldPoint: function(t, e) {
+if (this.node.is3DNode) {
+e = e || new cc.Vec3();
+this._camera.screenToWorld(e, t, cc.visibleRect.width, cc.visibleRect.height);
+} else {
+e = e || new cc.Vec2();
+this.getScreenToWorldMatrix2D(f);
+u.transformMat4(e, t, f);
+}
+return e;
+},
+getWorldToScreenPoint: function(t, e) {
+if (this.node.is3DNode) {
+e = e || new cc.Vec3();
+this._camera.worldToScreen(e, t, cc.visibleRect.width, cc.visibleRect.height);
+} else {
+e = e || new cc.Vec2();
+this.getWorldToScreenMatrix2D(f);
+u.transformMat4(e, t, f);
+}
+return e;
+},
+getRay: function(t) {
+if (!n.default) return t;
+_.set(v, t.x, t.y, 1);
+this._camera.screenToWorld(p, v, cc.visibleRect.width, cc.visibleRect.height);
+if (this.ortho) {
+_.set(v, t.x, t.y, -1);
+this._camera.screenToWorld(m, v, cc.visibleRect.width, cc.visibleRect.height);
+} else this.node.getWorldPosition(m);
+return n.default.Ray.fromPoints(n.default.Ray.create(), m, p);
+},
+containsNode: function(t) {
+return t._cullingMask & this.cullingMask;
+},
+render: function(t) {
+if (!(t = t || cc.director.getScene())) return null;
+this.node.getWorldMatrix(f);
+this.beforeDraw();
+c.visit(t);
+a._forward.renderCamera(this._camera, a.scene);
+},
+_layout2D: function() {
+var t = cc.game.canvas.height / cc.view._scaleY, e = this._targetTexture;
+e && (t = e.height);
+var i = this._fov * cc.macro.RAD;
+this.node.z = t / (2 * Math.tan(i / 2));
+i = 2 * Math.atan(Math.tan(i / 2) / this.zoomRatio);
+this._camera.setFov(i);
+this._camera.setOrthoHeight(t / 2 / this.zoomRatio);
+},
+beforeDraw: function() {
+if (this._camera) {
+if (this.node._is3DNode) {
+this._camera.setFov(this._fov * cc.macro.RAD);
+this._camera.setOrthoHeight(this._orthoSize);
+} else this._layout2D();
+this._camera.dirty = !0;
+}
+}
+});
+cc.js.mixin(A.prototype, {
+getNodeToCameraTransform: function(t) {
+var e = o.identity();
+t.getWorldMatrix(d);
+if (this.containsNode(t)) {
+this.getWorldToCameraMatrix(f);
+h.mul(d, d, f);
+}
+o.fromMat4(e, d);
+return e;
+},
+getCameraToWorldPoint: function(t, e) {
+return this.getScreenToWorldPoint(t, e);
+},
+getWorldToCameraPoint: function(t, e) {
+return this.getWorldToScreenPoint(t, e);
+},
+getCameraToWorldMatrix: function(t) {
+return this.getScreenToWorldMatrix2D(t);
+},
+getWorldToCameraMatrix: function(t) {
+return this.getWorldToScreenMatrix2D(t);
+}
+});
+e.exports = cc.Camera = A;
+}), {
+"../../renderer/core/view": 343,
+"../../renderer/scene/camera": 371,
+"../CCGame": 51,
+"../geom-utils": 138,
+"../renderer/index": 244,
+"../renderer/render-flow": 245,
+"../utils/affine-transform": 286
+} ],
+81: [ (function(t, e, i) {
+"use strict";
+cc.Collider.Box = cc.Class({
+properties: {
+_offset: cc.v2(0, 0),
+_size: cc.size(100, 100),
+offset: {
+tooltip: !1,
+get: function() {
+return this._offset;
+},
+set: function(t) {
+this._offset = t;
+},
+type: cc.Vec2
+},
+size: {
+tooltip: !1,
+get: function() {
+return this._size;
+},
+set: function(t) {
+this._size.width = t.width < 0 ? 0 : t.width;
+this._size.height = t.height < 0 ? 0 : t.height;
+},
+type: cc.Size
+}
+},
+resetInEditor: !1
+});
+var n = cc.Class({
+name: "cc.BoxCollider",
+extends: cc.Collider,
+mixins: [ cc.Collider.Box ],
+editor: !1
+});
+cc.BoxCollider = e.exports = n;
+}), {} ],
+82: [ (function(t, e, i) {
+"use strict";
+cc.Collider.Circle = cc.Class({
+properties: {
+_offset: cc.v2(0, 0),
+_radius: 50,
+offset: {
+get: function() {
+return this._offset;
+},
+set: function(t) {
+this._offset = t;
+},
+type: cc.Vec2
+},
+radius: {
+tooltip: !1,
+get: function() {
+return this._radius;
+},
+set: function(t) {
+this._radius = t < 0 ? 0 : t;
+}
+}
+},
+resetInEditor: !1
+});
+var n = cc.Class({
+name: "cc.CircleCollider",
+extends: cc.Collider,
+mixins: [ cc.Collider.Circle ],
+editor: !1
+});
+cc.CircleCollider = e.exports = n;
+}), {} ],
+83: [ (function(t, e, i) {
+"use strict";
+var n = cc.Class({
+name: "cc.Collider",
+extends: cc.Component,
+properties: {
+editing: {
+default: !1,
+serializable: !1,
+tooltip: !1
+},
+tag: {
+tooltip: !1,
+default: 0,
+range: [ 0, 1e7 ],
+type: cc.Integer
+}
+},
+onDisable: function() {
+cc.director.getCollisionManager().removeCollider(this);
+},
+onEnable: function() {
+cc.director.getCollisionManager().addCollider(this);
+}
+});
+cc.Collider = e.exports = n;
+}), {} ],
+84: [ (function(t, e, i) {
+"use strict";
+var n = t("./CCContact"), r = n.CollisionType, s = t("../CCNode").EventType, o = cc.vmath, a = cc.v2();
+function c(t, e, i, n, r, s) {
+var o = t.x, a = t.y, c = t.width, l = t.height, h = e.m00, u = e.m01, _ = e.m04, f = e.m05, d = h * o + _ * a + e.m12, m = u * o + f * a + e.m13, p = h * c, v = u * c, y = _ * l, g = f * l;
+n.x = d;
+n.y = m;
+r.x = p + d;
+r.y = v + m;
+i.x = y + d;
+i.y = g + m;
+s.x = p + y + d;
+s.y = v + g + m;
+}
+var l = cc.Class({
+mixins: [ cc.EventTarget ],
+properties: {
+enabled: !1,
+enabledDrawBoundingBox: !1
+},
+ctor: function() {
+this._contacts = [];
+this._colliders = [];
+this._debugDrawer = null;
+this._enabledDebugDraw = !1;
+cc.director._scheduler && cc.director._scheduler.enableForTarget(this);
+},
+update: function(t) {
+if (this.enabled) {
+var e = void 0, i = void 0, n = this._colliders;
+for (e = 0, i = n.length; e < i; e++) this.updateCollider(n[e]);
+var s = this._contacts, o = [];
+for (e = 0, i = s.length; e < i; e++) {
+var a = s[e].updateState();
+a !== r.None && o.push([ a, s[e] ]);
+}
+for (e = 0, i = o.length; e < i; e++) {
+var c = o[e];
+this._doCollide(c[0], c[1]);
+}
+this.drawColliders();
+}
+},
+_doCollide: function(t, e) {
+var i = void 0;
+switch (t) {
+case r.CollisionEnter:
+i = "onCollisionEnter";
+break;
+
+case r.CollisionStay:
+i = "onCollisionStay";
+break;
+
+case r.CollisionExit:
+i = "onCollisionExit";
+}
+var n = e.collider1, s = e.collider2, o = n.node._components, a = s.node._components, c = void 0, l = void 0, h = void 0;
+for (c = 0, l = o.length; c < l; c++) (h = o[c])[i] && h[i](s, n);
+for (c = 0, l = a.length; c < l; c++) (h = a[c])[i] && h[i](n, s);
+},
+shouldCollide: function(t, e) {
+var i = t.node, n = e.node, r = cc.game.collisionMatrix;
+return i !== n && r[i.groupIndex][n.groupIndex];
+},
+initCollider: function(t) {
+if (!t.world) {
+var e = t.world = {};
+e.aabb = cc.rect();
+e.preAabb = cc.rect();
+e.matrix = o.mat4.create();
+e.radius = 0;
+if (t instanceof cc.BoxCollider) {
+e.position = null;
+e.points = [ cc.v2(), cc.v2(), cc.v2(), cc.v2() ];
+} else if (t instanceof cc.PolygonCollider) {
+e.position = null;
+e.points = t.points.map((function(t) {
+return cc.v2(t.x, t.y);
+}));
+} else if (t instanceof cc.CircleCollider) {
+e.position = cc.v2();
+e.points = null;
+}
+}
+},
+updateCollider: function(t) {
+var e = t.offset, i = t.world, n = i.aabb, r = i.matrix;
+t.node.getWorldMatrix(r);
+var s = i.preAabb;
+s.x = n.x;
+s.y = n.y;
+s.width = n.width;
+s.height = n.height;
+if (t instanceof cc.BoxCollider) {
+var l = t.size;
+n.x = e.x - l.width / 2;
+n.y = e.y - l.height / 2;
+n.width = l.width;
+n.height = l.height;
+var h = i.points, u = h[0], _ = h[1], f = h[2], d = h[3];
+c(n, r, u, _, f, d);
+var m = Math.min(u.x, _.x, f.x, d.x), p = Math.min(u.y, _.y, f.y, d.y), v = Math.max(u.x, _.x, f.x, d.x), y = Math.max(u.y, _.y, f.y, d.y);
+n.x = m;
+n.y = p;
+n.width = v - m;
+n.height = y - p;
+} else if (t instanceof cc.CircleCollider) {
+o.vec2.transformMat4(a, t.offset, r);
+i.position.x = a.x;
+i.position.y = a.y;
+var g = r.m12, x = r.m13;
+r.m12 = r.m13 = 0;
+a.x = t.radius;
+a.y = 0;
+o.vec2.transformMat4(a, a, r);
+var C = Math.sqrt(a.x * a.x + a.y * a.y);
+i.radius = C;
+n.x = i.position.x - C;
+n.y = i.position.y - C;
+n.width = 2 * C;
+n.height = 2 * C;
+r.m12 = g;
+r.m13 = x;
+} else if (t instanceof cc.PolygonCollider) {
+var b = t.points, A = i.points;
+A.length = b.length;
+for (var S = 1e6, w = 1e6, T = -1e6, E = -1e6, M = 0, B = b.length; M < B; M++) {
+A[M] || (A[M] = cc.v2());
+a.x = b[M].x + e.x;
+a.y = b[M].y + e.y;
+o.vec2.transformMat4(a, a, r);
+var D = a.x, I = a.y;
+A[M].x = D;
+A[M].y = I;
+D > T && (T = D);
+D < S && (S = D);
+I > E && (E = I);
+I < w && (w = I);
+}
+n.x = S;
+n.y = w;
+n.width = T - S;
+n.height = E - w;
+}
+},
+addCollider: function(t) {
+var e = this._colliders;
+if (-1 === e.indexOf(t)) {
+for (var i = 0, r = e.length; i < r; i++) {
+var o = e[i];
+if (this.shouldCollide(t, o)) {
+var a = new n(t, o);
+this._contacts.push(a);
+}
+}
+e.push(t);
+this.initCollider(t);
+}
+t.node.on(s.GROUP_CHANGED, this.onNodeGroupChanged, this);
+},
+removeCollider: function(t) {
+var e = this._colliders, i = e.indexOf(t);
+if (i >= 0) {
+e.splice(i, 1);
+for (var n = this._contacts, o = n.length - 1; o >= 0; o--) {
+var a = n[o];
+if (a.collider1 === t || a.collider2 === t) {
+a.touching && this._doCollide(r.CollisionExit, a);
+n.splice(o, 1);
+}
+}
+t.node.off(s.GROUP_CHANGED, this.onNodeGroupChanged, this);
+} else cc.errorID(6600);
+},
+onNodeGroupChanged: function(t) {
+for (var e = t.getComponents(cc.Collider), i = 0, n = e.length; i < n; i++) {
+var r = e[i];
+if (!(r instanceof cc.PhysicsCollider)) {
+this.removeCollider(r);
+this.addCollider(r);
+}
+}
+},
+drawColliders: function() {
+if (this._enabledDebugDraw) {
+this._checkDebugDrawValid();
+var t = this._debugDrawer;
+t.clear();
+for (var e = this._colliders, i = 0, n = e.length; i < n; i++) {
+var r = e[i];
+t.strokeColor = cc.Color.WHITE;
+if (r instanceof cc.BoxCollider || r instanceof cc.PolygonCollider) {
+var s = r.world.points;
+if (s.length > 0) {
+t.moveTo(s[0].x, s[0].y);
+for (var o = 1; o < s.length; o++) t.lineTo(s[o].x, s[o].y);
+t.close();
+t.stroke();
+}
+} else if (r instanceof cc.CircleCollider) {
+t.circle(r.world.position.x, r.world.position.y, r.world.radius);
+t.stroke();
+}
+if (this.enabledDrawBoundingBox) {
+var a = r.world.aabb;
+t.strokeColor = cc.Color.BLUE;
+t.moveTo(a.xMin, a.yMin);
+t.lineTo(a.xMin, a.yMax);
+t.lineTo(a.xMax, a.yMax);
+t.lineTo(a.xMax, a.yMin);
+t.close();
+t.stroke();
+}
+}
+}
+},
+_checkDebugDrawValid: function() {
+if (!this._debugDrawer || !this._debugDrawer.isValid) {
+var t = new cc.Node("COLLISION_MANAGER_DEBUG_DRAW");
+t.zIndex = cc.macro.MAX_ZINDEX;
+cc.game.addPersistRootNode(t);
+this._debugDrawer = t.addComponent(cc.Graphics);
+}
+}
+});
+cc.js.getset(l.prototype, "enabledDebugDraw", (function() {
+return this._enabledDebugDraw;
+}), (function(t) {
+if (t && !this._enabledDebugDraw) {
+this._checkDebugDrawValid();
+this._debugDrawer.node.active = !0;
+} else if (!t && this._enabledDebugDraw) {
+this._debugDrawer.clear(!0);
+this._debugDrawer.node.active = !1;
+}
+this._enabledDebugDraw = t;
+}));
+cc.CollisionManager = e.exports = l;
+}), {
+"../CCNode": 52,
+"./CCContact": 85
+} ],
+85: [ (function(t, e, i) {
+"use strict";
+var n = t("./CCIntersection"), r = cc.Enum({
+None: 0,
+CollisionEnter: 1,
+CollisionStay: 2,
+CollisionExit: 3
+});
+function s(t, e) {
+this.collider1 = t;
+this.collider2 = e;
+this.touching = !1;
+var i = t instanceof cc.BoxCollider || t instanceof cc.PolygonCollider, r = e instanceof cc.BoxCollider || e instanceof cc.PolygonCollider, s = t instanceof cc.CircleCollider, o = e instanceof cc.CircleCollider;
+if (i && r) this.testFunc = n.polygonPolygon; else if (s && o) this.testFunc = n.circleCircle; else if (i && o) this.testFunc = n.polygonCircle; else if (s && r) {
+this.testFunc = n.polygonCircle;
+this.collider1 = e;
+this.collider2 = t;
+} else cc.errorID(6601, cc.js.getClassName(t), cc.js.getClassName(e));
+}
+s.prototype.test = function() {
+var t = this.collider1.world, e = this.collider2.world;
+return !!t.aabb.intersects(e.aabb) && (this.testFunc === n.polygonPolygon ? this.testFunc(t.points, e.points) : this.testFunc === n.circleCircle ? this.testFunc(t, e) : this.testFunc === n.polygonCircle && this.testFunc(t.points, e));
+};
+s.prototype.updateState = function() {
+var t = this.test(), e = r.None;
+if (t && !this.touching) {
+this.touching = !0;
+e = r.CollisionEnter;
+} else if (t && this.touching) e = r.CollisionStay; else if (!t && this.touching) {
+this.touching = !1;
+e = r.CollisionExit;
+}
+return e;
+};
+s.CollisionType = r;
+e.exports = s;
+}), {
+"./CCIntersection": 86
+} ],
+86: [ (function(t, e, i) {
+"use strict";
+var n = {};
+function r(t, e, i, n) {
+var r = (n.x - i.x) * (t.y - i.y) - (n.y - i.y) * (t.x - i.x), s = (e.x - t.x) * (t.y - i.y) - (e.y - t.y) * (t.x - i.x), o = (n.y - i.y) * (e.x - t.x) - (n.x - i.x) * (e.y - t.y);
+if (0 !== o) {
+var a = r / o, c = s / o;
+if (0 <= a && a <= 1 && 0 <= c && c <= 1) return !0;
+}
+return !1;
+}
+n.lineLine = r;
+n.lineRect = function(t, e, i) {
+var n = new cc.Vec2(i.x, i.y), s = new cc.Vec2(i.x, i.yMax), o = new cc.Vec2(i.xMax, i.yMax), a = new cc.Vec2(i.xMax, i.y);
+return !!(r(t, e, n, s) || r(t, e, s, o) || r(t, e, o, a) || r(t, e, a, n));
+};
+function s(t, e, i) {
+for (var n = i.length, s = 0; s < n; ++s) {
+if (r(t, e, i[s], i[(s + 1) % n])) return !0;
+}
+return !1;
+}
+n.linePolygon = s;
+n.rectRect = function(t, e) {
+var i = t.x, n = t.y, r = t.x + t.width, s = t.y + t.height, o = e.x, a = e.y, c = e.x + e.width, l = e.y + e.height;
+return i <= c && r >= o && n <= l && s >= a;
+};
+n.rectPolygon = function(t, e) {
+var i, n, r = new cc.Vec2(t.x, t.y), a = new cc.Vec2(t.x, t.yMax), c = new cc.Vec2(t.xMax, t.yMax), l = new cc.Vec2(t.xMax, t.y);
+if (s(r, a, e)) return !0;
+if (s(a, c, e)) return !0;
+if (s(c, l, e)) return !0;
+if (s(l, r, e)) return !0;
+for (i = 0, n = e.length; i < n; ++i) if (o(e[i], t)) return !0;
+return !!(o(r, e) || o(a, e) || o(c, e) || o(l, e));
+};
+n.polygonPolygon = function(t, e) {
+var i, n;
+for (i = 0, n = t.length; i < n; ++i) if (s(t[i], t[(i + 1) % n], e)) return !0;
+for (i = 0, n = e.length; i < n; ++i) if (o(e[i], t)) return !0;
+for (i = 0, n = t.length; i < n; ++i) if (o(t[i], e)) return !0;
+return !1;
+};
+n.circleCircle = function(t, e) {
+return t.position.sub(e.position).mag() < t.radius + e.radius;
+};
+n.polygonCircle = function(t, e) {
+var i = e.position;
+if (o(i, t)) return !0;
+for (var n = 0, r = t.length; n < r; n++) if (a(i, 0 === n ? t[t.length - 1] : t[n - 1], t[n], !0) < e.radius) return !0;
+return !1;
+};
+function o(t, e) {
+for (var i = !1, n = t.x, r = t.y, s = e.length, o = 0, a = s - 1; o < s; a = o++) {
+var c = e[o].x, l = e[o].y, h = e[a].x, u = e[a].y;
+l > r != u > r && n < (h - c) * (r - l) / (u - l) + c && (i = !i);
+}
+return i;
+}
+n.pointInPolygon = o;
+function a(t, e, i, n) {
+var r, s = i.x - e.x, o = i.y - e.y, a = s * s + o * o, c = ((t.x - e.x) * s + (t.y - e.y) * o) / a;
+r = n ? a ? c < 0 ? e : c > 1 ? i : cc.v2(e.x + c * s, e.y + c * o) : e : cc.v2(e.x + c * s, e.y + c * o);
+s = t.x - r.x;
+o = t.y - r.y;
+return Math.sqrt(s * s + o * o);
+}
+n.pointLineDistance = a;
+cc.Intersection = e.exports = n;
+}), {} ],
+87: [ (function(t, e, i) {
+"use strict";
+cc.Collider.Polygon = cc.Class({
+properties: {
+threshold: {
+default: 1,
+serializable: !1,
+visible: !1
+},
+_offset: cc.v2(0, 0),
+offset: {
+get: function() {
+return this._offset;
+},
+set: function(t) {
+this._offset = t;
+},
+type: cc.Vec2
+},
+points: {
+tooltip: !1,
+default: function() {
+return [ cc.v2(-50, -50), cc.v2(50, -50), cc.v2(50, 50), cc.v2(-50, 50) ];
+},
+type: [ cc.Vec2 ]
+}
+},
+resetPointsByContour: !1
+});
+var n = cc.Class({
+name: "cc.PolygonCollider",
+extends: cc.Collider,
+mixins: [ cc.Collider.Polygon ],
+editor: !1
+});
+cc.PolygonCollider = e.exports = n;
+}), {} ],
+88: [ (function(t, e, i) {
+"use strict";
+t("./CCCollisionManager");
+t("./CCCollider");
+t("./CCBoxCollider");
+t("./CCCircleCollider");
+t("./CCPolygonCollider");
+}), {
+"./CCBoxCollider": 81,
+"./CCCircleCollider": 82,
+"./CCCollider": 83,
+"./CCCollisionManager": 84,
+"./CCPolygonCollider": 87
+} ],
+89: [ (function(t, e, i) {
+"use strict";
+t("./platform/CCClass");
+var n = t("./platform/CCObject").Flags, r = t("./platform/js").array, s = n.IsStartCalled, o = n.IsOnEnableCalled;
+n.IsEditorOnEnableCalled;
+function a(t, e) {
+for (var i = e.constructor._executionOrder, n = e._id, r = 0, s = t.length - 1, o = s >>> 1; r <= s; o = r + s >>> 1) {
+var a = t[o], c = a.constructor._executionOrder;
+if (c > i) s = o - 1; else if (c < i) r = o + 1; else {
+var l = a._id;
+if (l > n) s = o - 1; else {
+if (!(l < n)) return o;
+r = o + 1;
+}
+}
+}
+return ~r;
+}
+function c(t, e) {
+for (var i = t.array, n = t.i + 1; n < i.length; ) {
+var r = i[n];
+if (r._enabled && r.node._activeInHierarchy) ++n; else {
+t.removeAt(n);
+e && (r._objFlags &= ~e);
+}
+}
+}
+var l = cc.Class({
+__ctor__: function(t) {
+var e = r.MutableForwardIterator;
+this._zero = new e([]);
+this._neg = new e([]);
+this._pos = new e([]);
+0;
+this._invoke = t;
+},
+statics: {
+stableRemoveInactive: c
+},
+add: null,
+remove: null,
+invoke: null
+});
+function h(t, e) {
+return t.constructor._executionOrder - e.constructor._executionOrder;
+}
+var u = cc.Class({
+extends: l,
+add: function(t) {
+var e = t.constructor._executionOrder;
+(0 === e ? this._zero : e < 0 ? this._neg : this._pos).array.push(t);
+},
+remove: function(t) {
+var e = t.constructor._executionOrder;
+(0 === e ? this._zero : e < 0 ? this._neg : this._pos).fastRemove(t);
+},
+cancelInactive: function(t) {
+c(this._zero, t);
+c(this._neg, t);
+c(this._pos, t);
+},
+invoke: function() {
+var t = this._neg;
+if (t.array.length > 0) {
+t.array.sort(h);
+this._invoke(t);
+t.array.length = 0;
+}
+this._invoke(this._zero);
+this._zero.array.length = 0;
+var e = this._pos;
+if (e.array.length > 0) {
+e.array.sort(h);
+this._invoke(e);
+e.array.length = 0;
+}
+}
+}), _ = cc.Class({
+extends: l,
+add: function(t) {
+var e = t.constructor._executionOrder;
+if (0 === e) this._zero.array.push(t); else {
+var i = e < 0 ? this._neg.array : this._pos.array, n = a(i, t);
+n < 0 && i.splice(~n, 0, t);
+}
+},
+remove: function(t) {
+var e = t.constructor._executionOrder;
+if (0 === e) this._zero.fastRemove(t); else {
+var i = e < 0 ? this._neg : this._pos, n = a(i.array, t);
+n >= 0 && i.removeAt(n);
+}
+},
+invoke: function(t) {
+this._neg.array.length > 0 && this._invoke(this._neg, t);
+this._invoke(this._zero, t);
+this._pos.array.length > 0 && this._invoke(this._pos, t);
+}
+});
+function f(t, e, i, n) {
+var r = "var a=it.array;for(it.i=0;it.i= 0) r.fastRemoveAt(this.scheduleInNextFrame, e); else {
+!t.start || t._objFlags & s || this.startInvoker.remove(t);
+t.update && this.updateInvoker.remove(t);
+t.lateUpdate && this.lateUpdateInvoker.remove(t);
+}
+},
+enableComp: function(t, e) {
+if (!(t._objFlags & o)) {
+if (t.onEnable) {
+if (e) {
+e.add(t);
+return;
+}
+t.onEnable();
+if (!t.node._activeInHierarchy) return;
+}
+this._onEnabled(t);
+}
+},
+disableComp: function(t) {
+if (t._objFlags & o) {
+t.onDisable && t.onDisable();
+this._onDisabled(t);
+}
+},
+_scheduleImmediate: function(t) {
+!t.start || t._objFlags & s || this.startInvoker.add(t);
+t.update && this.updateInvoker.add(t);
+t.lateUpdate && this.lateUpdateInvoker.add(t);
+},
+_deferredSchedule: function() {
+for (var t = this.scheduleInNextFrame, e = 0, i = t.length; e < i; e++) {
+var n = t[e];
+this._scheduleImmediate(n);
+}
+t.length = 0;
+},
+startPhase: function() {
+this._updating = !0;
+this.scheduleInNextFrame.length > 0 && this._deferredSchedule();
+this.startInvoker.invoke();
+},
+updatePhase: function(t) {
+this.updateInvoker.invoke(t);
+},
+lateUpdatePhase: function(t) {
+this.lateUpdateInvoker.invoke(t);
+this._updating = !1;
+}
+});
+e.exports = y;
+}), {
+"./platform/CCClass": 201,
+"./platform/CCObject": 207,
+"./platform/js": 221,
+"./utils/misc": 297
+} ],
+90: [ (function(t, e, i) {
+"use strict";
+var n = t("../../animation/animation-animator"), r = t("../../animation/animation-clip"), s = t("../event/event-target"), o = t("../platform/js");
+function a(t, e) {
+return t === e || t && e && (t.name === e.name || t._uuid === e._uuid);
+}
+var c = cc.Enum({
+PLAY: "play",
+STOP: "stop",
+PAUSE: "pause",
+RESUME: "resume",
+LASTFRAME: "lastframe",
+FINISHED: "finished"
+}), l = cc.Class({
+name: "cc.Animation",
+extends: t("./CCComponent"),
+mixins: [ s ],
+editor: !1,
+statics: {
+EventType: c
+},
+ctor: function() {
+cc.EventTarget.call(this);
+this._animator = null;
+this._nameToState = o.createMap(!0);
+this._didInit = !1;
+this._currentClip = null;
+},
+properties: {
+_defaultClip: {
+default: null,
+type: r
+},
+defaultClip: {
+type: r,
+get: function() {
+return this._defaultClip;
+},
+set: function(t) {},
+tooltip: !1
+},
+currentClip: {
+get: function() {
+return this._currentClip;
+},
+set: function(t) {
+this._currentClip = t;
+},
+type: r,
+visible: !1
+},
+_writableClips: {
+get: function() {
+return this._clips;
+},
+set: function(t) {
+this._didInit = !1;
+this._clips = t;
+this._init();
+},
+type: [ r ]
+},
+_clips: {
+default: [],
+type: [ r ],
+tooltip: !1,
+visible: !0
+},
+playOnLoad: {
+default: !1,
+tooltip: !1
+}
+},
+start: function() {
+if (this.playOnLoad && this._defaultClip) {
+if (!(this._animator && this._animator.isPlaying)) {
+var t = this.getAnimationState(this._defaultClip.name);
+this._animator.playState(t);
+}
+}
+},
+onEnable: function() {
+this._animator && this._animator.resume();
+},
+onDisable: function() {
+this._animator && this._animator.pause();
+},
+onDestroy: function() {
+this.stop();
+},
+getClips: function() {
+return this._clips;
+},
+play: function(t, e) {
+var i = this.playAdditive(t, e);
+this._animator.stopStatesExcept(i);
+return i;
+},
+playAdditive: function(t, e) {
+this._init();
+var i = this.getAnimationState(t || this._defaultClip && this._defaultClip.name);
+if (i) {
+this.enabled = !0;
+var n = this._animator;
+if (n.isPlaying && i.isPlaying) if (i.isPaused) n.resumeState(i); else {
+n.stopState(i);
+n.playState(i, e);
+} else n.playState(i, e);
+this.enabledInHierarchy || n.pause();
+this.currentClip = i.clip;
+}
+return i;
+},
+stop: function(t) {
+if (this._didInit) if (t) {
+var e = this._nameToState[t];
+e && this._animator.stopState(e);
+} else this._animator.stop();
+},
+pause: function(t) {
+if (this._didInit) if (t) {
+var e = this._nameToState[t];
+e && this._animator.pauseState(e);
+} else this.enabled = !1;
+},
+resume: function(t) {
+if (this._didInit) if (t) {
+var e = this._nameToState[t];
+e && this._animator.resumeState(e);
+} else this.enabled = !0;
+},
+setCurrentTime: function(t, e) {
+this._init();
+if (e) {
+var i = this._nameToState[e];
+i && this._animator.setStateTime(i, t);
+} else this._animator.setStateTime(t);
+},
+getAnimationState: function(t) {
+this._init();
+var e = this._nameToState[t];
+0;
+e && !e.curveLoaded && this._animator._reloadClip(e);
+return e || null;
+},
+addClip: function(t, e) {
+if (t) {
+this._init();
+cc.js.array.contains(this._clips, t) || this._clips.push(t);
+e = e || t.name;
+var i = this._nameToState[e];
+if (i) {
+if (i.clip === t) return i;
+var n = this._clips.indexOf(i.clip);
+-1 !== n && this._clips.splice(n, 1);
+}
+var r = new cc.AnimationState(t, e);
+this._nameToState[e] = r;
+return r;
+}
+cc.warnID(3900);
+},
+removeClip: function(t, e) {
+if (t) {
+this._init();
+var i = void 0;
+for (var n in this._nameToState) {
+if ((i = this._nameToState[n]).clip === t) break;
+}
+if (t === this._defaultClip) {
+if (!e) {
+cc.warnID(3902);
+return;
+}
+this._defaultClip = null;
+}
+if (i && i.isPlaying) {
+if (!e) {
+cc.warnID(3903);
+return;
+}
+this.stop(i.name);
+}
+this._clips = this._clips.filter((function(e) {
+return e !== t;
+}));
+i && delete this._nameToState[i.name];
+} else cc.warnID(3901);
+},
+sample: function(t) {
+this._init();
+if (t) {
+var e = this._nameToState[t];
+e && e.sample();
+} else this._animator.sample();
+},
+on: function(t, e, i, n) {
+this._init();
+var r = this._EventTargetOn(t, e, i, n);
+if ("lastframe" === t) {
+var s = this._nameToState;
+for (var o in s) s[o]._lastframeEventOn = !0;
+}
+return r;
+},
+off: function(t, e, i, n) {
+this._init();
+if ("lastframe" === t) {
+var r = this._nameToState;
+for (var s in r) r[s]._lastframeEventOn = !1;
+}
+this._EventTargetOff(t, e, i, n);
+},
+_init: function() {
+if (!this._didInit) {
+this._didInit = !0;
+this._animator = new n(this.node, this);
+this._createStates();
+}
+},
+_createStates: function() {
+this._nameToState = o.createMap(!0);
+for (var t = null, e = !1, i = 0; i < this._clips.length; ++i) {
+var n = this._clips[i];
+if (n) {
+t = new cc.AnimationState(n);
+0;
+this._nameToState[t.name] = t;
+a(this._defaultClip, n) && (e = t);
+}
+}
+if (this._defaultClip && !e) {
+t = new cc.AnimationState(this._defaultClip);
+0;
+this._nameToState[t.name] = t;
+}
+}
+});
+l.prototype._EventTargetOn = s.prototype.on;
+l.prototype._EventTargetOff = s.prototype.off;
+cc.Animation = e.exports = l;
+}), {
+"../../animation/animation-animator": 9,
+"../../animation/animation-clip": 10,
+"../event/event-target": 133,
+"../platform/js": 221,
+"./CCComponent": 95
+} ],
+91: [ (function(i, n, r) {
+"use strict";
+var s = i("../utils/misc"), o = i("./CCComponent"), a = i("../assets/CCAudioClip"), c = cc.Class({
+name: "cc.AudioSource",
+extends: o,
+editor: !1,
+ctor: function() {
+this.audio = new cc.Audio();
+},
+properties: {
+_clip: {
+default: null,
+type: a
+},
+_volume: 1,
+_mute: !1,
+_loop: !1,
+_pausedFlag: {
+default: !1,
+serializable: !1
+},
+isPlaying: {
+get: function() {
+return this.audio.getState() === cc.Audio.State.PLAYING;
+},
+visible: !1
+},
+clip: {
+get: function() {
+return this._clip;
+},
+set: function(i) {
+if ("string" !== ("object" === (e = typeof i) ? t(i) : e)) {
+if (i !== this._clip) {
+this._clip = i;
+this.audio.stop();
+this.preload && (this.audio.src = this._clip);
+}
+} else {
+cc.warnID(8401, "cc.AudioSource", "cc.AudioClip", "AudioClip", "cc.AudioClip", "audio");
+var n = this;
+a._loadByUrl(i, (function(t, e) {
+e && (n.clip = e);
+}));
+}
+},
+type: a,
+tooltip: !1,
+animatable: !1
+},
+volume: {
+get: function() {
+return this._volume;
+},
+set: function(t) {
+t = s.clamp01(t);
+this._volume = t;
+this._mute || this.audio.setVolume(t);
+return t;
+},
+tooltip: !1
+},
+mute: {
+get: function() {
+return this._mute;
+},
+set: function(t) {
+this._mute = t;
+this.audio.setVolume(t ? 0 : this._volume);
+return t;
+},
+animatable: !1,
+tooltip: !1
+},
+loop: {
+get: function() {
+return this._loop;
+},
+set: function(t) {
+this._loop = t;
+this.audio.setLoop(t);
+return t;
+},
+animatable: !1,
+tooltip: !1
+},
+playOnLoad: {
+default: !1,
+tooltip: !1,
+animatable: !1
+},
+preload: {
+default: !1,
+animatable: !1
+}
+},
+_ensureDataLoaded: function() {
+this.audio.src !== this._clip && (this.audio.src = this._clip);
+},
+_pausedCallback: function() {
+if (this.audio.getState() === cc.Audio.State.PLAYING) {
+this.audio.pause();
+this._pausedFlag = !0;
+}
+},
+_restoreCallback: function() {
+this._pausedFlag && this.audio.resume();
+this._pausedFlag = !1;
+},
+onLoad: function() {
+this.audio.setVolume(this._mute ? 0 : this._volume);
+this.audio.setLoop(this._loop);
+},
+onEnable: function() {
+this.preload && (this.audio.src = this._clip);
+this.playOnLoad && this.play();
+cc.game.on(cc.game.EVENT_HIDE, this._pausedCallback, this);
+cc.game.on(cc.game.EVENT_SHOW, this._restoreCallback, this);
+},
+onDisable: function() {
+this.stop();
+cc.game.off(cc.game.EVENT_HIDE, this._pausedCallback, this);
+cc.game.off(cc.game.EVENT_SHOW, this._restoreCallback, this);
+},
+onDestroy: function() {
+this.stop();
+this.audio.destroy();
+cc.audioEngine.uncache(this._clip);
+},
+play: function() {
+if (this._clip) {
+var t = this.audio;
+this._clip.loaded && t.stop();
+this._ensureDataLoaded();
+t.setCurrentTime(0);
+t.play();
+}
+},
+stop: function() {
+this.audio.stop();
+},
+pause: function() {
+this.audio.pause();
+},
+resume: function() {
+this._ensureDataLoaded();
+this.audio.resume();
+},
+rewind: function() {
+this.audio.setCurrentTime(0);
+},
+getCurrentTime: function() {
+return this.audio.getCurrentTime();
+},
+setCurrentTime: function(t) {
+this.audio.setCurrentTime(t);
+return t;
+},
+getDuration: function() {
+return this.audio.getDuration();
+}
+});
+cc.AudioSource = n.exports = c;
+}), {
+"../assets/CCAudioClip": 57,
+"../utils/misc": 297,
+"./CCComponent": 95
+} ],
+92: [ (function(t, e, i) {
+"use strict";
+var n = [ "touchstart", "touchmove", "touchend", "mousedown", "mousemove", "mouseup", "mouseenter", "mouseleave", "mousewheel" ];
+function r(t) {
+t.stopPropagation();
+}
+var s = cc.Class({
+name: "cc.BlockInputEvents",
+extends: t("./CCComponent"),
+editor: {
+menu: "i18n:MAIN_MENU.component.ui/Block Input Events",
+inspector: "packages://inspector/inspectors/comps/block-input-events.js",
+help: "i18n:COMPONENT.help_url.block_input_events"
+},
+onEnable: function() {
+for (var t = 0; t < n.length; t++) this.node.on(n[t], r, this);
+},
+onDisable: function() {
+for (var t = 0; t < n.length; t++) this.node.off(n[t], r, this);
+}
+});
+cc.BlockInputEvents = e.exports = s;
+}), {
+"./CCComponent": 95
+} ],
+93: [ (function(t, e, i) {
+"use strict";
+var n = t("./CCComponent"), r = t("../utils/gray-sprite-state"), s = cc.Enum({
+NONE: 0,
+COLOR: 1,
+SPRITE: 2,
+SCALE: 3
+}), o = cc.Enum({
+NORMAL: 0,
+HOVER: 1,
+PRESSED: 2,
+DISABLED: 3
+}), a = cc.Class({
+name: "cc.Button",
+extends: n,
+mixins: [ r ],
+ctor: function() {
+this._pressed = !1;
+this._hovered = !1;
+this._fromColor = null;
+this._toColor = null;
+this._time = 0;
+this._transitionFinished = !0;
+this._fromScale = cc.Vec2.ZERO;
+this._toScale = cc.Vec2.ZERO;
+this._originalScale = null;
+this._graySpriteMaterial = null;
+this._spriteMaterial = null;
+this._sprite = null;
+},
+editor: !1,
+properties: {
+interactable: {
+default: !0,
+tooltip: !1,
+notify: function() {
+this._updateState();
+this.interactable || this._resetState();
+},
+animatable: !1
+},
+_resizeToTarget: {
+animatable: !1,
+set: function(t) {
+t && this._resizeNodeToTargetNode();
+}
+},
+enableAutoGrayEffect: {
+default: !1,
+tooltip: !1,
+notify: function() {
+this._updateDisabledState();
+}
+},
+transition: {
+default: s.NONE,
+tooltip: !1,
+type: s,
+animatable: !1,
+notify: function(t) {
+this._updateTransition(t);
+},
+formerlySerializedAs: "transition"
+},
+normalColor: {
+default: cc.Color.WHITE,
+displayName: "Normal",
+tooltip: !1,
+notify: function() {
+this.transition === s.Color && this._getButtonState() === o.NORMAL && (this._getTarget().opacity = this.normalColor.a);
+this._updateState();
+}
+},
+pressedColor: {
+default: cc.color(211, 211, 211),
+displayName: "Pressed",
+tooltip: !1,
+notify: function() {
+this.transition === s.Color && this._getButtonState() === o.PRESSED && (this._getTarget().opacity = this.pressedColor.a);
+this._updateState();
+},
+formerlySerializedAs: "pressedColor"
+},
+hoverColor: {
+default: cc.Color.WHITE,
+displayName: "Hover",
+tooltip: !1,
+notify: function() {
+this.transition === s.Color && this._getButtonState() === o.HOVER && (this._getTarget().opacity = this.hoverColor.a);
+this._updateState();
+},
+formerlySerializedAs: "hoverColor"
+},
+disabledColor: {
+default: cc.color(124, 124, 124),
+displayName: "Disabled",
+tooltip: !1,
+notify: function() {
+this.transition === s.Color && this._getButtonState() === o.DISABLED && (this._getTarget().opacity = this.disabledColor.a);
+this._updateState();
+}
+},
+duration: {
+default: .1,
+range: [ 0, 10 ],
+tooltip: !1
+},
+zoomScale: {
+default: 1.2,
+tooltip: !1
+},
+normalSprite: {
+default: null,
+type: cc.SpriteFrame,
+displayName: "Normal",
+tooltip: !1,
+notify: function() {
+this._updateState();
+}
+},
+pressedSprite: {
+default: null,
+type: cc.SpriteFrame,
+displayName: "Pressed",
+tooltip: !1,
+formerlySerializedAs: "pressedSprite",
+notify: function() {
+this._updateState();
+}
+},
+hoverSprite: {
+default: null,
+type: cc.SpriteFrame,
+displayName: "Hover",
+tooltip: !1,
+formerlySerializedAs: "hoverSprite",
+notify: function() {
+this._updateState();
+}
+},
+disabledSprite: {
+default: null,
+type: cc.SpriteFrame,
+displayName: "Disabled",
+tooltip: !1,
+notify: function() {
+this._updateState();
+}
+},
+target: {
+default: null,
+type: cc.Node,
+tooltip: !1,
+notify: function(t) {
+this._applyTarget();
+t && this.target !== t && this._unregisterTargetEvent(t);
+}
+},
+clickEvents: {
+default: [],
+type: cc.Component.EventHandler,
+tooltip: !1
+}
+},
+statics: {
+Transition: s
+},
+__preload: function() {
+this._applyTarget();
+this._updateState();
+},
+_resetState: function() {
+this._pressed = !1;
+this._hovered = !1;
+var t = this._getTarget(), e = this.transition, i = this._originalScale;
+e === s.COLOR && this.interactable ? this._setTargetColor(this.normalColor) : e === s.SCALE && i && t.setScale(i.x, i.y);
+this._transitionFinished = !0;
+},
+onEnable: function() {
+this.normalSprite && this.normalSprite.ensureLoadTexture();
+this.hoverSprite && this.hoverSprite.ensureLoadTexture();
+this.pressedSprite && this.pressedSprite.ensureLoadTexture();
+this.disabledSprite && this.disabledSprite.ensureLoadTexture();
+this._registerNodeEvent();
+},
+onDisable: function() {
+this._resetState();
+this._unregisterNodeEvent();
+},
+_getTarget: function() {
+return this.target ? this.target : this.node;
+},
+_onTargetSpriteFrameChanged: function(t) {
+this.transition === s.SPRITE && this._setCurrentStateSprite(t.spriteFrame);
+},
+_onTargetColorChanged: function(t) {
+this.transition === s.COLOR && this._setCurrentStateColor(t);
+},
+_onTargetScaleChanged: function() {
+var t = this._getTarget();
+if (this._originalScale && (this.transition !== s.SCALE || this._transitionFinished)) {
+this._originalScale.x = t.scaleX;
+this._originalScale.y = t.scaleY;
+}
+},
+_setTargetColor: function(t) {
+var e = this._getTarget();
+e.color = t;
+e.opacity = t.a;
+},
+_getStateColor: function(t) {
+switch (t) {
+case o.NORMAL:
+return this.normalColor;
+
+case o.HOVER:
+return this.hoverColor;
+
+case o.PRESSED:
+return this.pressedColor;
+
+case o.DISABLED:
+return this.disabledColor;
+}
+},
+_getStateSprite: function(t) {
+switch (t) {
+case o.NORMAL:
+return this.normalSprite;
+
+case o.HOVER:
+return this.hoverSprite;
+
+case o.PRESSED:
+return this.pressedSprite;
+
+case o.DISABLED:
+return this.disabledSprite;
+}
+},
+_setCurrentStateColor: function(t) {
+switch (this._getButtonState()) {
+case o.NORMAL:
+this.normalColor = t;
+break;
+
+case o.HOVER:
+this.hoverColor = t;
+break;
+
+case o.PRESSED:
+this.pressedColor = t;
+break;
+
+case o.DISABLED:
+this.disabledColor = t;
+}
+},
+_setCurrentStateSprite: function(t) {
+switch (this._getButtonState()) {
+case o.NORMAL:
+this.normalSprite = t;
+break;
+
+case o.HOVER:
+this.hoverSprite = t;
+break;
+
+case o.PRESSED:
+this.pressedSprite = t;
+break;
+
+case o.DISABLED:
+this.disabledSprite = t;
+}
+},
+update: function(t) {
+var e = this._getTarget();
+if (!this._transitionFinished && (this.transition === s.COLOR || this.transition === s.SCALE)) {
+this.time += t;
+var i = 1;
+this.duration > 0 && (i = this.time / this.duration);
+i >= 1 && (i = 1);
+if (this.transition === s.COLOR) {
+var n = this._fromColor.lerp(this._toColor, i);
+this._setTargetColor(n);
+} else this.transition === s.SCALE && this._originalScale && (e.scale = this._fromScale.lerp(this._toScale, i));
+1 === i && (this._transitionFinished = !0);
+}
+},
+_registerNodeEvent: function() {
+this.node.on(cc.Node.EventType.TOUCH_START, this._onTouchBegan, this);
+this.node.on(cc.Node.EventType.TOUCH_MOVE, this._onTouchMove, this);
+this.node.on(cc.Node.EventType.TOUCH_END, this._onTouchEnded, this);
+this.node.on(cc.Node.EventType.TOUCH_CANCEL, this._onTouchCancel, this);
+this.node.on(cc.Node.EventType.MOUSE_ENTER, this._onMouseMoveIn, this);
+this.node.on(cc.Node.EventType.MOUSE_LEAVE, this._onMouseMoveOut, this);
+},
+_unregisterNodeEvent: function() {
+this.node.off(cc.Node.EventType.TOUCH_START, this._onTouchBegan, this);
+this.node.off(cc.Node.EventType.TOUCH_MOVE, this._onTouchMove, this);
+this.node.off(cc.Node.EventType.TOUCH_END, this._onTouchEnded, this);
+this.node.off(cc.Node.EventType.TOUCH_CANCEL, this._onTouchCancel, this);
+this.node.off(cc.Node.EventType.MOUSE_ENTER, this._onMouseMoveIn, this);
+this.node.off(cc.Node.EventType.MOUSE_LEAVE, this._onMouseMoveOut, this);
+},
+_registerTargetEvent: function(t) {
+0;
+t.on(cc.Node.EventType.SCALE_CHANGED, this._onTargetScaleChanged, this);
+},
+_unregisterTargetEvent: function(t) {
+0;
+t.off(cc.Node.EventType.SCALE_CHANGED, this._onTargetScaleChanged, this);
+},
+_getTargetSprite: function(t) {
+var e = null;
+t && (e = t.getComponent(cc.Sprite));
+return e;
+},
+_applyTarget: function() {
+var t = this._getTarget();
+this._sprite = this._getTargetSprite(t);
+this._originalScale || (this._originalScale = cc.Vec2.ZERO);
+this._originalScale.x = t.scaleX;
+this._originalScale.y = t.scaleY;
+this._registerTargetEvent(t);
+},
+_onTouchBegan: function(t) {
+if (this.interactable && this.enabledInHierarchy) {
+this._pressed = !0;
+this._updateState();
+t.stopPropagation();
+}
+},
+_onTouchMove: function(t) {
+if (this.interactable && this.enabledInHierarchy && this._pressed) {
+var e = t.touch, i = this.node._hitTest(e.getLocation()), n = this._getTarget(), r = this._originalScale;
+if (this.transition === s.SCALE && r) if (i) {
+this._fromScale.x = r.x;
+this._fromScale.y = r.y;
+this._toScale.x = r.x * this.zoomScale;
+this._toScale.y = r.y * this.zoomScale;
+this._transitionFinished = !1;
+} else {
+this.time = 0;
+this._transitionFinished = !0;
+n.setScale(r.x, r.y);
+} else {
+var a = void 0;
+a = i ? o.PRESSED : o.NORMAL;
+this._applyTransition(a);
+}
+t.stopPropagation();
+}
+},
+_onTouchEnded: function(t) {
+if (this.interactable && this.enabledInHierarchy) {
+if (this._pressed) {
+cc.Component.EventHandler.emitEvents(this.clickEvents, t);
+this.node.emit("click", this);
+}
+this._pressed = !1;
+this._updateState();
+t.stopPropagation();
+}
+},
+_onTouchCancel: function() {
+if (this.interactable && this.enabledInHierarchy) {
+this._pressed = !1;
+this._updateState();
+}
+},
+_onMouseMoveIn: function() {
+if (!this._pressed && this.interactable && this.enabledInHierarchy && (this.transition !== s.SPRITE || this.hoverSprite) && !this._hovered) {
+this._hovered = !0;
+this._updateState();
+}
+},
+_onMouseMoveOut: function() {
+if (this._hovered) {
+this._hovered = !1;
+this._updateState();
+}
+},
+_updateState: function() {
+var t = this._getButtonState();
+this._applyTransition(t);
+this._updateDisabledState();
+},
+_getButtonState: function() {
+return this.interactable ? this._pressed ? o.PRESSED : this._hovered ? o.HOVER : o.NORMAL : o.DISABLED;
+},
+_updateColorTransitionImmediately: function(t) {
+var e = this._getStateColor(t);
+this._setTargetColor(e);
+},
+_updateColorTransition: function(t) {
+if (t === o.DISABLED) this._updateColorTransitionImmediately(t); else {
+var e = this._getTarget(), i = this._getStateColor(t);
+this._fromColor = e.color.clone();
+this._toColor = i;
+this.time = 0;
+this._transitionFinished = !1;
+}
+},
+_updateSpriteTransition: function(t) {
+var e = this._getStateSprite(t);
+this._sprite && e && (this._sprite.spriteFrame = e);
+},
+_updateScaleTransition: function(t) {
+t === o.PRESSED ? this._zoomUp() : this._zoomBack();
+},
+_zoomUp: function() {
+if (this._originalScale) {
+this._fromScale.x = this._originalScale.x;
+this._fromScale.y = this._originalScale.y;
+this._toScale.x = this._originalScale.x * this.zoomScale;
+this._toScale.y = this._originalScale.y * this.zoomScale;
+this.time = 0;
+this._transitionFinished = !1;
+}
+},
+_zoomBack: function() {
+if (this._originalScale) {
+var t = this._getTarget();
+this._fromScale.x = t.scaleX;
+this._fromScale.y = t.scaleY;
+this._toScale.x = this._originalScale.x;
+this._toScale.y = this._originalScale.y;
+this.time = 0;
+this._transitionFinished = !1;
+}
+},
+_updateTransition: function(t) {
+t === s.COLOR ? this._updateColorTransitionImmediately(o.NORMAL) : t === s.SPRITE && this._updateSpriteTransition(o.NORMAL);
+this._updateState();
+},
+_applyTransition: function(t) {
+var e = this.transition;
+e === s.COLOR ? this._updateColorTransition(t) : e === s.SPRITE ? this._updateSpriteTransition(t) : e === s.SCALE && this._updateScaleTransition(t);
+},
+_resizeNodeToTargetNode: !1,
+_updateDisabledState: function() {
+if (this._sprite) {
+var t = !1;
+this.enableAutoGrayEffect && (this.transition === s.SPRITE && this.disabledSprite || this.interactable || (t = !0));
+this._switchGrayMaterial(t, this._sprite);
+}
+}
+});
+cc.Button = e.exports = a;
+}), {
+"../utils/gray-sprite-state": 292,
+"./CCComponent": 95
+} ],
+94: [ (function(t, e, i) {
+"use strict";
+var n = t("../camera/CCCamera"), r = t("./CCComponent"), s = cc.Class({
+name: "cc.Canvas",
+extends: r,
+editor: !1,
+resetInEditor: !1,
+statics: {
+instance: null
+},
+properties: {
+_designResolution: cc.size(960, 640),
+designResolution: {
+get: function() {
+return cc.size(this._designResolution);
+},
+set: function(t) {
+this._designResolution.width = t.width;
+this._designResolution.height = t.height;
+this.applySettings();
+this.alignWithScreen();
+},
+tooltip: !1
+},
+_fitWidth: !1,
+_fitHeight: !0,
+fitHeight: {
+get: function() {
+return this._fitHeight;
+},
+set: function(t) {
+if (this._fitHeight !== t) {
+this._fitHeight = t;
+this.applySettings();
+this.alignWithScreen();
+}
+},
+tooltip: !1
+},
+fitWidth: {
+get: function() {
+return this._fitWidth;
+},
+set: function(t) {
+if (this._fitWidth !== t) {
+this._fitWidth = t;
+this.applySettings();
+this.alignWithScreen();
+}
+},
+tooltip: !1
+}
+},
+ctor: function() {
+this._thisOnResized = this.alignWithScreen.bind(this);
+},
+__preload: function() {
+if (s.instance) return cc.errorID(6700, this.node.name, s.instance.node.name);
+s.instance = this;
+cc.sys.isMobile ? window.addEventListener("resize", this._thisOnResized) : cc.view.on("canvas-resize", this._thisOnResized);
+this.applySettings();
+this.alignWithScreen();
+var t = cc.find("Main Camera", this.node);
+if (!t) {
+(t = new cc.Node("Main Camera")).parent = this.node;
+t.setSiblingIndex(0);
+}
+var e = t.getComponent(n);
+if (!e) {
+e = t.addComponent(n);
+var i = n.ClearFlags;
+e.clearFlags = i.COLOR | i.DEPTH | i.STENCIL;
+e.depth = -1;
+}
+n.main = e;
+},
+onDestroy: function() {
+cc.sys.isMobile ? window.removeEventListener("resize", this._thisOnResized) : cc.view.off("canvas-resize", this._thisOnResized);
+s.instance === this && (s.instance = null);
+},
+alignWithScreen: function() {
+var t, e, i = e = cc.visibleRect;
+t = cc.view.getDesignResolutionSize();
+var n = 0, r = 0;
+if (!this.fitHeight && !this.fitWidth) {
+n = .5 * (t.width - i.width);
+r = .5 * (t.height - i.height);
+}
+this.node.setPosition(.5 * i.width + n, .5 * i.height + r);
+this.node.width = e.width;
+this.node.height = e.height;
+},
+applySettings: function() {
+var t, e = cc.ResolutionPolicy;
+t = this.fitHeight && this.fitWidth ? e.SHOW_ALL : this.fitHeight || this.fitWidth ? this.fitWidth ? e.FIXED_WIDTH : e.FIXED_HEIGHT : e.NO_BORDER;
+var i = this._designResolution;
+cc.view.setDesignResolutionSize(i.width, i.height, t);
+}
+});
+cc.Canvas = e.exports = s;
+}), {
+"../camera/CCCamera": 80,
+"./CCComponent": 95
+} ],
+95: [ (function(i, n, r) {
+"use strict";
+var s = i("../platform/CCObject"), o = i("../platform/js"), a = new (i("../platform/id-generater"))("Comp"), c = (s.Flags.IsOnEnableCalled,
+s.Flags.IsOnLoadCalled), l = cc.Class({
+name: "cc.Component",
+extends: s,
+ctor: function() {
+this._id = a.getNewId();
+this.__eventTargets = [];
+},
+properties: {
+node: {
+default: null,
+visible: !1
+},
+name: {
+get: function() {
+if (this._name) return this._name;
+var t = cc.js.getClassName(this), e = t.lastIndexOf(".");
+e >= 0 && (t = t.slice(e + 1));
+return this.node.name + "<" + t + ">";
+},
+set: function(t) {
+this._name = t;
+},
+visible: !1
+},
+uuid: {
+get: function() {
+return this._id;
+},
+visible: !1
+},
+__scriptAsset: !1,
+_enabled: !0,
+enabled: {
+get: function() {
+return this._enabled;
+},
+set: function(t) {
+if (this._enabled !== t) {
+this._enabled = t;
+if (this.node._activeInHierarchy) {
+var e = cc.director._compScheduler;
+t ? e.enableComp(this) : e.disableComp(this);
+}
+}
+},
+visible: !1,
+animatable: !0
+},
+enabledInHierarchy: {
+get: function() {
+return this._enabled && this.node._activeInHierarchy;
+},
+visible: !1
+},
+_isOnLoadCalled: {
+get: function() {
+return this._objFlags & c;
+}
+}
+},
+update: null,
+lateUpdate: null,
+__preload: null,
+onLoad: null,
+start: null,
+onEnable: null,
+onDisable: null,
+onDestroy: null,
+onFocusInEditor: null,
+onLostFocusInEditor: null,
+resetInEditor: null,
+addComponent: function(t) {
+return this.node.addComponent(t);
+},
+getComponent: function(t) {
+return this.node.getComponent(t);
+},
+getComponents: function(t) {
+return this.node.getComponents(t);
+},
+getComponentInChildren: function(t) {
+return this.node.getComponentInChildren(t);
+},
+getComponentsInChildren: function(t) {
+return this.node.getComponentsInChildren(t);
+},
+_getLocalBounds: null,
+onRestore: null,
+destroy: function() {
+this._super() && this._enabled && this.node._activeInHierarchy && cc.director._compScheduler.disableComp(this);
+},
+_onPreDestroy: function() {
+this.unscheduleAllCallbacks();
+for (var t = this.__eventTargets, e = 0, i = t.length; e < i; ++e) {
+var n = t[e];
+n && n.targetOff(this);
+}
+t.length = 0;
+0;
+cc.director._nodeActivator.destroyComp(this);
+this.node._removeComponent(this);
+},
+_instantiate: function(t) {
+t || (t = cc.instantiate._clone(this, this));
+t.node = null;
+return t;
+},
+schedule: function(t, e, i, n) {
+cc.assertID(t, 1619);
+cc.assertID(e >= 0, 1620);
+e = e || 0;
+i = isNaN(i) ? cc.macro.REPEAT_FOREVER : i;
+n = n || 0;
+var r = cc.director.getScheduler(), s = r.isTargetPaused(this);
+r.schedule(t, this, e, i, n, s);
+},
+scheduleOnce: function(t, e) {
+this.schedule(t, 0, 0, e);
+},
+unschedule: function(t) {
+t && cc.director.getScheduler().unschedule(t, this);
+},
+unscheduleAllCallbacks: function() {
+cc.director.getScheduler().unscheduleAllForTarget(this);
+}
+});
+l._requireComponent = null;
+l._executionOrder = 0;
+0;
+o.value(l, "_registerEditorProps", (function(i, n) {
+var r = n.requireComponent;
+r && (i._requireComponent = r);
+var s = n.executionOrder;
+s && "number" === ("object" === (e = typeof s) ? t(s) : e) && (i._executionOrder = s);
+}));
+l.prototype.__scriptUuid = "";
+cc.Component = n.exports = l;
+}), {
+"../platform/CCObject": 207,
+"../platform/id-generater": 217,
+"../platform/js": 221
+} ],
+96: [ (function(i, n, r) {
+"use strict";
+cc.Component.EventHandler = cc.Class({
+name: "cc.ClickEvent",
+properties: {
+target: {
+default: null,
+type: cc.Node
+},
+component: "",
+_componentId: "",
+_componentName: {
+get: function() {
+this._genCompIdIfNeeded();
+return this._compId2Name(this._componentId);
+},
+set: function(t) {
+this._componentId = this._compName2Id(t);
+}
+},
+handler: {
+default: ""
+},
+customEventData: {
+default: ""
+}
+},
+statics: {
+emitEvents: function(t) {
+var e = void 0;
+if (arguments.length > 0) for (var i = 0, n = (e = new Array(arguments.length - 1)).length; i < n; i++) e[i] = arguments[i + 1];
+for (var r = 0, s = t.length; r < s; r++) {
+var o = t[r];
+o instanceof cc.Component.EventHandler && o.emit(e);
+}
+}
+},
+emit: function(i) {
+var n = this.target;
+if (cc.isValid(n)) {
+this._genCompIdIfNeeded();
+var r = cc.js._getClassById(this._componentId), s = n.getComponent(r);
+if (cc.isValid(s)) {
+var o = s[this.handler];
+if ("function" === ("object" === (e = typeof o) ? t(o) : e)) {
+null != this.customEventData && "" !== this.customEventData && (i = i.slice()).push(this.customEventData);
+o.apply(s, i);
+}
+}
+}
+},
+_compName2Id: function(t) {
+var e = cc.js.getClassByName(t);
+return cc.js._getClassId(e);
+},
+_compId2Name: function(t) {
+var e = cc.js._getClassById(t);
+return cc.js.getClassName(e);
+},
+_genCompIdIfNeeded: function() {
+if (!this._componentId) {
+this._componentName = this.component;
+this.component = "";
+}
+}
+});
+}), {} ],
+97: [ (function(i, n, r) {
+"use strict";
+var s = i("../platform/CCMacro"), o = i("./CCRenderComponent"), a = i("../assets/material/CCMaterial"), c = i("../assets/CCJsonAsset"), l = i("../renderer/utils/label/label-frame"), h = i("../renderer/render-flow"), u = (h.FLAG_COLOR,
+h.FLAG_OPACITY, s.TextAlignment), _ = s.VerticalTextAlignment, f = cc.Enum({
+NONE: 0,
+CLAMP: 1,
+SHRINK: 2,
+RESIZE_HEIGHT: 3
+}), d = cc.Enum({
+NONE: 0,
+BITMAP: 1,
+CHAR: 2
+}), m = cc.Class({
+name: "cc.Label",
+extends: o,
+ctor: function() {
+0;
+this._actualFontSize = 0;
+this._assemblerData = null;
+this._frame = null;
+this._ttfTexture = null;
+this._letterTexture = null;
+},
+editor: !1,
+properties: {
+_useOriginalSize: !0,
+_string: {
+default: "",
+formerlySerializedAs: "_N$string"
+},
+string: {
+get: function() {
+return this._string;
+},
+set: function(t) {
+var e = this._string;
+this._string = "" + t;
+this.string !== e && this._updateRenderData();
+this._checkStringEmpty();
+},
+multiline: !0,
+tooltip: !1
+},
+horizontalAlign: {
+default: u.LEFT,
+type: u,
+tooltip: !1,
+notify: function(t) {
+this.horizontalAlign !== t && this._updateRenderData();
+},
+animatable: !1
+},
+verticalAlign: {
+default: _.TOP,
+type: _,
+tooltip: !1,
+notify: function(t) {
+this.verticalAlign !== t && this._updateRenderData();
+},
+animatable: !1
+},
+actualFontSize: {
+displayName: "Actual Font Size",
+animatable: !1,
+readonly: !0,
+get: function() {
+return this._actualFontSize;
+},
+tooltip: !1
+},
+_fontSize: 40,
+fontSize: {
+get: function() {
+return this._fontSize;
+},
+set: function(t) {
+if (this._fontSize !== t) {
+this._fontSize = t;
+this._updateRenderData();
+}
+},
+range: [ 0, 512 ],
+tooltip: !1
+},
+fontFamily: {
+default: "Arial",
+tooltip: !1,
+notify: function(t) {
+this.fontFamily !== t && this._updateRenderData();
+},
+animatable: !1
+},
+_lineHeight: 40,
+lineHeight: {
+get: function() {
+return this._lineHeight;
+},
+set: function(t) {
+if (this._lineHeight !== t) {
+this._lineHeight = t;
+this._updateRenderData();
+}
+},
+tooltip: !1
+},
+overflow: {
+default: f.NONE,
+type: f,
+tooltip: !1,
+notify: function(t) {
+this.overflow !== t && this._updateRenderData();
+},
+animatable: !1
+},
+_enableWrapText: !0,
+enableWrapText: {
+get: function() {
+return this._enableWrapText;
+},
+set: function(t) {
+if (this._enableWrapText !== t) {
+this._enableWrapText = t;
+this._updateRenderData();
+}
+},
+animatable: !1,
+tooltip: !1
+},
+_N$file: null,
+font: {
+get: function() {
+return this._N$file;
+},
+set: function(i) {
+if (this.font !== i) {
+i || (this._isSystemFontUsed = !0);
+0;
+this._N$file = i;
+i && this._isSystemFontUsed && (this._isSystemFontUsed = !1);
+"string" === ("object" === (e = typeof i) ? t(i) : e) && cc.warnID(4e3);
+if (this._renderData) {
+this.destroyRenderData(this._renderData);
+this._renderData = null;
+}
+this._updateAssembler();
+this._applyFontTexture(!0);
+this._updateRenderData();
+}
+},
+type: cc.Font,
+tooltip: !1,
+animatable: !1
+},
+_isSystemFontUsed: !0,
+useSystemFont: {
+get: function() {
+return this._isSystemFontUsed;
+},
+set: function(t) {
+if (this._isSystemFontUsed !== t) {
+this.destroyRenderData(this._renderData);
+this._renderData = null;
+0;
+this._isSystemFontUsed = !!t;
+if (t) {
+this.font = null;
+this._updateAssembler();
+this._updateRenderData();
+this._checkStringEmpty();
+} else this._userDefinedFont || this.disableRender();
+}
+},
+animatable: !1,
+tooltip: !1
+},
+_bmFontOriginalSize: {
+displayName: "BMFont Original Size",
+get: function() {
+return this._N$file instanceof cc.BitmapFont ? this._N$file.fontSize : -1;
+},
+visible: !0,
+animatable: !1
+},
+_isUseVerticalKerning: !0,
+useVerticalKerning: {
+get: function() {
+return this._isUseVerticalKerning;
+},
+set: function(t) {
+if (this._isUseVerticalKerning !== t) {
+this._isUseVerticalKerning = t;
+this.font instanceof cc.BitmapFont && (this._isUseVerticalKerning && this._verticalKerning ? this.font.setVerticalKerningDict(this._verticalKerning.json) : this.font.clearVerticalKeningDict());
+this._updateRenderData();
+}
+},
+visible: !0
+},
+_verticalKerning: null,
+verticalKerningJson: {
+type: c,
+get: function() {
+return this._verticalKerning;
+},
+set: function(t) {
+this._verticalKerning = t;
+if (this.font instanceof cc.BitmapFont && this._isUseVerticalKerning && this._verticalKerning) {
+this.font.clearVerticalKeningDict();
+this.font.setVerticalKerningDict(this._verticalKerning.json);
+}
+this._updateRenderData();
+},
+visible: !0
+},
+_spacingX: 0,
+spacingX: {
+get: function() {
+return this._spacingX;
+},
+set: function(t) {
+this._spacingX = t;
+this._updateRenderData();
+},
+tooltip: !1
+},
+_batchAsBitmap: !1,
+cacheMode: {
+default: d.NONE,
+type: d,
+tooltip: !1,
+notify: function(t) {
+if (this.cacheMode !== t) {
+t !== d.BITMAP || this.font instanceof cc.BitmapFont || this._frame._resetDynamicAtlasFrame();
+t === d.CHAR && (this._ttfTexture = null);
+this._updateRenderData(!0);
+}
+},
+animatable: !1
+},
+_isBold: {
+default: !1,
+serializable: !1
+},
+_isItalic: {
+default: !1,
+serializable: !1
+},
+_isUnderline: {
+default: !1,
+serializable: !1
+}
+},
+statics: {
+HorizontalAlign: u,
+VerticalAlign: _,
+Overflow: f,
+CacheMode: d
+},
+onLoad: function() {
+if (this._batchAsBitmap && this.cacheMode === d.NONE) {
+this.cacheMode = d.BITMAP;
+this._batchAsBitmap = !1;
+}
+},
+onEnable: function() {
+this._super();
+this.font || this._isSystemFontUsed || (this.useSystemFont = !0);
+this.useSystemFont && !this.fontFamily && (this.fontFamily = "Arial");
+this.font instanceof cc.BitmapFont && (this._isUseVerticalKerning && this._verticalKerning ? this.font.setVerticalKerningDict(this._verticalKerning.json) : this.font.clearVerticalKeningDict());
+this.node.on(cc.Node.EventType.SIZE_CHANGED, this._updateRenderData, this);
+this.node.on(cc.Node.EventType.ANCHOR_CHANGED, this._updateRenderData, this);
+this.node.on(cc.Node.EventType.COLOR_CHANGED, this._updateColor, this);
+this._updateRenderData(!0);
+this._checkStringEmpty();
+},
+onDisable: function() {
+this._super();
+this.node.off(cc.Node.EventType.SIZE_CHANGED, this._updateRenderData, this);
+this.node.off(cc.Node.EventType.ANCHOR_CHANGED, this._updateRenderData, this);
+this.node.off(cc.Node.EventType.COLOR_CHANGED, this._updateColor, this);
+},
+onDestroy: function() {
+this._assembler && this._assembler._resetAssemblerData && this._assembler._resetAssemblerData(this._assemblerData);
+this._assemblerData = null;
+this._letterTexture = null;
+if (this._ttfTexture) {
+this._ttfTexture.destroy();
+this._ttfTexture = null;
+}
+this._super();
+},
+_canRender: function() {
+var t = this._super(), e = this.font;
+if (e instanceof cc.BitmapFont) {
+var i = e.spriteFrame;
+i && i.textureLoaded() || (t = !1);
+}
+return t;
+},
+_checkStringEmpty: function() {
+this.markForRender(!!this.string);
+},
+_on3DNodeChanged: function() {
+this._updateAssembler();
+this._applyFontTexture(!0);
+},
+_updateAssembler: function() {
+var t = m._assembler.getAssembler(this);
+if (this._assembler !== t) {
+this._assembler = t;
+this._renderData = null;
+this._frame = null;
+}
+if (!this._renderData) {
+this._renderData = this._assembler.createData(this);
+this.markForUpdateRenderData(!0);
+}
+},
+_applyFontTexture: function(t) {
+var e = this.font;
+if (e instanceof cc.BitmapFont) {
+var i = e.spriteFrame;
+this._frame = i;
+var n = this, r = function() {
+n._frame._texture = i._texture;
+n._activateMaterial(t);
+t && n._assembler && n._assembler.updateRenderData(n);
+};
+if (i && i.textureLoaded()) r(); else {
+this.disableRender();
+if (i) {
+i.once("load", r, this);
+i.ensureLoadTexture();
+}
+}
+} else {
+this._frame || (this._frame = new l());
+if (this.cacheMode === d.CHAR && cc.sys.browserType !== cc.sys.BROWSER_TYPE_WECHAT_GAME_SUB) {
+this._letterTexture = this._assembler._getAssemblerData();
+this._frame._refreshTexture(this._letterTexture);
+} else if (!this._ttfTexture) {
+this._ttfTexture = new cc.Texture2D();
+this._assemblerData = this._assembler._getAssemblerData();
+this._ttfTexture.initWithElement(this._assemblerData.canvas);
+}
+if (this.cacheMode !== d.CHAR) {
+this._frame._resetDynamicAtlasFrame();
+this._frame._refreshTexture(this._ttfTexture);
+}
+this._activateMaterial(t);
+t && this._assembler && this._assembler.updateRenderData(this);
+}
+},
+_updateColor: function() {
+if (!(this.font instanceof cc.BitmapFont)) {
+this._updateRenderData();
+this.node._renderFlag &= ~h.FLAG_COLOR;
+}
+},
+_activateMaterial: function(t) {
+if (t) {
+if (cc.game.renderType === cc.game.RENDER_TYPE_CANVAS) this._frame._texture.url = this.uuid + "_texture"; else {
+var e = this.sharedMaterials[0];
+(e = e ? a.getInstantiatedMaterial(e, this) : a.getInstantiatedBuiltinMaterial("2d-sprite", this)).setProperty("texture", this._frame._texture);
+this.setMaterial(0, e);
+}
+this.markForUpdateRenderData(!0);
+this.markForRender(!0);
+}
+},
+_updateRenderData: function(t) {
+var e = this._renderData;
+if (e) {
+e.vertDirty = !0;
+e.uvDirty = !0;
+this.markForUpdateRenderData(!0);
+}
+if (!0 === t) {
+this._updateAssembler();
+this._applyFontTexture(t);
+}
+},
+_enableBold: function(t) {
+this._isBold = !!t;
+},
+_enableItalics: function(t) {
+this._isItalic = !!t;
+},
+_enableUnderline: function(t) {
+this._isUnderline = !!t;
+}
+});
+cc.Label = n.exports = m;
+}), {
+"../assets/CCJsonAsset": 62,
+"../assets/material/CCMaterial": 75,
+"../platform/CCMacro": 206,
+"../renderer/render-flow": 245,
+"../renderer/utils/label/label-frame": 249,
+"./CCRenderComponent": 106
+} ],
+98: [ (function(t, e, i) {
+"use strict";
+var n = cc.Class({
+name: "cc.LabelOutline",
+extends: t("./CCComponent"),
+editor: !1,
+properties: {
+_color: cc.Color.WHITE,
+_width: 1,
+color: {
+tooltip: !1,
+get: function() {
+return this._color;
+},
+set: function(t) {
+this._color = t;
+this._updateRenderData();
+}
+},
+width: {
+tooltip: !1,
+get: function() {
+return this._width;
+},
+set: function(t) {
+this._width = t;
+this._updateRenderData();
+},
+range: [ 0, 512 ]
+}
+},
+onEnable: function() {
+this._updateRenderData();
+},
+onDisable: function() {
+this._updateRenderData();
+},
+_updateRenderData: function() {
+var t = this.node.getComponent(cc.Label);
+t && t._updateRenderData();
+}
+});
+cc.LabelOutline = e.exports = n;
+}), {
+"./CCComponent": 95
+} ],
+99: [ (function(t, e, i) {
+"use strict";
+var n = cc.Class({
+name: "cc.LabelShadow",
+extends: t("./CCComponent"),
+editor: !1,
+properties: {
+_color: cc.Color.WHITE,
+_offset: cc.v2(2, 2),
+_blur: 2,
+color: {
+tooltip: !1,
+get: function() {
+return this._color;
+},
+set: function(t) {
+this._color = t;
+this._updateRenderData();
+}
+},
+offset: {
+tooltip: !1,
+get: function() {
+return this._offset;
+},
+set: function(t) {
+this._offset = t;
+this._updateRenderData();
+}
+},
+blur: {
+tooltip: !1,
+get: function() {
+return this._blur;
+},
+set: function(t) {
+this._blur = t;
+this._updateRenderData();
+},
+range: [ 0, 1024 ]
+}
+},
+onEnable: function() {
+this._updateRenderData();
+},
+onDisable: function() {
+this._updateRenderData();
+},
+_updateRenderData: function() {
+var t = this.node.getComponent(cc.Label);
+t && t._updateRenderData();
+}
+});
+cc.LabelShadow = e.exports = n;
+}), {
+"./CCComponent": 95
+} ],
+100: [ (function(t, e, i) {
+"use strict";
+var n = t("../CCNode").EventType, r = cc.Enum({
+NONE: 0,
+HORIZONTAL: 1,
+VERTICAL: 2,
+GRID: 3
+}), s = cc.Enum({
+NONE: 0,
+CONTAINER: 1,
+CHILDREN: 2
+}), o = cc.Enum({
+HORIZONTAL: 0,
+VERTICAL: 1
+}), a = cc.Enum({
+BOTTOM_TO_TOP: 0,
+TOP_TO_BOTTOM: 1
+}), c = cc.Enum({
+LEFT_TO_RIGHT: 0,
+RIGHT_TO_LEFT: 1
+}), l = cc.Class({
+name: "cc.Layout",
+extends: t("./CCComponent"),
+editor: !1,
+properties: {
+_layoutSize: cc.size(300, 200),
+_layoutDirty: {
+default: !0,
+serializable: !1
+},
+_resize: s.NONE,
+_N$layoutType: r.NONE,
+type: {
+type: r,
+get: function() {
+return this._N$layoutType;
+},
+set: function(t) {
+this._N$layoutType = t;
+this._doLayoutDirty();
+},
+tooltip: !1,
+animatable: !1
+},
+resizeMode: {
+type: s,
+tooltip: !1,
+animatable: !1,
+get: function() {
+return this._resize;
+},
+set: function(t) {
+if (this.type !== r.NONE || t !== s.CHILDREN) {
+this._resize = t;
+this._doLayoutDirty();
+}
+}
+},
+cellSize: {
+default: cc.size(40, 40),
+tooltip: !1,
+type: cc.Size,
+notify: function() {
+this._doLayoutDirty();
+}
+},
+startAxis: {
+default: o.HORIZONTAL,
+tooltip: !1,
+type: o,
+notify: function() {
+this._doLayoutDirty();
+},
+animatable: !1
+},
+_N$padding: {
+default: 0
+},
+paddingLeft: {
+default: 0,
+tooltip: !1,
+notify: function() {
+this._doLayoutDirty();
+}
+},
+paddingRight: {
+default: 0,
+tooltip: !1,
+notify: function() {
+this._doLayoutDirty();
+}
+},
+paddingTop: {
+default: 0,
+tooltip: !1,
+notify: function() {
+this._doLayoutDirty();
+}
+},
+paddingBottom: {
+default: 0,
+tooltip: !1,
+notify: function() {
+this._doLayoutDirty();
+}
+},
+spacingX: {
+default: 0,
+notify: function() {
+this._doLayoutDirty();
+},
+tooltip: !1
+},
+spacingY: {
+default: 0,
+notify: function() {
+this._doLayoutDirty();
+},
+tooltip: !1
+},
+verticalDirection: {
+default: a.TOP_TO_BOTTOM,
+type: a,
+notify: function() {
+this._doLayoutDirty();
+},
+tooltip: !1,
+animatable: !1
+},
+horizontalDirection: {
+default: c.LEFT_TO_RIGHT,
+type: c,
+notify: function() {
+this._doLayoutDirty();
+},
+tooltip: !1,
+animatable: !1
+},
+affectedByScale: {
+default: !1,
+notify: function() {
+this._doLayoutDirty();
+},
+animatable: !1,
+tooltip: !1
+}
+},
+statics: {
+Type: r,
+VerticalDirection: a,
+HorizontalDirection: c,
+ResizeMode: s,
+AxisDirection: o
+},
+_migratePaddingData: function() {
+this.paddingLeft = this._N$padding;
+this.paddingRight = this._N$padding;
+this.paddingTop = this._N$padding;
+this.paddingBottom = this._N$padding;
+this._N$padding = 0;
+},
+onEnable: function() {
+this._addEventListeners();
+this.node.getContentSize().equals(cc.size(0, 0)) && this.node.setContentSize(this._layoutSize);
+0 !== this._N$padding && this._migratePaddingData();
+this._doLayoutDirty();
+},
+onDisable: function() {
+this._removeEventListeners();
+},
+_doLayoutDirty: function() {
+this._layoutDirty = !0;
+},
+_doScaleDirty: function() {
+this._layoutDirty = this._layoutDirty || this.affectedByScale;
+},
+_addEventListeners: function() {
+cc.director.on(cc.Director.EVENT_AFTER_UPDATE, this.updateLayout, this);
+this.node.on(n.SIZE_CHANGED, this._resized, this);
+this.node.on(n.ANCHOR_CHANGED, this._doLayoutDirty, this);
+this.node.on(n.CHILD_ADDED, this._childAdded, this);
+this.node.on(n.CHILD_REMOVED, this._childRemoved, this);
+this.node.on(n.CHILD_REORDER, this._doLayoutDirty, this);
+this._addChildrenEventListeners();
+},
+_removeEventListeners: function() {
+cc.director.off(cc.Director.EVENT_AFTER_UPDATE, this.updateLayout, this);
+this.node.off(n.SIZE_CHANGED, this._resized, this);
+this.node.off(n.ANCHOR_CHANGED, this._doLayoutDirty, this);
+this.node.off(n.CHILD_ADDED, this._childAdded, this);
+this.node.off(n.CHILD_REMOVED, this._childRemoved, this);
+this.node.off(n.CHILD_REORDER, this._doLayoutDirty, this);
+this._removeChildrenEventListeners();
+},
+_addChildrenEventListeners: function() {
+for (var t = this.node.children, e = 0; e < t.length; ++e) {
+var i = t[e];
+i.on(n.SCALE_CHANGED, this._doScaleDirty, this);
+i.on(n.SIZE_CHANGED, this._doLayoutDirty, this);
+i.on(n.POSITION_CHANGED, this._doLayoutDirty, this);
+i.on(n.ANCHOR_CHANGED, this._doLayoutDirty, this);
+i.on("active-in-hierarchy-changed", this._doLayoutDirty, this);
+}
+},
+_removeChildrenEventListeners: function() {
+for (var t = this.node.children, e = 0; e < t.length; ++e) {
+var i = t[e];
+i.off(n.SCALE_CHANGED, this._doScaleDirty, this);
+i.off(n.SIZE_CHANGED, this._doLayoutDirty, this);
+i.off(n.POSITION_CHANGED, this._doLayoutDirty, this);
+i.off(n.ANCHOR_CHANGED, this._doLayoutDirty, this);
+i.off("active-in-hierarchy-changed", this._doLayoutDirty, this);
+}
+},
+_childAdded: function(t) {
+t.on(n.SCALE_CHANGED, this._doScaleDirty, this);
+t.on(n.SIZE_CHANGED, this._doLayoutDirty, this);
+t.on(n.POSITION_CHANGED, this._doLayoutDirty, this);
+t.on(n.ANCHOR_CHANGED, this._doLayoutDirty, this);
+t.on("active-in-hierarchy-changed", this._doLayoutDirty, this);
+this._doLayoutDirty();
+},
+_childRemoved: function(t) {
+t.off(n.SCALE_CHANGED, this._doScaleDirty, this);
+t.off(n.SIZE_CHANGED, this._doLayoutDirty, this);
+t.off(n.POSITION_CHANGED, this._doLayoutDirty, this);
+t.off(n.ANCHOR_CHANGED, this._doLayoutDirty, this);
+t.off("active-in-hierarchy-changed", this._doLayoutDirty, this);
+this._doLayoutDirty();
+},
+_resized: function() {
+this._layoutSize = this.node.getContentSize();
+this._doLayoutDirty();
+},
+_doLayoutHorizontally: function(t, e, i, n) {
+var o = this.node.getAnchorPoint(), l = this.node.children, h = 1, u = this.paddingLeft, _ = -o.x * t;
+if (this.horizontalDirection === c.RIGHT_TO_LEFT) {
+h = -1;
+_ = (1 - o.x) * t;
+u = this.paddingRight;
+}
+for (var f = _ + h * u - h * this.spacingX, d = 0, m = 0, p = 0, v = 0, y = 0, g = 0, x = 0, C = 0; C < l.length; ++C) {
+(A = l[C]).activeInHierarchy && x++;
+}
+var b = this.cellSize.width;
+this.type !== r.GRID && this.resizeMode === s.CHILDREN && (b = (t - (this.paddingLeft + this.paddingRight) - (x - 1) * this.spacingX) / x);
+for (C = 0; C < l.length; ++C) {
+var A = l[C], S = this._getUsedScaleValue(A.scaleX), w = this._getUsedScaleValue(A.scaleY);
+if (A.activeInHierarchy) {
+if (this._resize === s.CHILDREN) {
+A.width = b / S;
+this.type === r.GRID && (A.height = this.cellSize.height / w);
+}
+var T = A.anchorX, E = A.width * S, M = A.height * w;
+p > m && (m = p);
+if (M >= m) {
+p = m;
+m = M;
+g = A.getAnchorPoint().y;
+}
+this.horizontalDirection === c.RIGHT_TO_LEFT && (T = 1 - A.anchorX);
+f = f + h * T * E + h * this.spacingX;
+var B = h * (1 - T) * E;
+if (e) {
+var D = f + B + h * (h > 0 ? this.paddingRight : this.paddingLeft), I = this.horizontalDirection === c.LEFT_TO_RIGHT && D > (1 - o.x) * t, P = this.horizontalDirection === c.RIGHT_TO_LEFT && D < -o.x * t;
+if (I || P) {
+if (M >= m) {
+0 === p && (p = m);
+d += p;
+p = m;
+} else {
+d += m;
+p = M;
+m = 0;
+}
+f = _ + h * (u + T * E);
+v++;
+}
+}
+var R = i(A, d, v);
+t >= E + this.paddingLeft + this.paddingRight && n && A.setPosition(cc.v2(f, R));
+var L, F = 1, O = 0 === m ? M : m;
+if (this.verticalDirection === a.TOP_TO_BOTTOM) {
+y = y || this.node._contentSize.height;
+(L = R + (F = -1) * (O * g + this.paddingBottom)) < y && (y = L);
+} else {
+y = y || -this.node._contentSize.height;
+(L = R + F * (O * g + this.paddingTop)) > y && (y = L);
+}
+f += B;
+}
+}
+return y;
+},
+_getVerticalBaseHeight: function(t) {
+var e = 0, i = 0;
+if (this.resizeMode === s.CONTAINER) {
+for (var n = 0; n < t.length; ++n) {
+var r = t[n];
+if (r.activeInHierarchy) {
+i++;
+e += r.height * this._getUsedScaleValue(r.scaleY);
+}
+}
+e += (i - 1) * this.spacingY + this.paddingBottom + this.paddingTop;
+} else e = this.node.getContentSize().height;
+return e;
+},
+_doLayoutVertically: function(t, e, i, n) {
+var o = this.node.getAnchorPoint(), l = this.node.children, h = 1, u = this.paddingBottom, _ = -o.y * t;
+if (this.verticalDirection === a.TOP_TO_BOTTOM) {
+h = -1;
+_ = (1 - o.y) * t;
+u = this.paddingTop;
+}
+for (var f = _ + h * u - h * this.spacingY, d = 0, m = 0, p = 0, v = 0, y = 0, g = 0, x = 0, C = 0; C < l.length; ++C) {
+(A = l[C]).activeInHierarchy && x++;
+}
+var b = this.cellSize.height;
+this.type !== r.GRID && this.resizeMode === s.CHILDREN && (b = (t - (this.paddingTop + this.paddingBottom) - (x - 1) * this.spacingY) / x);
+for (C = 0; C < l.length; ++C) {
+var A = l[C], S = this._getUsedScaleValue(A.scaleX), w = this._getUsedScaleValue(A.scaleY);
+if (A.activeInHierarchy) {
+if (this.resizeMode === s.CHILDREN) {
+A.height = b / w;
+this.type === r.GRID && (A.width = this.cellSize.width / S);
+}
+var T = A.anchorY, E = A.width * S, M = A.height * w;
+p > m && (m = p);
+if (E >= m) {
+p = m;
+m = E;
+g = A.getAnchorPoint().x;
+}
+this.verticalDirection === a.TOP_TO_BOTTOM && (T = 1 - A.anchorY);
+f = f + h * T * M + h * this.spacingY;
+var B = h * (1 - T) * M;
+if (e) {
+var D = f + B + h * (h > 0 ? this.paddingTop : this.paddingBottom), I = this.verticalDirection === a.BOTTOM_TO_TOP && D > (1 - o.y) * t, P = this.verticalDirection === a.TOP_TO_BOTTOM && D < -o.y * t;
+if (I || P) {
+if (E >= m) {
+0 === p && (p = m);
+d += p;
+p = m;
+} else {
+d += m;
+p = E;
+m = 0;
+}
+f = _ + h * (u + T * M);
+v++;
+}
+}
+var R = i(A, d, v);
+t >= M + (this.paddingTop + this.paddingBottom) && n && A.setPosition(cc.v2(R, f));
+var L, F = 1, O = 0 === m ? E : m;
+if (this.horizontalDirection === c.RIGHT_TO_LEFT) {
+F = -1;
+y = y || this.node._contentSize.width;
+(L = R + F * (O * g + this.paddingLeft)) < y && (y = L);
+} else {
+y = y || -this.node._contentSize.width;
+(L = R + F * (O * g + this.paddingRight)) > y && (y = L);
+}
+f += B;
+}
+}
+return y;
+},
+_doLayoutBasic: function() {
+for (var t = this.node.children, e = null, i = 0; i < t.length; ++i) {
+var n = t[i];
+n.activeInHierarchy && (e ? e.union(e, n.getBoundingBoxToWorld()) : e = n.getBoundingBoxToWorld());
+}
+if (e) {
+var r = this.node.convertToNodeSpaceAR(cc.v2(e.x, e.y));
+r = cc.v2(r.x - this.paddingLeft, r.y - this.paddingBottom);
+var s = this.node.convertToNodeSpaceAR(cc.v2(e.xMax, e.yMax)), o = (s = cc.v2(s.x + this.paddingRight, s.y + this.paddingTop)).sub(r);
+if (0 !== (o = cc.size(parseFloat(o.x.toFixed(2)), parseFloat(o.y.toFixed(2)))).width) {
+var a = -r.x / o.width;
+this.node.anchorX = parseFloat(a.toFixed(2));
+}
+if (0 !== o.height) {
+var c = -r.y / o.height;
+this.node.anchorY = parseFloat(c.toFixed(2));
+}
+this.node.setContentSize(o);
+}
+},
+_doLayoutGridAxisHorizontal: function(t, e) {
+var i = e.width, n = 1, r = -t.y * e.height, o = this.paddingBottom;
+if (this.verticalDirection === a.TOP_TO_BOTTOM) {
+n = -1;
+r = (1 - t.y) * e.height;
+o = this.paddingTop;
+}
+var c = function(t, e, i) {
+return r + n * (e + t.anchorY * t.height * this._getUsedScaleValue(t.scaleY) + o + i * this.spacingY);
+}.bind(this), l = 0;
+if (this.resizeMode === s.CONTAINER) {
+var h = this._doLayoutHorizontally(i, !0, c, !1);
+(l = r - h) < 0 && (l *= -1);
+r = -t.y * l;
+if (this.verticalDirection === a.TOP_TO_BOTTOM) {
+n = -1;
+r = (1 - t.y) * l;
+}
+}
+this._doLayoutHorizontally(i, !0, c, !0);
+this.resizeMode === s.CONTAINER && this.node.setContentSize(i, l);
+},
+_doLayoutGridAxisVertical: function(t, e) {
+var i = e.height, n = 1, r = -t.x * e.width, o = this.paddingLeft;
+if (this.horizontalDirection === c.RIGHT_TO_LEFT) {
+n = -1;
+r = (1 - t.x) * e.width;
+o = this.paddingRight;
+}
+var a = function(t, e, i) {
+return r + n * (e + t.anchorX * t.width * this._getUsedScaleValue(t.scaleX) + o + i * this.spacingX);
+}.bind(this), l = 0;
+if (this.resizeMode === s.CONTAINER) {
+var h = this._doLayoutVertically(i, !0, a, !1);
+(l = r - h) < 0 && (l *= -1);
+r = -t.x * l;
+if (this.horizontalDirection === c.RIGHT_TO_LEFT) {
+n = -1;
+r = (1 - t.x) * l;
+}
+}
+this._doLayoutVertically(i, !0, a, !0);
+this.resizeMode === s.CONTAINER && this.node.setContentSize(l, i);
+},
+_doLayoutGrid: function() {
+var t = this.node.getAnchorPoint(), e = this.node.getContentSize();
+this.startAxis === o.HORIZONTAL ? this._doLayoutGridAxisHorizontal(t, e) : this.startAxis === o.VERTICAL && this._doLayoutGridAxisVertical(t, e);
+},
+_getHorizontalBaseWidth: function(t) {
+var e = 0, i = 0;
+if (this.resizeMode === s.CONTAINER) {
+for (var n = 0; n < t.length; ++n) {
+var r = t[n];
+if (r.activeInHierarchy) {
+i++;
+e += r.width * this._getUsedScaleValue(r.scaleX);
+}
+}
+e += (i - 1) * this.spacingX + this.paddingLeft + this.paddingRight;
+} else e = this.node.getContentSize().width;
+return e;
+},
+_doLayout: function() {
+if (this.type === r.HORIZONTAL) {
+var t = this._getHorizontalBaseWidth(this.node.children);
+this._doLayoutHorizontally(t, !1, (function(t) {
+return t.y;
+}), !0);
+this.node.width = t;
+} else if (this.type === r.VERTICAL) {
+var e = this._getVerticalBaseHeight(this.node.children);
+this._doLayoutVertically(e, !1, (function(t) {
+return t.x;
+}), !0);
+this.node.height = e;
+} else this.type === r.NONE ? this.resizeMode === s.CONTAINER && this._doLayoutBasic() : this.type === r.GRID && this._doLayoutGrid();
+},
+_getUsedScaleValue: function(t) {
+return this.affectedByScale ? Math.abs(t) : 1;
+},
+updateLayout: function() {
+if (this._layoutDirty && this.node.children.length > 0) {
+this._doLayout();
+this._layoutDirty = !1;
+}
+}
+});
+Object.defineProperty(l.prototype, "padding", {
+get: function() {
+cc.warnID(4100);
+return this.paddingLeft;
+},
+set: function(t) {
+this._N$padding = t;
+this._migratePaddingData();
+this._doLayoutDirty();
+}
+});
+cc.Layout = e.exports = l;
+}), {
+"../CCNode": 52,
+"./CCComponent": 95
+} ],
+101: [ (function(t, e, i) {
+"use strict";
+var n = (function(t) {
+return t && t.__esModule ? t : {
+default: t
+};
+})(t("../../renderer/gfx")), r = t("../vmath");
+var s = t("../utils/misc"), o = t("../assets/material/CCMaterial"), a = t("./CCRenderComponent"), c = t("../renderer/render-flow"), l = t("../graphics/graphics"), h = (t("../CCNode"),
+cc.v2()), u = r.mat4.create(), _ = [];
+function f(t, e, i) {
+_.length = 0;
+for (var n = 2 * Math.PI / i, r = 0; r < i; ++r) _.push(cc.v2(e.x * Math.cos(n * r) + t.x, e.y * Math.sin(n * r) + t.y));
+return _;
+}
+var d = cc.Enum({
+RECT: 0,
+ELLIPSE: 1,
+IMAGE_STENCIL: 2
+}), m = cc.Class({
+name: "cc.Mask",
+extends: a,
+editor: !1,
+ctor: function() {
+this._graphics = null;
+this._enableMaterial = null;
+this._exitMaterial = null;
+this._clearMaterial = null;
+},
+properties: {
+_spriteFrame: {
+default: null,
+type: cc.SpriteFrame
+},
+_type: d.RECT,
+type: {
+get: function() {
+return this._type;
+},
+set: function(t) {
+this._type = t;
+if (this._type !== d.IMAGE_STENCIL) {
+this.spriteFrame = null;
+this.alphaThreshold = 0;
+this._updateGraphics();
+}
+if (this._renderData) {
+this.destroyRenderData(this._renderData);
+this._renderData = null;
+}
+this._activateMaterial();
+},
+type: d,
+tooltip: !1
+},
+spriteFrame: {
+type: cc.SpriteFrame,
+tooltip: !1,
+get: function() {
+return this._spriteFrame;
+},
+set: function(t) {
+var e = this._spriteFrame;
+if (e !== t) {
+this._spriteFrame = t;
+this._applySpriteFrame(e);
+}
+}
+},
+alphaThreshold: {
+default: 0,
+type: cc.Float,
+range: [ 0, 1, .1 ],
+slide: !0,
+tooltip: !1,
+notify: function() {
+if (cc.game.renderType !== cc.game.RENDER_TYPE_CANVAS) {
+var t = this.sharedMaterials[0];
+t && t.setProperty("alphaThreshold", this.alphaThreshold);
+} else cc.warnID(4201);
+}
+},
+inverted: {
+default: !1,
+type: cc.Boolean,
+tooltip: !1,
+notify: function() {
+cc.game.renderType !== cc.game.RENDER_TYPE_CANVAS || cc.warnID(4202);
+}
+},
+_segments: 64,
+segements: {
+get: function() {
+return this._segments;
+},
+set: function(t) {
+this._segments = s.clampf(t, 3, 1e4);
+this._updateGraphics();
+},
+type: cc.Integer,
+tooltip: !1
+},
+_resizeToTarget: {
+animatable: !1,
+set: function(t) {
+t && this._resizeNodeToTargetNode();
+}
+}
+},
+statics: {
+Type: d
+},
+onLoad: function() {
+this._createGraphics();
+},
+onRestore: function() {
+this._createGraphics();
+this._type !== d.IMAGE_STENCIL ? this._updateGraphics() : this._applySpriteFrame();
+},
+onEnable: function() {
+this._super();
+if (this._type === d.IMAGE_STENCIL) {
+if (!this._spriteFrame || !this._spriteFrame.textureLoaded()) {
+this.markForRender(!1);
+if (this._spriteFrame) {
+this.markForUpdateRenderData(!1);
+this._spriteFrame.once("load", this._onTextureLoaded, this);
+this._spriteFrame.ensureLoadTexture();
+}
+}
+} else this._updateGraphics();
+this.node.on(cc.Node.EventType.POSITION_CHANGED, this._updateGraphics, this);
+this.node.on(cc.Node.EventType.ROTATION_CHANGED, this._updateGraphics, this);
+this.node.on(cc.Node.EventType.SCALE_CHANGED, this._updateGraphics, this);
+this.node.on(cc.Node.EventType.SIZE_CHANGED, this._updateGraphics, this);
+this.node.on(cc.Node.EventType.ANCHOR_CHANGED, this._updateGraphics, this);
+this.node._renderFlag |= c.FLAG_POST_RENDER;
+this._activateMaterial();
+},
+onDisable: function() {
+this._super();
+this.node.off(cc.Node.EventType.POSITION_CHANGED, this._updateGraphics, this);
+this.node.off(cc.Node.EventType.ROTATION_CHANGED, this._updateGraphics, this);
+this.node.off(cc.Node.EventType.SCALE_CHANGED, this._updateGraphics, this);
+this.node.off(cc.Node.EventType.SIZE_CHANGED, this._updateGraphics, this);
+this.node.off(cc.Node.EventType.ANCHOR_CHANGED, this._updateGraphics, this);
+this.node._renderFlag &= ~c.FLAG_POST_RENDER;
+},
+onDestroy: function() {
+this._super();
+this._removeGraphics();
+},
+_resizeNodeToTargetNode: !1,
+_onTextureLoaded: function() {
+if (this._renderData) {
+this._renderData.uvDirty = !0;
+this._renderData.vertDirty = !0;
+this.markForUpdateRenderData(!0);
+}
+this.enabledInHierarchy && this._activateMaterial();
+},
+_applySpriteFrame: function(t) {
+t && t.off && t.off("load", this._onTextureLoaded, this);
+var e = this._spriteFrame;
+if (e) if (e.textureLoaded()) this._onTextureLoaded(null); else {
+e.once("load", this._onTextureLoaded, this);
+e.ensureLoadTexture();
+} else this.disableRender();
+},
+_activateMaterial: function() {
+if (this._type !== d.IMAGE_STENCIL || this.spriteFrame && this.spriteFrame.textureLoaded()) {
+if (cc.game.renderType !== cc.game.RENDER_TYPE_CANVAS) {
+var t = this.sharedMaterials[0];
+(t = t ? o.getInstantiatedMaterial(t, this) : o.getInstantiatedBuiltinMaterial("2d-sprite", this)).define("USE_ALPHA_TEST", !0);
+if (this._type === d.IMAGE_STENCIL) {
+var e = this.spriteFrame.getTexture();
+t.define("_USE_MODEL", !1);
+t.define("USE_TEXTURE", !0);
+t.setProperty("texture", e);
+t.setProperty("alphaThreshold", this.alphaThreshold);
+} else {
+t.define("_USE_MODEL", !0);
+t.define("USE_TEXTURE", !1);
+}
+this._enableMaterial || (this._enableMaterial = o.getInstantiatedBuiltinMaterial("2d-sprite", this));
+if (!this._exitMaterial) {
+this._exitMaterial = o.getInstantiatedBuiltinMaterial("2d-sprite", this);
+for (var i = this._exitMaterial.effect.getDefaultTechnique().passes, r = 0; r < i.length; r++) i[r].setStencilEnabled(n.default.STENCIL_DISABLE);
+}
+this._clearMaterial || (this._clearMaterial = o.getInstantiatedBuiltinMaterial("clear-stencil", this));
+this.setMaterial(0, t);
+}
+this.markForRender(!0);
+} else this.markForRender(!1);
+},
+_createGraphics: function() {
+if (!this._graphics) {
+this._graphics = new l();
+this._graphics.node = this.node;
+this._graphics.lineWidth = 0;
+this._graphics.strokeColor = cc.color(0, 0, 0, 0);
+}
+},
+_updateGraphics: function() {
+var t = this.node, e = this._graphics;
+e.clear(!1);
+var i = t._contentSize.width, n = t._contentSize.height, r = -i * t._anchorPoint.x, s = -n * t._anchorPoint.y;
+if (this._type === d.RECT) e.rect(r, s, i, n); else if (this._type === d.ELLIPSE) {
+for (var o = f(cc.v2(r + i / 2, s + n / 2), {
+x: i / 2,
+y: n / 2
+}, this._segments), a = 0; a < o.length; ++a) {
+var c = o[a];
+0 === a ? e.moveTo(c.x, c.y) : e.lineTo(c.x, c.y);
+}
+e.close();
+}
+cc.game.renderType === cc.game.RENDER_TYPE_CANVAS ? e.stroke() : e.fill();
+},
+_removeGraphics: function() {
+if (this._graphics) {
+this._graphics.destroy();
+this._graphics = null;
+}
+if (this._clearGraphics) {
+this._clearGraphics.destroy();
+this._clearGraphics = null;
+}
+},
+_hitTest: function(t) {
+var e = this.node, i = e.getContentSize(), n = i.width, s = i.height, o = h;
+e._updateWorldMatrix();
+if (!r.mat4.invert(u, e._worldMatrix)) return !1;
+r.vec2.transformMat4(o, t, u);
+o.x += e._anchorPoint.x * n;
+o.y += e._anchorPoint.y * s;
+var a = !1;
+if (this.type === d.RECT || this.type === d.IMAGE_STENCIL) a = o.x >= 0 && o.y >= 0 && o.x <= n && o.y <= s; else if (this.type === d.ELLIPSE) {
+var c = n / 2, l = s / 2, _ = o.x - .5 * n, f = o.y - .5 * s;
+a = _ * _ / (c * c) + f * f / (l * l) < 1;
+}
+this.inverted && (a = !a);
+return a;
+},
+markForUpdateRenderData: function(t) {
+t && this.enabledInHierarchy ? this.node._renderFlag |= c.FLAG_UPDATE_RENDER_DATA : t || (this.node._renderFlag &= ~c.FLAG_UPDATE_RENDER_DATA);
+},
+markForRender: function(t) {
+t && this.enabledInHierarchy ? this.node._renderFlag |= c.FLAG_RENDER | c.FLAG_UPDATE_RENDER_DATA | c.FLAG_POST_RENDER : t || (this.node._renderFlag &= ~(c.FLAG_RENDER | c.FLAG_POST_RENDER));
+},
+disableRender: function() {
+this.node._renderFlag &= ~(c.FLAG_RENDER | c.FLAG_UPDATE_RENDER_DATA | c.FLAG_POST_RENDER);
+}
+});
+cc.Mask = e.exports = m;
+}), {
+"../../renderer/gfx": 349,
+"../CCNode": 52,
+"../assets/material/CCMaterial": 75,
+"../graphics/graphics": 142,
+"../renderer/render-flow": 245,
+"../utils/misc": 297,
+"../vmath": 317,
+"./CCRenderComponent": 106
+} ],
+102: [ (function(t, e, i) {
+"use strict";
+var n = t("../components/CCRenderComponent"), r = t("../assets/material/CCMaterial"), s = t("../utils/texture-util"), o = t("../../core/utils/blend-func"), a = cc.Class({
+name: "cc.MotionStreak",
+extends: n,
+mixins: [ o ],
+editor: !1,
+ctor: function() {
+this._points = [];
+},
+properties: {
+preview: {
+default: !1,
+editorOnly: !0,
+notify: !1,
+animatable: !1
+},
+_fadeTime: 1,
+fadeTime: {
+get: function() {
+return this._fadeTime;
+},
+set: function(t) {
+this._fadeTime = t;
+this.reset();
+},
+animatable: !1,
+tooltip: !1
+},
+_minSeg: 1,
+minSeg: {
+get: function() {
+return this._minSeg;
+},
+set: function(t) {
+this._minSeg = t;
+},
+animatable: !1,
+tooltip: !1
+},
+_stroke: 64,
+stroke: {
+get: function() {
+return this._stroke;
+},
+set: function(t) {
+this._stroke = t;
+},
+animatable: !1,
+tooltip: !1
+},
+_texture: {
+default: null,
+type: cc.Texture2D
+},
+texture: {
+get: function() {
+return this._texture;
+},
+set: function(t) {
+if (this._texture !== t) {
+this._texture = t;
+if (t && t.loaded) this._activateMaterial(); else {
+this.disableRender();
+this._ensureLoadTexture();
+}
+}
+},
+type: cc.Texture2D,
+animatable: !1,
+tooltip: !1
+},
+_color: cc.Color.WHITE,
+color: {
+get: function() {
+return this._color;
+},
+set: function(t) {
+this._color = t;
+},
+type: cc.Color,
+tooltip: !1
+},
+_fastMode: !1,
+fastMode: {
+get: function() {
+return this._fastMode;
+},
+set: function(t) {
+this._fastMode = t;
+},
+animatable: !1,
+tooltip: !1
+}
+},
+onEnable: function() {
+this._super();
+if (this._texture && this._texture.loaded) this._activateMaterial(); else {
+this.disableRender();
+this._ensureLoadTexture();
+}
+this.reset();
+},
+_ensureLoadTexture: function() {
+if (this._texture && !this._texture.loaded) {
+var t = this;
+s.postLoadTexture(this._texture, (function() {
+t._activateMaterial();
+}));
+}
+},
+_activateMaterial: function() {
+if (this._texture && this._texture.loaded) {
+var t = this.sharedMaterials[0];
+(t = t ? r.getInstantiatedMaterial(t, this) : r.getInstantiatedBuiltinMaterial("2d-sprite", this)).setProperty("texture", this._texture);
+this.setMaterial(0, t);
+this.markForRender(!0);
+} else this.disableRender();
+},
+onFocusInEditor: !1,
+onLostFocusInEditor: !1,
+reset: function() {
+this._points.length = 0;
+var t = this._renderData;
+if (t) {
+t.dataLength = 0;
+t.vertexCount = 0;
+t.indiceCount = 0;
+}
+0;
+}
+});
+cc.MotionStreak = e.exports = a;
+}), {
+"../../core/utils/blend-func": 289,
+"../assets/material/CCMaterial": 75,
+"../components/CCRenderComponent": 106,
+"../utils/texture-util": 304
+} ],
+103: [ (function(t, e, i) {
+"use strict";
+var n = cc.Enum({
+Unified: 0,
+Free: 1
+}), r = cc.Enum({
+Horizontal: 0,
+Vertical: 1
+}), s = cc.Enum({
+PAGE_TURNING: 0
+}), o = cc.Class({
+name: "cc.PageView",
+extends: cc.ScrollView,
+editor: !1,
+ctor: function() {
+this._curPageIdx = 0;
+this._lastPageIdx = 0;
+this._pages = [];
+this._initContentPos = cc.v2();
+this._scrollCenterOffsetX = [];
+this._scrollCenterOffsetY = [];
+},
+properties: {
+sizeMode: {
+default: n.Unified,
+type: n,
+tooltip: !1,
+notify: function() {
+this._syncSizeMode();
+}
+},
+direction: {
+default: r.Horizontal,
+type: r,
+tooltip: !1,
+notify: function() {
+this._syncScrollDirection();
+}
+},
+scrollThreshold: {
+default: .5,
+type: cc.Float,
+slide: !0,
+range: [ 0, 1, .01 ],
+tooltip: !1
+},
+autoPageTurningThreshold: {
+default: 100,
+type: cc.Float,
+tooltip: !1
+},
+pageTurningEventTiming: {
+default: .1,
+type: cc.Float,
+range: [ 0, 1, .01 ],
+tooltip: !1
+},
+indicator: {
+default: null,
+type: cc.PageViewIndicator,
+tooltip: !1,
+notify: function() {
+this.indicator && this.indicator.setPageView(this);
+}
+},
+pageTurningSpeed: {
+default: .3,
+type: cc.Float,
+tooltip: !1
+},
+pageEvents: {
+default: [],
+type: cc.Component.EventHandler,
+tooltip: !1
+}
+},
+statics: {
+SizeMode: n,
+Direction: r,
+EventType: s
+},
+__preload: function() {
+this.node.on(cc.Node.EventType.SIZE_CHANGED, this._updateAllPagesSize, this);
+},
+onEnable: function() {
+this._super();
+this.node.on("scroll-ended-with-threshold", this._dispatchPageTurningEvent, this);
+},
+onDisable: function() {
+this._super();
+this.node.off("scroll-ended-with-threshold", this._dispatchPageTurningEvent, this);
+},
+onLoad: function() {
+this._initPages();
+this.indicator && this.indicator.setPageView(this);
+},
+onDestroy: function() {
+this.node.off(cc.Node.EventType.SIZE_CHANGED, this._updateAllPagesSize, this);
+},
+getCurrentPageIndex: function() {
+return this._curPageIdx;
+},
+setCurrentPageIndex: function(t) {
+this.scrollToPage(t, !0);
+},
+getPages: function() {
+return this._pages;
+},
+addPage: function(t) {
+if (t && -1 === this._pages.indexOf(t) && this.content) {
+this.content.addChild(t);
+this._pages.push(t);
+this._updatePageView();
+}
+},
+insertPage: function(t, e) {
+if (!(e < 0) && t && -1 === this._pages.indexOf(t) && this.content) {
+if (e >= this._pages.length) this.addPage(t); else {
+this._pages.splice(e, 0, t);
+this.content.addChild(t);
+this._updatePageView();
+}
+}
+},
+removePage: function(t) {
+if (t && this.content) {
+var e = this._pages.indexOf(t);
+-1 !== e ? this.removePageAtIndex(e) : cc.warnID(4300, t.name);
+}
+},
+removePageAtIndex: function(t) {
+var e = this._pages;
+if (!(t < 0 || t >= e.length)) {
+var i = e[t];
+if (i) {
+this.content.removeChild(i);
+e.splice(t, 1);
+this._updatePageView();
+}
+}
+},
+removeAllPages: function() {
+if (this.content) {
+for (var t = this._pages, e = 0, i = t.length; e < i; e++) this.content.removeChild(t[e]);
+this._pages.length = 0;
+this._updatePageView();
+}
+},
+scrollToPage: function(t, e) {
+if (!(t < 0 || t >= this._pages.length)) {
+e = void 0 !== e ? e : .3;
+this._curPageIdx = t;
+this.scrollToOffset(this._moveOffsetValue(t), e, !0);
+this.indicator && this.indicator._changedState();
+}
+},
+getScrollEndedEventTiming: function() {
+return this.pageTurningEventTiming;
+},
+_syncScrollDirection: function() {
+this.horizontal = this.direction === r.Horizontal;
+this.vertical = this.direction === r.Vertical;
+},
+_syncSizeMode: function() {
+if (this.content) {
+var t = this.content.getComponent(cc.Layout);
+if (t) {
+if (this.sizeMode === n.Free && this._pages.length > 0) {
+var e = this._pages[this._pages.length - 1];
+if (this.direction === r.Horizontal) {
+t.paddingLeft = (this._view.width - this._pages[0].width) / 2;
+t.paddingRight = (this._view.width - e.width) / 2;
+} else if (this.direction === r.Vertical) {
+t.paddingTop = (this._view.height - this._pages[0].height) / 2;
+t.paddingBottom = (this._view.height - e.height) / 2;
+}
+}
+t.updateLayout();
+}
+}
+},
+_updatePageView: function() {
+var t = this.content.getComponent(cc.Layout);
+t && t.enabled && t.updateLayout();
+var e = this._pages.length;
+if (this._curPageIdx >= e) {
+this._curPageIdx = 0 === e ? 0 : e - 1;
+this._lastPageIdx = this._curPageIdx;
+}
+for (var i = this._initContentPos, n = 0; n < e; ++n) {
+var s = this._pages[n];
+s.setSiblingIndex(n);
+this.direction === r.Horizontal ? this._scrollCenterOffsetX[n] = Math.abs(i.x + s.x) : this._scrollCenterOffsetY[n] = Math.abs(i.y + s.y);
+}
+this.indicator && this.indicator._refresh();
+},
+_updateAllPagesSize: function() {
+if (this.sizeMode === n.Unified) for (var t = this._pages, e = this._view.getContentSize(), i = 0, r = t.length; i < r; i++) t[i].setContentSize(e);
+},
+_initPages: function() {
+if (this.content) {
+this._initContentPos = this.content.position;
+for (var t = this.content.children, e = 0; e < t.length; ++e) {
+var i = t[e];
+this._pages.indexOf(i) >= 0 || this._pages.push(i);
+}
+this._syncScrollDirection();
+this._syncSizeMode();
+this._updatePageView();
+}
+},
+_dispatchPageTurningEvent: function() {
+if (this._lastPageIdx !== this._curPageIdx) {
+this._lastPageIdx = this._curPageIdx;
+cc.Component.EventHandler.emitEvents(this.pageEvents, this, s.PAGE_TURNING);
+this.node.emit("page-turning", this);
+}
+},
+_isScrollable: function(t, e, i) {
+if (this.sizeMode === n.Free) {
+var s, o;
+if (this.direction === r.Horizontal) {
+s = this._scrollCenterOffsetX[e];
+o = this._scrollCenterOffsetX[i];
+return Math.abs(t.x) >= Math.abs(s - o) * this.scrollThreshold;
+}
+if (this.direction === r.Vertical) {
+s = this._scrollCenterOffsetY[e];
+o = this._scrollCenterOffsetY[i];
+return Math.abs(t.y) >= Math.abs(s - o) * this.scrollThreshold;
+}
+} else {
+if (this.direction === r.Horizontal) return Math.abs(t.x) >= this._view.width * this.scrollThreshold;
+if (this.direction === r.Vertical) return Math.abs(t.y) >= this._view.height * this.scrollThreshold;
+}
+},
+_isQuicklyScrollable: function(t) {
+if (this.direction === r.Horizontal) {
+if (Math.abs(t.x) > this.autoPageTurningThreshold) return !0;
+} else if (this.direction === r.Vertical && Math.abs(t.y) > this.autoPageTurningThreshold) return !0;
+return !1;
+},
+_moveOffsetValue: function(t) {
+var e = cc.v2(0, 0);
+this.sizeMode === n.Free ? this.direction === r.Horizontal ? e.x = this._scrollCenterOffsetX[t] : this.direction === r.Vertical && (e.y = this._scrollCenterOffsetY[t]) : this.direction === r.Horizontal ? e.x = t * this._view.width : this.direction === r.Vertical && (e.y = t * this._view.height);
+return e;
+},
+_getDragDirection: function(t) {
+return this.direction === r.Horizontal ? 0 === t.x ? 0 : t.x > 0 ? 1 : -1 : this.direction === r.Vertical ? 0 === t.y ? 0 : t.y < 0 ? 1 : -1 : void 0;
+},
+_handleReleaseLogic: function(t) {
+this._autoScrollToPage();
+if (this._scrolling) {
+this._scrolling = !1;
+this._autoScrolling || this._dispatchEvent("scroll-ended");
+}
+},
+_autoScrollToPage: function() {
+var t = this._startBounceBackIfNeeded(), e = this._touchBeganPosition.sub(this._touchEndPosition);
+if (t) {
+var i = this._getDragDirection(e);
+if (0 === i) return;
+this._curPageIdx = i > 0 ? this._pages.length - 1 : 0;
+this.indicator && this.indicator._changedState();
+} else {
+var n = this._curPageIdx, r = n + this._getDragDirection(e), s = this.pageTurningSpeed * Math.abs(n - r);
+if (r < this._pages.length) {
+if (this._isScrollable(e, n, r)) {
+this.scrollToPage(r, s);
+return;
+}
+var o = this._calculateTouchMoveVelocity();
+if (this._isQuicklyScrollable(o)) {
+this.scrollToPage(r, s);
+return;
+}
+}
+this.scrollToPage(n, s);
+}
+},
+_onTouchBegan: function(t, e) {
+this._touchBeganPosition = t.touch.getLocation();
+this._super(t, e);
+},
+_onTouchMoved: function(t, e) {
+this._super(t, e);
+},
+_onTouchEnded: function(t, e) {
+this._touchEndPosition = t.touch.getLocation();
+this._super(t, e);
+},
+_onTouchCancelled: function(t, e) {
+this._touchEndPosition = t.touch.getLocation();
+this._super(t, e);
+},
+_onMouseWheel: function() {}
+});
+cc.PageView = e.exports = o;
+}), {} ],
+104: [ (function(t, e, i) {
+"use strict";
+var n = cc.Enum({
+HORIZONTAL: 0,
+VERTICAL: 1
+}), r = cc.Class({
+name: "cc.PageViewIndicator",
+extends: t("./CCComponent"),
+editor: !1,
+properties: {
+_layout: null,
+_pageView: null,
+_indicators: [],
+spriteFrame: {
+default: null,
+type: cc.SpriteFrame,
+tooltip: !1
+},
+direction: {
+default: n.HORIZONTAL,
+type: n,
+tooltip: !1
+},
+cellSize: {
+default: cc.size(20, 20),
+tooltip: !1
+},
+spacing: {
+default: 0,
+tooltip: !1
+}
+},
+statics: {
+Direction: n
+},
+onLoad: function() {
+this._updateLayout();
+},
+setPageView: function(t) {
+this._pageView = t;
+this._refresh();
+},
+_updateLayout: function() {
+this._layout = this.getComponent(cc.Layout);
+this._layout || (this._layout = this.addComponent(cc.Layout));
+if (this.direction === n.HORIZONTAL) {
+this._layout.type = cc.Layout.Type.HORIZONTAL;
+this._layout.spacingX = this.spacing;
+} else if (this.direction === n.VERTICAL) {
+this._layout.type = cc.Layout.Type.VERTICAL;
+this._layout.spacingY = this.spacing;
+}
+this._layout.resizeMode = cc.Layout.ResizeMode.CONTAINER;
+},
+_createIndicator: function() {
+var t = new cc.Node();
+t.addComponent(cc.Sprite).spriteFrame = this.spriteFrame;
+t.parent = this.node;
+t.width = this.cellSize.width;
+t.height = this.cellSize.height;
+return t;
+},
+_changedState: function() {
+var t = this._indicators;
+if (0 !== t.length) {
+var e = this._pageView._curPageIdx;
+if (!(e >= t.length)) {
+for (var i = 0; i < t.length; ++i) {
+t[i].opacity = 127.5;
+}
+t[e].opacity = 255;
+}
+}
+},
+_refresh: function() {
+if (this._pageView) {
+var t = this._indicators, e = this._pageView.getPages();
+if (e.length !== t.length) {
+var i = 0;
+if (e.length > t.length) for (i = 0; i < e.length; ++i) t[i] || (t[i] = this._createIndicator()); else {
+for (i = t.length - e.length; i > 0; --i) {
+var n = t[i - 1];
+this.node.removeChild(n);
+t.splice(i - 1, 1);
+}
+}
+this._layout && this._layout.enabledInHierarchy && this._layout.updateLayout();
+this._changedState();
+}
+}
+}
+});
+cc.PageViewIndicator = e.exports = r;
+}), {
+"./CCComponent": 95
+} ],
+105: [ (function(t, e, i) {
+"use strict";
+var n = t("../utils/misc"), r = t("./CCComponent"), s = cc.Enum({
+HORIZONTAL: 0,
+VERTICAL: 1,
+FILLED: 2
+}), o = cc.Class({
+name: "cc.ProgressBar",
+extends: r,
+editor: !1,
+_initBarSprite: function() {
+if (this.barSprite) {
+var t = this.barSprite.node;
+if (!t) return;
+var e = this.node.getContentSize(), i = this.node.getAnchorPoint(), n = t.getContentSize();
+t.parent === this.node && this.node.setContentSize(n);
+this.barSprite.fillType === cc.Sprite.FillType.RADIAL && (this.mode = s.FILLED);
+var r = t.getContentSize();
+this.mode === s.HORIZONTAL ? this.totalLength = r.width : this.mode === s.VERTICAL ? this.totalLength = r.height : this.totalLength = this.barSprite.fillRange;
+if (t.parent === this.node) {
+var o = -e.width * i.x;
+t.setPosition(cc.v2(o, 0));
+}
+}
+},
+_updateBarStatus: function() {
+if (this.barSprite) {
+var t = this.barSprite.node;
+if (!t) return;
+var e, i, r, o = t.getAnchorPoint(), a = t.getContentSize(), c = t.getPosition(), l = cc.v2(0, .5), h = n.clamp01(this.progress), u = this.totalLength * h;
+switch (this.mode) {
+case s.HORIZONTAL:
+this.reverse && (l = cc.v2(1, .5));
+e = cc.size(u, a.height);
+i = this.totalLength;
+r = a.height;
+break;
+
+case s.VERTICAL:
+l = this.reverse ? cc.v2(.5, 1) : cc.v2(.5, 0);
+e = cc.size(a.width, u);
+i = a.width;
+r = this.totalLength;
+}
+if (this.mode === s.FILLED) if (this.barSprite.type !== cc.Sprite.Type.FILLED) cc.warn("ProgressBar FILLED mode only works when barSprite's Type is FILLED!"); else {
+this.reverse && (u *= -1);
+this.barSprite.fillRange = u;
+} else if (this.barSprite.type !== cc.Sprite.Type.FILLED) {
+var _ = l.x - o.x, f = l.y - o.y, d = cc.v2(i * _, r * f);
+t.setPosition(c.x + d.x, c.y + d.y);
+t.setAnchorPoint(l);
+t.setContentSize(e);
+} else cc.warn("ProgressBar non-FILLED mode only works when barSprite's Type is non-FILLED!");
+}
+},
+properties: {
+barSprite: {
+default: null,
+type: cc.Sprite,
+tooltip: !1,
+notify: function() {
+this._initBarSprite();
+},
+animatable: !1
+},
+mode: {
+default: s.HORIZONTAL,
+type: s,
+tooltip: !1,
+notify: function() {
+if (this.barSprite) {
+var t = this.barSprite.node;
+if (!t) return;
+var e = t.getContentSize();
+this.mode === s.HORIZONTAL ? this.totalLength = e.width : this.mode === s.VERTICAL ? this.totalLength = e.height : this.mode === s.FILLED && (this.totalLength = this.barSprite.fillRange);
+}
+},
+animatable: !1
+},
+_N$totalLength: 1,
+totalLength: {
+range: [ 0, Number.MAX_VALUE ],
+tooltip: !1,
+get: function() {
+return this._N$totalLength;
+},
+set: function(t) {
+this.mode === s.FILLED && (t = n.clamp01(t));
+this._N$totalLength = t;
+this._updateBarStatus();
+}
+},
+progress: {
+default: 1,
+type: "Float",
+range: [ 0, 1, .1 ],
+slide: !0,
+tooltip: !1,
+notify: function() {
+this._updateBarStatus();
+}
+},
+reverse: {
+default: !1,
+tooltip: !1,
+notify: function() {
+this.barSprite && (this.barSprite.fillStart = 1 - this.barSprite.fillStart);
+this._updateBarStatus();
+},
+animatable: !1
+}
+},
+statics: {
+Mode: s
+}
+});
+cc.ProgressBar = e.exports = o;
+}), {
+"../utils/misc": 297,
+"./CCComponent": 95
+} ],
+106: [ (function(t, e, i) {
+"use strict";
+r(t("../../renderer/gfx"));
+var n = r(t("../../renderer/render-data/render-data"));
+function r(t) {
+return t && t.__esModule ? t : {
+default: t
+};
+}
+var s = t("./CCComponent"), o = t("../renderer/render-flow"), a = (t("../platform/CCMacro").BlendFactor,
+t("../assets/material/CCMaterial")), c = cc.Class({
+name: "RenderComponent",
+extends: s,
+editor: !1,
+properties: {
+_materials: {
+default: [],
+type: a
+},
+sharedMaterials: {
+get: function() {
+return this._materials;
+},
+set: function(t) {
+this._materials = t;
+this._activateMaterial(!0);
+},
+type: [ a ],
+displayName: "Materials",
+animatable: !1
+}
+},
+ctor: function() {
+this._renderData = null;
+this.__allocedDatas = [];
+this._vertexFormat = null;
+this._toPostHandle = !1;
+this._assembler = this.constructor._assembler;
+this._postAssembler = this.constructor._postAssembler;
+},
+onEnable: function() {
+this.node._renderComponent && (this.node._renderComponent.enabled = !1);
+this.node._renderComponent = this;
+this.node._renderFlag |= o.FLAG_RENDER | o.FLAG_UPDATE_RENDER_DATA;
+},
+onDisable: function() {
+this.node._renderComponent = null;
+this.disableRender();
+},
+onDestroy: function() {
+for (var t = 0, e = this.__allocedDatas.length; t < e; t++) n.default.free(this.__allocedDatas[t]);
+this.__allocedDatas.length = 0;
+this._materials.length = 0;
+this._renderData = null;
+var i = this._uniforms;
+for (var r in i) _uniformPool.remove(_uniformPool._data.indexOf(i[r]));
+this._uniforms = null;
+this._defines = null;
+},
+_canRender: function() {
+return this._enabled && this.node._activeInHierarchy;
+},
+markForUpdateRenderData: function(t) {
+t && this._canRender() ? this.node._renderFlag |= o.FLAG_UPDATE_RENDER_DATA : t || (this.node._renderFlag &= ~o.FLAG_UPDATE_RENDER_DATA);
+},
+markForRender: function(t) {
+t && this._canRender() ? this.node._renderFlag |= o.FLAG_RENDER : t || (this.node._renderFlag &= ~o.FLAG_RENDER);
+},
+markForCustomIARender: function(t) {
+t && this._canRender() ? this.node._renderFlag |= o.FLAG_CUSTOM_IA_RENDER : t || (this.node._renderFlag &= ~o.FLAG_CUSTOM_IA_RENDER);
+},
+disableRender: function() {
+this.node._renderFlag &= ~(o.FLAG_RENDER | o.FLAG_CUSTOM_IA_RENDER | o.FLAG_UPDATE_RENDER_DATA);
+},
+requestRenderData: function() {
+var t = n.default.alloc();
+this.__allocedDatas.push(t);
+return t;
+},
+destroyRenderData: function(t) {
+var e = this.__allocedDatas.indexOf(t);
+if (-1 !== e) {
+this.__allocedDatas.splice(e, 1);
+n.default.free(t);
+}
+},
+getMaterial: function(t) {
+if (t < 0 || t >= this._materials.length) return null;
+var e = this._materials[t];
+if (!e) return null;
+var i = a.getInstantiatedMaterial(e, this);
+i !== e && this.setMaterial(t, i);
+return this._materials[t];
+},
+setMaterial: function(t, e) {
+this._materials[t] = e;
+e && this.markForUpdateRenderData(!0);
+},
+_activateMaterial: function(t) {}
+});
+c._assembler = null;
+c._postAssembler = null;
+cc.RenderComponent = e.exports = c;
+}), {
+"../../renderer/gfx": 349,
+"../../renderer/render-data/render-data": 369,
+"../assets/material/CCMaterial": 75,
+"../platform/CCMacro": 206,
+"../renderer/render-flow": 245,
+"./CCComponent": 95
+} ],
+107: [ (function(i, n, r) {
+"use strict";
+var s = i("../platform/js"), o = i("../platform/CCMacro"), a = i("../utils/text-utils"), c = new (i("../utils/html-text-parser"))(), l = o.TextAlignment, h = o.VerticalTextAlignment;
+var u = new s.Pool(function(t) {
+0;
+0;
+return !!cc.isValid(t) && !t.getComponent(cc.LabelOutline);
+}, 20);
+u.get = function(i, n) {
+var r = this._get();
+r || (r = new cc.PrivateNode("RICHTEXT_CHILD"));
+var s = r.getComponent(cc.Label);
+s || (s = r.addComponent(cc.Label));
+r.setPosition(0, 0);
+r.setAnchorPoint(.5, .5);
+r.setContentSize(128, 128);
+r.skewX = 0;
+"string" !== ("object" === (e = typeof i) ? t(i) : e) && (i = "" + i);
+n.font instanceof cc.Font ? s.font = n.font : s.fontFamily = n.fontFamily;
+s.string = i;
+s.horizontalAlign = l.LEFT;
+s.verticalAlign = h.TOP;
+s.fontSize = n.fontSize || 40;
+s.overflow = 0;
+s.enableWrapText = !0;
+s.lineHeight = 40;
+s._enableBold(!1);
+s._enableItalics(!1);
+s._enableUnderline(!1);
+return r;
+};
+var _ = cc.Class({
+name: "cc.RichText",
+extends: cc.Component,
+ctor: function() {
+this._textArray = null;
+this._labelSegments = [];
+this._labelSegmentsCache = [];
+this._linesWidth = [];
+this._updateRichTextStatus = this._updateRichText;
+},
+editor: !1,
+properties: {
+string: {
+default: "RichText",
+multiline: !0,
+tooltip: !1,
+notify: function() {
+this._updateRichTextStatus();
+}
+},
+horizontalAlign: {
+default: l.LEFT,
+type: l,
+tooltip: !1,
+animatable: !1,
+notify: function(t) {
+if (this.horizontalAlign !== t) {
+this._layoutDirty = !0;
+this._updateRichTextStatus();
+}
+}
+},
+fontSize: {
+default: 40,
+tooltip: !1,
+notify: function(t) {
+if (this.fontSize !== t) {
+this._layoutDirty = !0;
+this._updateRichTextStatus();
+}
+}
+},
+_fontFamily: "Arial",
+fontFamily: {
+tooltip: !1,
+get: function() {
+return this._fontFamily;
+},
+set: function(t) {
+if (this._fontFamily !== t) {
+this._fontFamily = t;
+this._layoutDirty = !0;
+this._updateRichTextStatus();
+}
+},
+animatable: !1
+},
+font: {
+default: null,
+type: cc.TTFFont,
+tooltip: !1,
+notify: function(t) {
+if (this.font !== t) {
+this._layoutDirty = !0;
+if (this.font) {
+this.useSystemFont = !1;
+this._onTTFLoaded();
+} else this.useSystemFont = !0;
+this._updateRichTextStatus();
+}
+}
+},
+_isSystemFontUsed: !0,
+useSystemFont: {
+get: function() {
+return this._isSystemFontUsed;
+},
+set: function(t) {
+if ((t || this.font) && this._isSystemFontUsed !== t) {
+this._isSystemFontUsed = t;
+this._layoutDirty = !0;
+this._updateRichTextStatus();
+}
+},
+animatable: !1,
+tooltip: !1
+},
+maxWidth: {
+default: 0,
+tooltip: !1,
+notify: function(t) {
+if (this.maxWidth !== t) {
+this._layoutDirty = !0;
+this._updateRichTextStatus();
+}
+}
+},
+lineHeight: {
+default: 40,
+tooltip: !1,
+notify: function(t) {
+if (this.lineHeight !== t) {
+this._layoutDirty = !0;
+this._updateRichTextStatus();
+}
+}
+},
+imageAtlas: {
+default: null,
+type: cc.SpriteAtlas,
+tooltip: !1,
+notify: function(t) {
+if (this.imageAtlas !== t) {
+this._layoutDirty = !0;
+this._updateRichTextStatus();
+}
+}
+},
+handleTouchEvent: {
+default: !0,
+tooltip: !1,
+notify: function(t) {
+this.handleTouchEvent !== t && this.enabledInHierarchy && (this.handleTouchEvent ? this._addEventListeners() : this._removeEventListeners());
+}
+}
+},
+statics: {
+HorizontalAlign: l,
+VerticalAlign: h
+},
+onEnable: function() {
+this.handleTouchEvent && this._addEventListeners();
+this._updateRichText();
+this._activateChildren(!0);
+},
+onDisable: function() {
+this.handleTouchEvent && this._removeEventListeners();
+this._activateChildren(!1);
+},
+start: function() {
+this._onTTFLoaded();
+},
+_onColorChanged: function(t) {
+this.node.children.forEach((function(e) {
+e.color = t;
+}));
+},
+_addEventListeners: function() {
+this.node.on(cc.Node.EventType.TOUCH_END, this._onTouchEnded, this);
+this.node.on(cc.Node.EventType.COLOR_CHANGED, this._onColorChanged, this);
+},
+_removeEventListeners: function() {
+this.node.off(cc.Node.EventType.TOUCH_END, this._onTouchEnded, this);
+this.node.off(cc.Node.EventType.COLOR_CHANGED, this._onColorChanged, this);
+},
+_updateLabelSegmentTextAttributes: function() {
+this._labelSegments.forEach(function(t) {
+this._applyTextAttribute(t);
+}.bind(this));
+},
+_createFontLabel: function(t) {
+return u.get(t, this);
+},
+_onTTFLoaded: function() {
+if (this.font instanceof cc.TTFFont) if (this.font._nativeAsset) {
+this._layoutDirty = !0;
+this._updateRichText();
+} else {
+var t = this;
+cc.loader.load(this.font.nativeUrl, (function(e, i) {
+t._layoutDirty = !0;
+t._updateRichText();
+}));
+} else {
+this._layoutDirty = !0;
+this._updateRichText();
+}
+},
+_measureText: function(t, e) {
+var i = this, n = function(e) {
+var n = void 0;
+if (0 === i._labelSegmentsCache.length) {
+n = i._createFontLabel(e);
+i._labelSegmentsCache.push(n);
+} else (n = i._labelSegmentsCache[0]).getComponent(cc.Label).string = e;
+n._styleIndex = t;
+i._applyTextAttribute(n);
+return n.getContentSize().width;
+};
+return e ? n(e) : n;
+},
+_onTouchEnded: function(t) {
+for (var e = this, i = this.node.getComponents(cc.Component), n = function(n) {
+var r = e._labelSegments[n], s = r._clickHandler, o = r._clickParam;
+if (s && e._containsTouchLocation(r, t.touch.getLocation())) {
+i.forEach((function(e) {
+e.enabledInHierarchy && e[s] && e[s](t, o);
+}));
+t.stopPropagation();
+}
+}, r = 0; r < this._labelSegments.length; ++r) n(r);
+},
+_containsTouchLocation: function(t, e) {
+return t.getBoundingBoxToWorld().contains(e);
+},
+_resetState: function() {
+for (var t = this.node.children, e = t.length - 1; e >= 0; e--) {
+var i = t[e];
+if ("RICHTEXT_CHILD" === i.name || "RICHTEXT_Image_CHILD" === i.name) {
+i.parent === this.node ? i.parent = null : t.splice(e, 1);
+"RICHTEXT_CHILD" === i.name && u.put(i);
+}
+}
+this._labelSegments.length = 0;
+this._labelSegmentsCache.length = 0;
+this._linesWidth.length = 0;
+this._lineOffsetX = 0;
+this._lineCount = 1;
+this._labelWidth = 0;
+this._labelHeight = 0;
+this._layoutDirty = !0;
+},
+onRestore: !1,
+_activateChildren: function(t) {
+for (var e = this.node.children.length - 1; e >= 0; e--) {
+var i = this.node.children[e];
+"RICHTEXT_CHILD" !== i.name && "RICHTEXT_Image_CHILD" !== i.name || (i.active = t);
+}
+},
+_addLabelSegment: function(t, e) {
+var i = void 0;
+0 === this._labelSegmentsCache.length ? i = this._createFontLabel(t) : (i = this._labelSegmentsCache.pop()).getComponent(cc.Label).string = t;
+i._styleIndex = e;
+i._lineCount = this._lineCount;
+i.active = this.node.active;
+i.setAnchorPoint(0, 0);
+this._applyTextAttribute(i);
+this.node.addChild(i);
+this._labelSegments.push(i);
+return i;
+},
+_updateRichTextWithMaxWidth: function(t, e, i) {
+var n = e;
+if (this._lineOffsetX > 0 && n + this._lineOffsetX > this.maxWidth) for (var r = 0; this._lineOffsetX <= this.maxWidth; ) {
+var s = this._getFirstWordLen(t, r, t.length), o = t.substr(r, s), c = this._measureText(i, o);
+if (!(this._lineOffsetX + c <= this.maxWidth)) {
+if (r > 0) {
+var l = t.substr(0, r);
+this._addLabelSegment(l, i);
+t = t.substr(r, t.length);
+n = this._measureText(i, t);
+}
+this._updateLineInfo();
+break;
+}
+this._lineOffsetX += c;
+r += s;
+}
+if (n > this.maxWidth) for (var h = a.fragmentText(t, n, this.maxWidth, this._measureText(i)), u = 0; u < h.length; ++u) {
+var _ = h[u], f = this._addLabelSegment(_, i).getContentSize();
+this._lineOffsetX += f.width;
+h.length > 1 && u < h.length - 1 && this._updateLineInfo();
+} else {
+this._lineOffsetX += n;
+this._addLabelSegment(t, i);
+}
+},
+_isLastComponentCR: function(t) {
+return t.length - 1 === t.lastIndexOf("\n");
+},
+_updateLineInfo: function() {
+this._linesWidth.push(this._lineOffsetX);
+this._lineOffsetX = 0;
+this._lineCount++;
+},
+_needsUpdateTextLayout: function(t) {
+if (this._layoutDirty || !this._textArray || !t) return !0;
+if (this._textArray.length !== t.length) return !0;
+for (var e = 0; e < this._textArray.length; ++e) {
+var i = this._textArray[e], n = t[e];
+if (i.text !== n.text) return !0;
+if (i.style) {
+if (n.style) {
+if (!!n.style.outline != !!i.style.outline) return !0;
+if (i.style.size !== n.style.size || i.style.italic !== n.style.italic || i.style.isImage !== n.style.isImage) return !0;
+if (i.style.isImage === n.style.isImage && i.style.src !== n.style.src) return !0;
+} else if (i.style.size || i.style.italic || i.style.isImage || i.style.outline) return !0;
+} else if (n.style && (n.style.size || n.style.italic || n.style.isImage || n.style.outline)) return !0;
+}
+return !1;
+},
+_addRichTextImageElement: function(t) {
+var e = t.style.src, i = this.imageAtlas.getSpriteFrame(e);
+if (i) {
+var n = new cc.PrivateNode("RICHTEXT_Image_CHILD"), r = n.addComponent(cc.Sprite);
+n.setAnchorPoint(0, 0);
+r.type = cc.Sprite.Type.SLICED;
+r.sizeMode = cc.Sprite.SizeMode.CUSTOM;
+this.node.addChild(n);
+this._labelSegments.push(n);
+var s = i.getRect(), o = 1, a = s.width, c = s.height, l = t.style.imageWidth, h = t.style.imageHeight;
+if (h > 0 && h < this.lineHeight) {
+a *= o = h / c;
+c *= o;
+} else {
+a *= o = this.lineHeight / c;
+c *= o;
+}
+l > 0 && (a = l);
+if (this.maxWidth > 0) {
+this._lineOffsetX + a > this.maxWidth && this._updateLineInfo();
+this._lineOffsetX += a;
+} else {
+this._lineOffsetX += a;
+this._lineOffsetX > this._labelWidth && (this._labelWidth = this._lineOffsetX);
+}
+r.spriteFrame = i;
+n.setContentSize(a, c);
+n._lineCount = this._lineCount;
+if (t.style.event) {
+t.style.event.click && (n._clickHandler = t.style.event.click);
+t.style.event.param ? n._clickParam = t.style.event.param : n._clickParam = "";
+} else n._clickHandler = null;
+} else cc.warnID(4400);
+},
+_updateRichText: function() {
+if (this.enabled) {
+var t = c.parse(this.string);
+if (this._needsUpdateTextLayout(t)) {
+this._textArray = t;
+this._resetState();
+for (var e = !1, i = void 0, n = 0; n < this._textArray.length; ++n) {
+var r = this._textArray[n], s = r.text;
+if ("" === s) {
+if (r.style && r.style.newline) {
+this._updateLineInfo();
+continue;
+}
+if (r.style && r.style.isImage && this.imageAtlas) {
+this._addRichTextImageElement(r);
+continue;
+}
+}
+for (var o = s.split("\n"), l = 0; l < o.length; ++l) {
+var h = o[l];
+if ("" !== h) {
+e = !1;
+if (this.maxWidth > 0) {
+var u = this._measureText(n, h);
+this._updateRichTextWithMaxWidth(h, u, n);
+o.length > 1 && l < o.length - 1 && this._updateLineInfo();
+} else {
+i = this._addLabelSegment(h, n).getContentSize();
+this._lineOffsetX += i.width;
+this._lineOffsetX > this._labelWidth && (this._labelWidth = this._lineOffsetX);
+o.length > 1 && l < o.length - 1 && this._updateLineInfo();
+}
+} else {
+if (this._isLastComponentCR(s) && l === o.length - 1) continue;
+this._updateLineInfo();
+e = !0;
+}
+}
+}
+e || this._linesWidth.push(this._lineOffsetX);
+this.maxWidth > 0 && (this._labelWidth = this.maxWidth);
+this._labelHeight = (this._lineCount + a.BASELINE_RATIO) * this.lineHeight;
+this.node.setContentSize(this._labelWidth, this._labelHeight);
+this._updateRichTextPosition();
+this._layoutDirty = !1;
+} else {
+this._textArray = t;
+this._updateLabelSegmentTextAttributes();
+}
+}
+},
+_getFirstWordLen: function(t, e, i) {
+var n = t.charAt(e);
+if (a.isUnicodeCJK(n) || a.isUnicodeSpace(n)) return 1;
+for (var r = 1, s = e + 1; s < i; ++s) {
+n = t.charAt(s);
+if (a.isUnicodeSpace(n) || a.isUnicodeCJK(n)) break;
+r++;
+}
+return r;
+},
+_updateRichTextPosition: function() {
+for (var t = 0, e = 1, i = this._lineCount, n = 0; n < this._labelSegments.length; ++n) {
+var r = this._labelSegments[n], s = r._lineCount;
+if (s > e) {
+t = 0;
+e = s;
+}
+var o = 0;
+switch (this.horizontalAlign) {
+case l.LEFT:
+o = -this._labelWidth / 2;
+break;
+
+case l.CENTER:
+o = -this._linesWidth[s - 1] / 2;
+break;
+
+case l.RIGHT:
+o = this._labelWidth / 2 - this._linesWidth[s - 1];
+}
+r.x = t + o;
+var a = r.getContentSize();
+r.y = this.lineHeight * (i - s) - this._labelHeight / 2;
+s === e && (t += a.width);
+}
+},
+_convertLiteralColorValue: function(t) {
+var e = t.toUpperCase();
+return cc.Color[e] ? cc.Color[e] : cc.color().fromHEX(t);
+},
+_applyTextAttribute: function(t) {
+var e = t.getComponent(cc.Label);
+if (e) {
+var i = t._styleIndex;
+this._isSystemFontUsed && (e.fontFamily = this._fontFamily);
+e.useSystemFont = this._isSystemFontUsed;
+e.lineHeight = this.lineHeight;
+e.horizontalAlign = l.LEFT;
+e.verticalAlign = h.CENTER;
+var n = null;
+this._textArray[i] && (n = this._textArray[i].style);
+n && n.color ? t.color = this._convertLiteralColorValue(n.color) : t.color = this.node.color;
+e._enableBold(n && n.bold);
+e._enableItalics(n && n.italic);
+n && n.italic && (t.skewX = 12);
+e._enableUnderline(n && n.underline);
+if (n && n.outline) {
+var r = t.getComponent(cc.LabelOutline);
+r || (r = t.addComponent(cc.LabelOutline));
+r.color = this._convertLiteralColorValue(n.outline.color);
+r.width = n.outline.width;
+}
+n && n.size ? e.fontSize = n.size : e.fontSize = this.fontSize;
+e._updateRenderData(!0);
+if (n && n.event) {
+n.event.click && (t._clickHandler = n.event.click);
+n.event.param ? t._clickParam = n.event.param : t._clickParam = "";
+} else t._clickHandler = null;
+}
+},
+onDestroy: function() {
+for (var t = 0; t < this._labelSegments.length; ++t) {
+this._labelSegments[t].removeFromParent();
+u.put(this._labelSegments[t]);
+}
+}
+});
+cc.RichText = n.exports = _;
+}), {
+"../platform/CCMacro": 206,
+"../platform/js": 221,
+"../utils/html-text-parser": 293,
+"../utils/text-utils": 303
+} ],
+108: [ (function(t, e, i) {
+"use strict";
+var n = t("../utils/misc"), r = (t("./CCComponent"), cc.Enum({
+HORIZONTAL: 0,
+VERTICAL: 1
+})), s = cc.Class({
+name: "cc.Scrollbar",
+extends: t("./CCComponent"),
+editor: !1,
+properties: {
+_scrollView: null,
+_touching: !1,
+_autoHideRemainingTime: {
+default: 0,
+serializable: !1
+},
+_opacity: 255,
+handle: {
+default: null,
+type: cc.Sprite,
+tooltip: !1,
+notify: function() {
+this._onScroll(cc.v2(0, 0));
+},
+animatable: !1
+},
+direction: {
+default: r.HORIZONTAL,
+type: r,
+tooltip: !1,
+notify: function() {
+this._onScroll(cc.v2(0, 0));
+},
+animatable: !1
+},
+enableAutoHide: {
+default: !0,
+animatable: !1,
+tooltip: !1
+},
+autoHideTime: {
+default: 1,
+animatable: !1,
+tooltip: !1
+}
+},
+statics: {
+Direction: r
+},
+setTargetScrollView: function(t) {
+this._scrollView = t;
+},
+_convertToScrollViewSpace: function(t) {
+var e = this._scrollView.node, i = t.convertToWorldSpaceAR(cc.v2(-t.anchorX * t.width, -t.anchorY * t.height)), n = e.convertToNodeSpaceAR(i);
+n.x += e.anchorX * e.width;
+n.y += e.anchorY * e.height;
+return n;
+},
+_setOpacity: function(t) {
+if (this.handle) {
+this.node.opacity = t;
+this.handle.node.opacity = t;
+}
+},
+_onScroll: function(t) {
+if (this._scrollView) {
+var e = this._scrollView.content;
+if (e) {
+var i = e.getContentSize(), n = this._scrollView.node.getContentSize(), s = this.node.getContentSize();
+if (this._conditionalDisableScrollBar(i, n)) return;
+if (this.enableAutoHide) {
+this._autoHideRemainingTime = this.autoHideTime;
+this._setOpacity(this._opacity);
+}
+var o = 0, a = 0, c = 0, l = 0, h = 0;
+if (this.direction === r.HORIZONTAL) {
+o = i.width;
+a = n.width;
+h = s.width;
+c = t.x;
+l = -this._convertToScrollViewSpace(e).x;
+} else if (this.direction === r.VERTICAL) {
+o = i.height;
+a = n.height;
+h = s.height;
+c = t.y;
+l = -this._convertToScrollViewSpace(e).y;
+}
+var u = this._calculateLength(o, a, h, c), _ = this._calculatePosition(o, a, h, l, c, u);
+this._updateLength(u);
+this._updateHanlderPosition(_);
+}
+}
+},
+_updateHanlderPosition: function(t) {
+if (this.handle) {
+var e = this._fixupHandlerPosition();
+this.handle.node.setPosition(t.x + e.x, t.y + e.y);
+}
+},
+_fixupHandlerPosition: function() {
+var t = this.node.getContentSize(), e = this.node.getAnchorPoint(), i = this.handle.node.getContentSize(), n = this.handle.node.parent, s = this.node.convertToWorldSpaceAR(cc.v2(-t.width * e.x, -t.height * e.y)), o = n.convertToNodeSpaceAR(s);
+this.direction === r.HORIZONTAL ? o = cc.v2(o.x, o.y + (t.height - i.height) / 2) : this.direction === r.VERTICAL && (o = cc.v2(o.x + (t.width - i.width) / 2, o.y));
+this.handle.node.setPosition(o);
+return o;
+},
+_onTouchBegan: function() {
+this.enableAutoHide && (this._touching = !0);
+},
+_conditionalDisableScrollBar: function(t, e) {
+return t.width <= e.width && this.direction === r.HORIZONTAL || t.height <= e.height && this.direction === r.VERTICAL;
+},
+_onTouchEnded: function() {
+if (this.enableAutoHide) {
+this._touching = !1;
+if (!(this.autoHideTime <= 0)) {
+if (this._scrollView) {
+var t = this._scrollView.content;
+if (t) {
+var e = t.getContentSize(), i = this._scrollView.node.getContentSize();
+if (this._conditionalDisableScrollBar(e, i)) return;
+}
+}
+this._autoHideRemainingTime = this.autoHideTime;
+}
+}
+},
+_calculateLength: function(t, e, i, n) {
+var r = t;
+n && (r += 20 * (n > 0 ? n : -n));
+return i * (e / r);
+},
+_calculatePosition: function(t, e, i, s, o, a) {
+var c = t - e;
+o && (c += Math.abs(o));
+var l = 0;
+if (c) {
+l = s / c;
+l = n.clamp01(l);
+}
+var h = (i - a) * l;
+return this.direction === r.VERTICAL ? cc.v2(0, h) : cc.v2(h, 0);
+},
+_updateLength: function(t) {
+if (this.handle) {
+var e = this.handle.node, i = e.getContentSize();
+e.setAnchorPoint(cc.v2(0, 0));
+this.direction === r.HORIZONTAL ? e.setContentSize(t, i.height) : e.setContentSize(i.width, t);
+}
+},
+_processAutoHide: function(t) {
+if (this.enableAutoHide && !(this._autoHideRemainingTime <= 0) && !this._touching) {
+this._autoHideRemainingTime -= t;
+if (this._autoHideRemainingTime <= this.autoHideTime) {
+this._autoHideRemainingTime = Math.max(0, this._autoHideRemainingTime);
+var e = this._opacity * (this._autoHideRemainingTime / this.autoHideTime);
+this._setOpacity(e);
+}
+}
+},
+start: function() {
+this.enableAutoHide && this._setOpacity(0);
+},
+hide: function() {
+this._autoHideRemainingTime = 0;
+this._setOpacity(0);
+},
+show: function() {
+this._autoHideRemainingTime = this.autoHideTime;
+this._setOpacity(this._opacity);
+},
+update: function(t) {
+this._processAutoHide(t);
+}
+});
+cc.Scrollbar = e.exports = s;
+}), {
+"../utils/misc": 297,
+"./CCComponent": 95
+} ],
+109: [ (function(t, e, i) {
+"use strict";
+var n = t("../CCNode").EventType, r = function(t) {
+return (t -= 1) * t * t * t * t + 1;
+}, s = function() {
+return new Date().getMilliseconds();
+}, o = cc.Enum({
+SCROLL_TO_TOP: 0,
+SCROLL_TO_BOTTOM: 1,
+SCROLL_TO_LEFT: 2,
+SCROLL_TO_RIGHT: 3,
+SCROLLING: 4,
+BOUNCE_TOP: 5,
+BOUNCE_BOTTOM: 6,
+BOUNCE_LEFT: 7,
+BOUNCE_RIGHT: 8,
+SCROLL_ENDED: 9,
+TOUCH_UP: 10,
+AUTOSCROLL_ENDED_WITH_THRESHOLD: 11,
+SCROLL_BEGAN: 12
+}), a = {
+"scroll-to-top": o.SCROLL_TO_TOP,
+"scroll-to-bottom": o.SCROLL_TO_BOTTOM,
+"scroll-to-left": o.SCROLL_TO_LEFT,
+"scroll-to-right": o.SCROLL_TO_RIGHT,
+scrolling: o.SCROLLING,
+"bounce-bottom": o.BOUNCE_BOTTOM,
+"bounce-left": o.BOUNCE_LEFT,
+"bounce-right": o.BOUNCE_RIGHT,
+"bounce-top": o.BOUNCE_TOP,
+"scroll-ended": o.SCROLL_ENDED,
+"touch-up": o.TOUCH_UP,
+"scroll-ended-with-threshold": o.AUTOSCROLL_ENDED_WITH_THRESHOLD,
+"scroll-began": o.SCROLL_BEGAN
+}, c = cc.Class({
+name: "cc.ScrollView",
+extends: t("./CCViewGroup"),
+editor: !1,
+ctor: function() {
+this._topBoundary = 0;
+this._bottomBoundary = 0;
+this._leftBoundary = 0;
+this._rightBoundary = 0;
+this._touchMoveDisplacements = [];
+this._touchMoveTimeDeltas = [];
+this._touchMovePreviousTimestamp = 0;
+this._touchMoved = !1;
+this._autoScrolling = !1;
+this._autoScrollAttenuate = !1;
+this._autoScrollStartPosition = cc.v2(0, 0);
+this._autoScrollTargetDelta = cc.v2(0, 0);
+this._autoScrollTotalTime = 0;
+this._autoScrollAccumulatedTime = 0;
+this._autoScrollCurrentlyOutOfBoundary = !1;
+this._autoScrollBraking = !1;
+this._autoScrollBrakingStartPosition = cc.v2(0, 0);
+this._outOfBoundaryAmount = cc.v2(0, 0);
+this._outOfBoundaryAmountDirty = !0;
+this._stopMouseWheel = !1;
+this._mouseWheelEventElapsedTime = 0;
+this._isScrollEndedWithThresholdEventFired = !1;
+this._scrollEventEmitMask = 0;
+this._isBouncing = !1;
+this._scrolling = !1;
+},
+properties: {
+content: {
+default: void 0,
+type: cc.Node,
+tooltip: !1,
+formerlySerializedAs: "content",
+notify: function(t) {
+this._calculateBoundary();
+}
+},
+horizontal: {
+default: !0,
+animatable: !1,
+tooltip: !1
+},
+vertical: {
+default: !0,
+animatable: !1,
+tooltip: !1
+},
+inertia: {
+default: !0,
+tooltip: !1
+},
+brake: {
+default: .5,
+type: "Float",
+range: [ 0, 1, .1 ],
+tooltip: !1
+},
+elastic: {
+default: !0,
+animatable: !1,
+tooltip: !1
+},
+bounceDuration: {
+default: 1,
+range: [ 0, 10 ],
+tooltip: !1
+},
+horizontalScrollBar: {
+default: void 0,
+type: cc.Scrollbar,
+tooltip: !1,
+notify: function() {
+if (this.horizontalScrollBar) {
+this.horizontalScrollBar.setTargetScrollView(this);
+this._updateScrollBar(0);
+}
+},
+animatable: !1
+},
+verticalScrollBar: {
+default: void 0,
+type: cc.Scrollbar,
+tooltip: !1,
+notify: function() {
+if (this.verticalScrollBar) {
+this.verticalScrollBar.setTargetScrollView(this);
+this._updateScrollBar(0);
+}
+},
+animatable: !1
+},
+scrollEvents: {
+default: [],
+type: cc.Component.EventHandler,
+tooltip: !1
+},
+cancelInnerEvents: {
+default: !0,
+animatable: !1,
+tooltip: !1
+},
+_view: {
+get: function() {
+if (this.content) return this.content.parent;
+}
+}
+},
+statics: {
+EventType: o
+},
+scrollToBottom: function(t, e) {
+var i = this._calculateMovePercentDelta({
+anchor: cc.v2(0, 0),
+applyToHorizontal: !1,
+applyToVertical: !0
+});
+t ? this._startAutoScroll(i, t, !1 !== e) : this._moveContent(i, !0);
+},
+scrollToTop: function(t, e) {
+var i = this._calculateMovePercentDelta({
+anchor: cc.v2(0, 1),
+applyToHorizontal: !1,
+applyToVertical: !0
+});
+t ? this._startAutoScroll(i, t, !1 !== e) : this._moveContent(i);
+},
+scrollToLeft: function(t, e) {
+var i = this._calculateMovePercentDelta({
+anchor: cc.v2(0, 0),
+applyToHorizontal: !0,
+applyToVertical: !1
+});
+t ? this._startAutoScroll(i, t, !1 !== e) : this._moveContent(i);
+},
+scrollToRight: function(t, e) {
+var i = this._calculateMovePercentDelta({
+anchor: cc.v2(1, 0),
+applyToHorizontal: !0,
+applyToVertical: !1
+});
+t ? this._startAutoScroll(i, t, !1 !== e) : this._moveContent(i);
+},
+scrollToTopLeft: function(t, e) {
+var i = this._calculateMovePercentDelta({
+anchor: cc.v2(0, 1),
+applyToHorizontal: !0,
+applyToVertical: !0
+});
+t ? this._startAutoScroll(i, t, !1 !== e) : this._moveContent(i);
+},
+scrollToTopRight: function(t, e) {
+var i = this._calculateMovePercentDelta({
+anchor: cc.v2(1, 1),
+applyToHorizontal: !0,
+applyToVertical: !0
+});
+t ? this._startAutoScroll(i, t, !1 !== e) : this._moveContent(i);
+},
+scrollToBottomLeft: function(t, e) {
+var i = this._calculateMovePercentDelta({
+anchor: cc.v2(0, 0),
+applyToHorizontal: !0,
+applyToVertical: !0
+});
+t ? this._startAutoScroll(i, t, !1 !== e) : this._moveContent(i);
+},
+scrollToBottomRight: function(t, e) {
+var i = this._calculateMovePercentDelta({
+anchor: cc.v2(1, 0),
+applyToHorizontal: !0,
+applyToVertical: !0
+});
+t ? this._startAutoScroll(i, t, !1 !== e) : this._moveContent(i);
+},
+scrollToOffset: function(t, e, i) {
+var n = this.getMaxScrollOffset(), r = cc.v2(0, 0);
+0 === n.x ? r.x = 0 : r.x = t.x / n.x;
+0 === n.y ? r.y = 1 : r.y = (n.y - t.y) / n.y;
+this.scrollTo(r, e, i);
+},
+getScrollOffset: function() {
+var t = this._getContentTopBoundary() - this._topBoundary, e = this._getContentLeftBoundary() - this._leftBoundary;
+return cc.v2(e, t);
+},
+getMaxScrollOffset: function() {
+var t = this._view.getContentSize(), e = this.content.getContentSize(), i = e.width - t.width, n = e.height - t.height;
+i = i >= 0 ? i : 0;
+n = n >= 0 ? n : 0;
+return cc.v2(i, n);
+},
+scrollToPercentHorizontal: function(t, e, i) {
+var n = this._calculateMovePercentDelta({
+anchor: cc.v2(t, 0),
+applyToHorizontal: !0,
+applyToVertical: !1
+});
+e ? this._startAutoScroll(n, e, !1 !== i) : this._moveContent(n);
+},
+scrollTo: function(t, e, i) {
+var n = this._calculateMovePercentDelta({
+anchor: cc.v2(t),
+applyToHorizontal: !0,
+applyToVertical: !0
+});
+e ? this._startAutoScroll(n, e, !1 !== i) : this._moveContent(n);
+},
+scrollToPercentVertical: function(t, e, i) {
+var n = this._calculateMovePercentDelta({
+anchor: cc.v2(0, t),
+applyToHorizontal: !1,
+applyToVertical: !0
+});
+e ? this._startAutoScroll(n, e, !1 !== i) : this._moveContent(n);
+},
+stopAutoScroll: function() {
+this._autoScrolling = !1;
+this._autoScrollAccumulatedTime = this._autoScrollTotalTime;
+},
+setContentPosition: function(t) {
+if (!t.fuzzyEquals(this.getContentPosition(), 1e-4)) {
+this.content.setPosition(t);
+this._outOfBoundaryAmountDirty = !0;
+}
+},
+getContentPosition: function() {
+return this.content.getPosition();
+},
+isScrolling: function() {
+return this._scrolling;
+},
+isAutoScrolling: function() {
+return this._autoScrolling;
+},
+_registerEvent: function() {
+this.node.on(cc.Node.EventType.TOUCH_START, this._onTouchBegan, this, !0);
+this.node.on(cc.Node.EventType.TOUCH_MOVE, this._onTouchMoved, this, !0);
+this.node.on(cc.Node.EventType.TOUCH_END, this._onTouchEnded, this, !0);
+this.node.on(cc.Node.EventType.TOUCH_CANCEL, this._onTouchCancelled, this, !0);
+this.node.on(cc.Node.EventType.MOUSE_WHEEL, this._onMouseWheel, this, !0);
+},
+_unregisterEvent: function() {
+this.node.off(cc.Node.EventType.TOUCH_START, this._onTouchBegan, this, !0);
+this.node.off(cc.Node.EventType.TOUCH_MOVE, this._onTouchMoved, this, !0);
+this.node.off(cc.Node.EventType.TOUCH_END, this._onTouchEnded, this, !0);
+this.node.off(cc.Node.EventType.TOUCH_CANCEL, this._onTouchCancelled, this, !0);
+this.node.off(cc.Node.EventType.MOUSE_WHEEL, this._onMouseWheel, this, !0);
+},
+_onMouseWheel: function(t, e) {
+if (this.enabledInHierarchy && !this._hasNestedViewGroup(t, e)) {
+var i = cc.v2(0, 0), n = -.1;
+n = -7;
+this.vertical ? i = cc.v2(0, t.getScrollY() * n) : this.horizontal && (i = cc.v2(t.getScrollY() * n, 0));
+this._mouseWheelEventElapsedTime = 0;
+this._processDeltaMove(i);
+if (!this._stopMouseWheel) {
+this._handlePressLogic();
+this.schedule(this._checkMouseWheel, 1 / 60);
+this._stopMouseWheel = !0;
+}
+this._stopPropagationIfTargetIsMe(t);
+}
+},
+_checkMouseWheel: function(t) {
+if (this._getHowMuchOutOfBoundary().fuzzyEquals(cc.v2(0, 0), 1e-4)) {
+this._mouseWheelEventElapsedTime += t;
+if (this._mouseWheelEventElapsedTime > .1) {
+this._onScrollBarTouchEnded();
+this.unschedule(this._checkMouseWheel);
+this._stopMouseWheel = !1;
+}
+} else {
+this._processInertiaScroll();
+this.unschedule(this._checkMouseWheel);
+this._stopMouseWheel = !1;
+}
+},
+_calculateMovePercentDelta: function(t) {
+var e = t.anchor, i = t.applyToHorizontal, n = t.applyToVertical;
+this._calculateBoundary();
+e = e.clampf(cc.v2(0, 0), cc.v2(1, 1));
+var r = this._view.getContentSize(), s = this.content.getContentSize(), o = this._getContentBottomBoundary() - this._bottomBoundary;
+o = -o;
+var a = this._getContentLeftBoundary() - this._leftBoundary;
+a = -a;
+var c = cc.v2(0, 0), l = 0;
+if (i) {
+l = s.width - r.width;
+c.x = a - l * e.x;
+}
+if (n) {
+l = s.height - r.height;
+c.y = o - l * e.y;
+}
+return c;
+},
+_moveContentToTopLeft: function(t) {
+var e = this.content.getContentSize(), i = this._getContentBottomBoundary() - this._bottomBoundary;
+i = -i;
+var n = cc.v2(0, 0), r = 0, s = this._getContentLeftBoundary() - this._leftBoundary;
+s = -s;
+if (e.height < t.height) {
+r = e.height - t.height;
+n.y = i - r;
+}
+if (e.width < t.width) {
+r = e.width - t.width;
+n.x = s;
+}
+this._updateScrollBarState();
+this._moveContent(n);
+this._adjustContentOutOfBoundary();
+},
+_calculateBoundary: function() {
+if (this.content) {
+var t = this.content.getComponent(cc.Layout);
+t && t.enabledInHierarchy && t.updateLayout();
+var e = this._view.getContentSize(), i = e.width * this._view.anchorX, n = e.height * this._view.anchorY;
+this._leftBoundary = -i;
+this._bottomBoundary = -n;
+this._rightBoundary = this._leftBoundary + e.width;
+this._topBoundary = this._bottomBoundary + e.height;
+this._moveContentToTopLeft(e);
+}
+},
+_hasNestedViewGroup: function(t, e) {
+if (t.eventPhase === cc.Event.CAPTURING_PHASE) {
+if (e) for (var i = 0; i < e.length; ++i) {
+var n = e[i];
+if (this.node === n) return !!t.target.getComponent(cc.ViewGroup);
+if (n.getComponent(cc.ViewGroup)) return !0;
+}
+return !1;
+}
+},
+_stopPropagationIfTargetIsMe: function(t) {
+t.eventPhase === cc.Event.AT_TARGET && t.target === this.node && t.stopPropagation();
+},
+_onTouchBegan: function(t, e) {
+if (this.enabledInHierarchy && !this._hasNestedViewGroup(t, e)) {
+var i = t.touch;
+this.content && this._handlePressLogic(i);
+this._touchMoved = !1;
+this._stopPropagationIfTargetIsMe(t);
+}
+},
+_onTouchMoved: function(t, e) {
+if (this.enabledInHierarchy && !this._hasNestedViewGroup(t, e)) {
+var i = t.touch;
+this.content && this._handleMoveLogic(i);
+if (this.cancelInnerEvents) {
+if (i.getLocation().sub(i.getStartLocation()).mag() > 7 && !this._touchMoved && t.target !== this.node) {
+var n = new cc.Event.EventTouch(t.getTouches(), t.bubbles);
+n.type = cc.Node.EventType.TOUCH_CANCEL;
+n.touch = t.touch;
+n.simulate = !0;
+t.target.dispatchEvent(n);
+this._touchMoved = !0;
+}
+this._stopPropagationIfTargetIsMe(t);
+}
+}
+},
+_onTouchEnded: function(t, e) {
+if (this.enabledInHierarchy && !this._hasNestedViewGroup(t, e)) {
+this._dispatchEvent("touch-up");
+var i = t.touch;
+this.content && this._handleReleaseLogic(i);
+this._touchMoved ? t.stopPropagation() : this._stopPropagationIfTargetIsMe(t);
+}
+},
+_onTouchCancelled: function(t, e) {
+if (this.enabledInHierarchy && !this._hasNestedViewGroup(t, e)) {
+if (!t.simulate) {
+var i = t.touch;
+this.content && this._handleReleaseLogic(i);
+}
+this._stopPropagationIfTargetIsMe(t);
+}
+},
+_processDeltaMove: function(t) {
+this._scrollChildren(t);
+this._gatherTouchMove(t);
+},
+_handleMoveLogic: function(t) {
+var e = t.getDelta();
+this._processDeltaMove(e);
+},
+_scrollChildren: function(t) {
+var e = t = this._clampDelta(t), i = void 0;
+if (this.elastic) {
+i = this._getHowMuchOutOfBoundary();
+e.x *= 0 === i.x ? 1 : .5;
+e.y *= 0 === i.y ? 1 : .5;
+}
+if (!this.elastic) {
+i = this._getHowMuchOutOfBoundary(e);
+e = e.add(i);
+}
+var n = -1;
+if (e.y > 0) {
+this.content.y - this.content.anchorY * this.content.height + e.y > this._bottomBoundary && (n = "scroll-to-bottom");
+} else if (e.y < 0) {
+this.content.y - this.content.anchorY * this.content.height + this.content.height + e.y <= this._topBoundary && (n = "scroll-to-top");
+}
+if (e.x < 0) {
+this.content.x - this.content.anchorX * this.content.width + this.content.width + e.x <= this._rightBoundary && (n = "scroll-to-right");
+} else if (e.x > 0) {
+this.content.x - this.content.anchorX * this.content.width + e.x >= this._leftBoundary && (n = "scroll-to-left");
+}
+this._moveContent(e, !1);
+if (0 !== e.x || 0 !== e.y) {
+if (!this._scrolling) {
+this._scrolling = !0;
+this._dispatchEvent("scroll-began");
+}
+this._dispatchEvent("scrolling");
+}
+-1 !== n && this._dispatchEvent(n);
+},
+_handlePressLogic: function() {
+this._autoScrolling && this._dispatchEvent("scroll-ended");
+this._autoScrolling = !1;
+this._isBouncing = !1;
+this._touchMovePreviousTimestamp = s();
+this._touchMoveDisplacements.length = 0;
+this._touchMoveTimeDeltas.length = 0;
+this._onScrollBarTouchBegan();
+},
+_clampDelta: function(t) {
+var e = this.content.getContentSize(), i = this._view.getContentSize();
+e.width < i.width && (t.x = 0);
+e.height < i.height && (t.y = 0);
+return t;
+},
+_gatherTouchMove: function(t) {
+t = this._clampDelta(t);
+for (;this._touchMoveDisplacements.length >= 5; ) {
+this._touchMoveDisplacements.shift();
+this._touchMoveTimeDeltas.shift();
+}
+this._touchMoveDisplacements.push(t);
+var e = s();
+this._touchMoveTimeDeltas.push((e - this._touchMovePreviousTimestamp) / 1e3);
+this._touchMovePreviousTimestamp = e;
+},
+_startBounceBackIfNeeded: function() {
+if (!this.elastic) return !1;
+var t = this._getHowMuchOutOfBoundary();
+if ((t = this._clampDelta(t)).fuzzyEquals(cc.v2(0, 0), 1e-4)) return !1;
+var e = Math.max(this.bounceDuration, 0);
+this._startAutoScroll(t, e, !0);
+if (!this._isBouncing) {
+t.y > 0 && this._dispatchEvent("bounce-top");
+t.y < 0 && this._dispatchEvent("bounce-bottom");
+t.x > 0 && this._dispatchEvent("bounce-right");
+t.x < 0 && this._dispatchEvent("bounce-left");
+this._isBouncing = !0;
+}
+return !0;
+},
+_processInertiaScroll: function() {
+if (!this._startBounceBackIfNeeded() && this.inertia) {
+var t = this._calculateTouchMoveVelocity();
+!t.fuzzyEquals(cc.v2(0, 0), 1e-4) && this.brake < 1 && this._startInertiaScroll(t);
+}
+this._onScrollBarTouchEnded();
+},
+_handleReleaseLogic: function(t) {
+var e = t.getDelta();
+this._gatherTouchMove(e);
+this._processInertiaScroll();
+if (this._scrolling) {
+this._scrolling = !1;
+this._autoScrolling || this._dispatchEvent("scroll-ended");
+}
+},
+_isOutOfBoundary: function() {
+return !this._getHowMuchOutOfBoundary().fuzzyEquals(cc.v2(0, 0), 1e-4);
+},
+_isNecessaryAutoScrollBrake: function() {
+if (this._autoScrollBraking) return !0;
+if (this._isOutOfBoundary()) {
+if (!this._autoScrollCurrentlyOutOfBoundary) {
+this._autoScrollCurrentlyOutOfBoundary = !0;
+this._autoScrollBraking = !0;
+this._autoScrollBrakingStartPosition = this.getContentPosition();
+return !0;
+}
+} else this._autoScrollCurrentlyOutOfBoundary = !1;
+return !1;
+},
+getScrollEndedEventTiming: function() {
+return 1e-4;
+},
+_processAutoScrolling: function(t) {
+var e = this._isNecessaryAutoScrollBrake(), i = e ? .05 : 1;
+this._autoScrollAccumulatedTime += t * (1 / i);
+var n = Math.min(1, this._autoScrollAccumulatedTime / this._autoScrollTotalTime);
+this._autoScrollAttenuate && (n = r(n));
+var s = this._autoScrollStartPosition.add(this._autoScrollTargetDelta.mul(n)), o = Math.abs(n - 1) <= 1e-4;
+if (Math.abs(n - 1) <= this.getScrollEndedEventTiming() && !this._isScrollEndedWithThresholdEventFired) {
+this._dispatchEvent("scroll-ended-with-threshold");
+this._isScrollEndedWithThresholdEventFired = !0;
+}
+if (this.elastic && !o) {
+var a = s.sub(this._autoScrollBrakingStartPosition);
+e && (a = a.mul(i));
+s = this._autoScrollBrakingStartPosition.add(a);
+} else {
+var c = s.sub(this.getContentPosition()), l = this._getHowMuchOutOfBoundary(c);
+if (!l.fuzzyEquals(cc.v2(0, 0), 1e-4)) {
+s = s.add(l);
+o = !0;
+}
+}
+o && (this._autoScrolling = !1);
+var h = s.sub(this.getContentPosition());
+this._moveContent(this._clampDelta(h), o);
+this._dispatchEvent("scrolling");
+if (!this._autoScrolling) {
+this._isBouncing = !1;
+this._scrolling = !1;
+this._dispatchEvent("scroll-ended");
+}
+},
+_startInertiaScroll: function(t) {
+var e = t.mul(.7);
+this._startAttenuatingAutoScroll(e, t);
+},
+_calculateAttenuatedFactor: function(t) {
+return this.brake <= 0 ? 1 - this.brake : (1 - this.brake) * (1 / (1 + 14e-6 * t + t * t * 8e-9));
+},
+_startAttenuatingAutoScroll: function(t, e) {
+var i = this._calculateAutoScrollTimeByInitalSpeed(e.mag()), n = t.normalize(), r = this.content.getContentSize(), s = this._view.getContentSize(), o = r.width - s.width, a = r.height - s.height, c = this._calculateAttenuatedFactor(o), l = this._calculateAttenuatedFactor(a);
+n = cc.v2(n.x * o * (1 - this.brake) * c, n.y * a * l * (1 - this.brake));
+var h = t.mag(), u = n.mag() / h;
+n = n.add(t);
+if (this.brake > 0 && u > 7) {
+u = Math.sqrt(u);
+n = t.mul(u).add(t);
+}
+this.brake > 0 && u > 3 && (i *= u = 3);
+0 === this.brake && u > 1 && (i *= u);
+this._startAutoScroll(n, i, !0);
+},
+_calculateAutoScrollTimeByInitalSpeed: function(t) {
+return Math.sqrt(Math.sqrt(t / 5));
+},
+_startAutoScroll: function(t, e, i) {
+var n = this._flattenVectorByDirection(t);
+this._autoScrolling = !0;
+this._autoScrollTargetDelta = n;
+this._autoScrollAttenuate = i;
+this._autoScrollStartPosition = this.getContentPosition();
+this._autoScrollTotalTime = e;
+this._autoScrollAccumulatedTime = 0;
+this._autoScrollBraking = !1;
+this._isScrollEndedWithThresholdEventFired = !1;
+this._autoScrollBrakingStartPosition = cc.v2(0, 0);
+this._getHowMuchOutOfBoundary().fuzzyEquals(cc.v2(0, 0), 1e-4) || (this._autoScrollCurrentlyOutOfBoundary = !0);
+},
+_calculateTouchMoveVelocity: function() {
+var t = 0;
+if ((t = this._touchMoveTimeDeltas.reduce((function(t, e) {
+return t + e;
+}), t)) <= 0 || t >= .5) return cc.v2(0, 0);
+var e = cc.v2(0, 0);
+e = this._touchMoveDisplacements.reduce((function(t, e) {
+return t.add(e);
+}), e);
+return cc.v2(e.x * (1 - this.brake) / t, e.y * (1 - this.brake) / t);
+},
+_flattenVectorByDirection: function(t) {
+var e = t;
+e.x = this.horizontal ? e.x : 0;
+e.y = this.vertical ? e.y : 0;
+return e;
+},
+_moveContent: function(t, e) {
+var i = this._flattenVectorByDirection(t), n = this.getContentPosition().add(i);
+this.setContentPosition(n);
+var r = this._getHowMuchOutOfBoundary();
+this._updateScrollBar(r);
+this.elastic && e && this._startBounceBackIfNeeded();
+},
+_getContentLeftBoundary: function() {
+return this.getContentPosition().x - this.content.getAnchorPoint().x * this.content.getContentSize().width;
+},
+_getContentRightBoundary: function() {
+var t = this.content.getContentSize();
+return this._getContentLeftBoundary() + t.width;
+},
+_getContentTopBoundary: function() {
+var t = this.content.getContentSize();
+return this._getContentBottomBoundary() + t.height;
+},
+_getContentBottomBoundary: function() {
+return this.getContentPosition().y - this.content.getAnchorPoint().y * this.content.getContentSize().height;
+},
+_getHowMuchOutOfBoundary: function(t) {
+if ((t = t || cc.v2(0, 0)).fuzzyEquals(cc.v2(0, 0), 1e-4) && !this._outOfBoundaryAmountDirty) return this._outOfBoundaryAmount;
+var e = cc.v2(0, 0);
+this._getContentLeftBoundary() + t.x > this._leftBoundary ? e.x = this._leftBoundary - (this._getContentLeftBoundary() + t.x) : this._getContentRightBoundary() + t.x < this._rightBoundary && (e.x = this._rightBoundary - (this._getContentRightBoundary() + t.x));
+this._getContentTopBoundary() + t.y < this._topBoundary ? e.y = this._topBoundary - (this._getContentTopBoundary() + t.y) : this._getContentBottomBoundary() + t.y > this._bottomBoundary && (e.y = this._bottomBoundary - (this._getContentBottomBoundary() + t.y));
+if (t.fuzzyEquals(cc.v2(0, 0), 1e-4)) {
+this._outOfBoundaryAmount = e;
+this._outOfBoundaryAmountDirty = !1;
+}
+return e = this._clampDelta(e);
+},
+_updateScrollBarState: function() {
+if (this.content) {
+var t = this.content.getContentSize(), e = this._view.getContentSize();
+this.verticalScrollBar && (t.height < e.height ? this.verticalScrollBar.hide() : this.verticalScrollBar.show());
+this.horizontalScrollBar && (t.width < e.width ? this.horizontalScrollBar.hide() : this.horizontalScrollBar.show());
+}
+},
+_updateScrollBar: function(t) {
+this.horizontalScrollBar && this.horizontalScrollBar._onScroll(t);
+this.verticalScrollBar && this.verticalScrollBar._onScroll(t);
+},
+_onScrollBarTouchBegan: function() {
+this.horizontalScrollBar && this.horizontalScrollBar._onTouchBegan();
+this.verticalScrollBar && this.verticalScrollBar._onTouchBegan();
+},
+_onScrollBarTouchEnded: function() {
+this.horizontalScrollBar && this.horizontalScrollBar._onTouchEnded();
+this.verticalScrollBar && this.verticalScrollBar._onTouchEnded();
+},
+_dispatchEvent: function(t) {
+if ("scroll-ended" === t) this._scrollEventEmitMask = 0; else if ("scroll-to-top" === t || "scroll-to-bottom" === t || "scroll-to-left" === t || "scroll-to-right" === t) {
+var e = 1 << a[t];
+if (this._scrollEventEmitMask & e) return;
+this._scrollEventEmitMask |= e;
+}
+cc.Component.EventHandler.emitEvents(this.scrollEvents, this, a[t]);
+this.node.emit(t, this);
+},
+_adjustContentOutOfBoundary: function() {
+this._outOfBoundaryAmountDirty = !0;
+if (this._isOutOfBoundary()) {
+var t = this._getHowMuchOutOfBoundary(cc.v2(0, 0)), e = this.getContentPosition().add(t);
+if (this.content) {
+this.content.setPosition(e);
+this._updateScrollBar(0);
+}
+}
+},
+start: function() {
+this._calculateBoundary();
+this.content && cc.director.once(cc.Director.EVENT_BEFORE_DRAW, this._adjustContentOutOfBoundary, this);
+},
+_hideScrollbar: function() {
+this.horizontalScrollBar && this.horizontalScrollBar.hide();
+this.verticalScrollBar && this.verticalScrollBar.hide();
+},
+onDisable: function() {
+this._unregisterEvent();
+if (this.content) {
+this.content.off(n.SIZE_CHANGED, this._calculateBoundary, this);
+this.content.off(n.SCALE_CHANGED, this._calculateBoundary, this);
+if (this._view) {
+this._view.off(n.POSITION_CHANGED, this._calculateBoundary, this);
+this._view.off(n.SCALE_CHANGED, this._calculateBoundary, this);
+this._view.off(n.SIZE_CHANGED, this._calculateBoundary, this);
+}
+}
+this._hideScrollbar();
+this.stopAutoScroll();
+},
+onEnable: function() {
+this._registerEvent();
+if (this.content) {
+this.content.on(n.SIZE_CHANGED, this._calculateBoundary, this);
+this.content.on(n.SCALE_CHANGED, this._calculateBoundary, this);
+if (this._view) {
+this._view.on(n.POSITION_CHANGED, this._calculateBoundary, this);
+this._view.on(n.SCALE_CHANGED, this._calculateBoundary, this);
+this._view.on(n.SIZE_CHANGED, this._calculateBoundary, this);
+}
+}
+this._updateScrollBarState();
+},
+update: function(t) {
+this._autoScrolling && this._processAutoScrolling(t);
+}
+});
+cc.ScrollView = e.exports = c;
+}), {
+"../CCNode": 52,
+"./CCViewGroup": 116
+} ],
+110: [ (function(t, e, i) {
+"use strict";
+var n = t("../utils/misc"), r = t("./CCComponent"), s = cc.Enum({
+Horizontal: 0,
+Vertical: 1
+}), o = cc.Class({
+name: "cc.Slider",
+extends: r,
+editor: !1,
+ctor: function() {
+this._offset = cc.v2();
+this._touchHandle = !1;
+this._dragging = !1;
+},
+properties: {
+handle: {
+default: null,
+type: cc.Button,
+tooltip: !1,
+notify: function() {
+0;
+}
+},
+direction: {
+default: s.Horizontal,
+type: s,
+tooltip: !1
+},
+progress: {
+default: .5,
+type: cc.Float,
+range: [ 0, 1, .1 ],
+slide: !0,
+tooltip: !1,
+notify: function() {
+this._updateHandlePosition();
+}
+},
+slideEvents: {
+default: [],
+type: cc.Component.EventHandler,
+tooltip: !1
+}
+},
+statics: {
+Direction: s
+},
+__preload: function() {
+this._updateHandlePosition();
+},
+onEnable: function() {
+this.node.on(cc.Node.EventType.TOUCH_START, this._onTouchBegan, this);
+this.node.on(cc.Node.EventType.TOUCH_MOVE, this._onTouchMoved, this);
+this.node.on(cc.Node.EventType.TOUCH_END, this._onTouchEnded, this);
+this.node.on(cc.Node.EventType.TOUCH_CANCEL, this._onTouchCancelled, this);
+if (this.handle && this.handle.isValid) {
+this.handle.node.on(cc.Node.EventType.TOUCH_START, this._onHandleDragStart, this);
+this.handle.node.on(cc.Node.EventType.TOUCH_MOVE, this._onTouchMoved, this);
+this.handle.node.on(cc.Node.EventType.TOUCH_END, this._onTouchEnded, this);
+}
+},
+onDisable: function() {
+this.node.off(cc.Node.EventType.TOUCH_START, this._onTouchBegan, this);
+this.node.off(cc.Node.EventType.TOUCH_MOVE, this._onTouchMoved, this);
+this.node.off(cc.Node.EventType.TOUCH_END, this._onTouchEnded, this);
+this.node.off(cc.Node.EventType.TOUCH_CANCEL, this._onTouchCancelled, this);
+if (this.handle && this.handle.isValid) {
+this.handle.node.off(cc.Node.EventType.TOUCH_START, this._onHandleDragStart, this);
+this.handle.node.off(cc.Node.EventType.TOUCH_MOVE, this._onTouchMoved, this);
+this.handle.node.off(cc.Node.EventType.TOUCH_END, this._onTouchEnded, this);
+}
+},
+_onHandleDragStart: function(t) {
+this._dragging = !0;
+this._touchHandle = !0;
+this._offset = this.handle.node.convertToNodeSpaceAR(t.touch.getLocation());
+t.stopPropagation();
+},
+_onTouchBegan: function(t) {
+if (this.handle) {
+this._dragging = !0;
+this._touchHandle || this._handleSliderLogic(t.touch);
+t.stopPropagation();
+}
+},
+_onTouchMoved: function(t) {
+if (this._dragging) {
+this._handleSliderLogic(t.touch);
+t.stopPropagation();
+}
+},
+_onTouchEnded: function(t) {
+this._dragging = !1;
+this._touchHandle = !1;
+this._offset = cc.v2();
+t.stopPropagation();
+},
+_onTouchCancelled: function(t) {
+this._dragging = !1;
+t.stopPropagation();
+},
+_handleSliderLogic: function(t) {
+this._updateProgress(t);
+this._emitSlideEvent();
+},
+_emitSlideEvent: function() {
+cc.Component.EventHandler.emitEvents(this.slideEvents, this);
+this.node.emit("slide", this);
+},
+_updateProgress: function(t) {
+if (this.handle) {
+var e = this.node, i = e.convertToNodeSpaceAR(t.getLocation());
+this.direction === s.Horizontal ? this.progress = n.clamp01((i.x - this._offset.x + e.anchorX * e.width) / e.width) : this.progress = n.clamp01((i.y - this._offset.y + e.anchorY * e.height) / e.height);
+}
+},
+_updateHandlePosition: function() {
+if (this.handle) {
+var t;
+t = this.direction === s.Horizontal ? cc.v2(-this.node.width * this.node.anchorX + this.progress * this.node.width, 0) : cc.v2(0, -this.node.height * this.node.anchorY + this.progress * this.node.height);
+var e = this.node.convertToWorldSpaceAR(t);
+this.handle.node.position = this.handle.node.parent.convertToNodeSpaceAR(e);
+}
+}
+});
+cc.Slider = e.exports = o;
+}), {
+"../utils/misc": 297,
+"./CCComponent": 95
+} ],
+111: [ (function(t, e, i) {
+"use strict";
+var n = t("../utils/misc"), r = t("../CCNode").EventType, s = t("./CCRenderComponent"), o = t("../renderer/render-flow"), a = t("../utils/blend-func"), c = t("../assets/material/CCMaterial"), l = cc.Enum({
+SIMPLE: 0,
+SLICED: 1,
+TILED: 2,
+FILLED: 3,
+MESH: 4
+}), h = cc.Enum({
+HORIZONTAL: 0,
+VERTICAL: 1,
+RADIAL: 2
+}), u = cc.Enum({
+CUSTOM: 0,
+TRIMMED: 1,
+RAW: 2
+}), _ = cc.Enum({
+NORMAL: 0,
+GRAY: 1
+}), f = cc.Class({
+name: "cc.Sprite",
+extends: s,
+mixins: [ a ],
+editor: !1,
+properties: {
+_spriteFrame: {
+default: null,
+type: cc.SpriteFrame
+},
+_type: l.SIMPLE,
+_sizeMode: u.TRIMMED,
+_fillType: 0,
+_fillCenter: cc.v2(0, 0),
+_fillStart: 0,
+_fillRange: 0,
+_isTrimmedMode: !0,
+_atlas: {
+default: null,
+type: cc.SpriteAtlas,
+tooltip: !1,
+editorOnly: !0,
+visible: !0,
+animatable: !1
+},
+spriteFrame: {
+get: function() {
+return this._spriteFrame;
+},
+set: function(t, e) {
+var i = this._spriteFrame;
+if (i !== t) {
+this._spriteFrame = t;
+this.markForUpdateRenderData(!1);
+this._applySpriteFrame(i);
+0;
+}
+},
+type: cc.SpriteFrame
+},
+type: {
+get: function() {
+return this._type;
+},
+set: function(t) {
+if (this._type !== t) {
+this.destroyRenderData(this._renderData);
+this._renderData = null;
+this._type = t;
+this._updateAssembler();
+}
+},
+type: l,
+animatable: !1,
+tooltip: !1
+},
+fillType: {
+get: function() {
+return this._fillType;
+},
+set: function(t) {
+if (t !== this._fillType) {
+if (t === h.RADIAL || this._fillType === h.RADIAL) {
+this.destroyRenderData(this._renderData);
+this._renderData = null;
+} else this._renderData && this.markForUpdateRenderData(!0);
+this._fillType = t;
+this._updateAssembler();
+}
+},
+type: h,
+tooltip: !1
+},
+fillCenter: {
+get: function() {
+return this._fillCenter;
+},
+set: function(t) {
+this._fillCenter.x = t.x;
+this._fillCenter.y = t.y;
+this._type === l.FILLED && this._renderData && this.markForUpdateRenderData(!0);
+},
+tooltip: !1
+},
+fillStart: {
+get: function() {
+return this._fillStart;
+},
+set: function(t) {
+this._fillStart = n.clampf(t, -1, 1);
+this._type === l.FILLED && this._renderData && this.markForUpdateRenderData(!0);
+},
+tooltip: !1
+},
+fillRange: {
+get: function() {
+return this._fillRange;
+},
+set: function(t) {
+this._fillRange = n.clampf(t, -1, 1);
+this._type === l.FILLED && this._renderData && this.markForUpdateRenderData(!0);
+},
+tooltip: !1
+},
+trim: {
+get: function() {
+return this._isTrimmedMode;
+},
+set: function(t) {
+if (this._isTrimmedMode !== t) {
+this._isTrimmedMode = t;
+this._type !== l.SIMPLE && this._type !== l.MESH || !this._renderData || this.markForUpdateRenderData(!0);
+}
+},
+animatable: !1,
+tooltip: !1
+},
+sizeMode: {
+get: function() {
+return this._sizeMode;
+},
+set: function(t) {
+this._sizeMode = t;
+t !== u.CUSTOM && this._applySpriteSize();
+},
+animatable: !1,
+type: u,
+tooltip: !1
+}
+},
+statics: {
+FillType: h,
+Type: l,
+SizeMode: u,
+State: _
+},
+setVisible: function(t) {
+this.enabled = t;
+},
+setState: function() {},
+getState: function() {},
+onEnable: function() {
+this._super();
+if (!this._spriteFrame || !this._spriteFrame.textureLoaded()) {
+this.disableRender();
+if (this._spriteFrame) {
+this._spriteFrame.once("load", this._onTextureLoaded, this);
+this._spriteFrame.ensureLoadTexture();
+}
+}
+this._updateAssembler();
+this._activateMaterial();
+this.node.on(r.SIZE_CHANGED, this._onNodeSizeDirty, this);
+this.node.on(r.ANCHOR_CHANGED, this._onNodeSizeDirty, this);
+},
+onDisable: function() {
+this._super();
+this.node.off(r.SIZE_CHANGED, this._onNodeSizeDirty, this);
+this.node.off(r.ANCHOR_CHANGED, this._onNodeSizeDirty, this);
+},
+_onNodeSizeDirty: function() {
+this._renderData && this.markForUpdateRenderData(!0);
+},
+_on3DNodeChanged: function() {
+this._updateAssembler();
+},
+_updateAssembler: function() {
+var t = f._assembler.getAssembler(this);
+if (this._assembler !== t) {
+this._assembler = t;
+this._renderData = null;
+}
+if (!this._renderData) {
+this._renderData = this._assembler.createData(this);
+this.markForUpdateRenderData(!0);
+}
+},
+_activateMaterial: function() {
+if (cc.game.renderType !== cc.game.RENDER_TYPE_CANVAS) {
+var t = this._spriteFrame;
+if (t && t.textureLoaded()) {
+var e = this.sharedMaterials[0];
+(e = e ? c.getInstantiatedMaterial(e, this) : c.getInstantiatedBuiltinMaterial("2d-sprite", this)).setProperty("texture", t.getTexture());
+this.setMaterial(0, e);
+this.markForRender(!0);
+} else this.disableRender();
+} else {
+this.markForUpdateRenderData(!0);
+this.markForRender(!0);
+}
+},
+_applyAtlas: !1,
+_canRender: function() {
+if (cc.game.renderType === cc.game.RENDER_TYPE_CANVAS) {
+if (!this._enabled) return !1;
+} else if (!this._enabled || !this.sharedMaterials[0] || !this.node._activeInHierarchy) return !1;
+var t = this._spriteFrame;
+return !(!t || !t.textureLoaded());
+},
+markForUpdateRenderData: function(t) {
+if (t && this._canRender()) {
+this.node._renderFlag |= o.FLAG_UPDATE_RENDER_DATA;
+var e = this._renderData;
+if (e) {
+e.uvDirty = !0;
+e.vertDirty = !0;
+}
+} else t || (this.node._renderFlag &= ~o.FLAG_UPDATE_RENDER_DATA);
+},
+_applySpriteSize: function() {
+if (this._spriteFrame) {
+if (u.RAW === this._sizeMode) {
+var t = this._spriteFrame.getOriginalSize();
+this.node.setContentSize(t);
+} else if (u.TRIMMED === this._sizeMode) {
+var e = this._spriteFrame.getRect();
+this.node.setContentSize(e.width, e.height);
+}
+this._activateMaterial();
+}
+},
+_onTextureLoaded: function() {
+this.isValid && this._applySpriteSize();
+},
+_applySpriteFrame: function(t) {
+t && t.off && t.off("load", this._onTextureLoaded, this);
+var e = this._spriteFrame, i = this.sharedMaterials[0];
+e && (i && i._texture) === (e && e._texture) || this.markForRender(!1);
+if (e) if (t && e._texture === t._texture) this._applySpriteSize(); else if (e.textureLoaded()) this._onTextureLoaded(null); else {
+e.once("load", this._onTextureLoaded, this);
+e.ensureLoadTexture();
+}
+0;
+},
+_resized: !1
+});
+0;
+cc.Sprite = e.exports = f;
+}), {
+"../CCNode": 52,
+"../assets/material/CCMaterial": 75,
+"../renderer/render-flow": 245,
+"../utils/blend-func": 289,
+"../utils/misc": 297,
+"./CCRenderComponent": 106
+} ],
+112: [ (function(t, e, i) {
+"use strict";
+var n = cc.Enum({
+NONE: 0,
+CHECKBOX: 1,
+TEXT_ATLAS: 2,
+SLIDER_BAR: 3,
+LIST_VIEW: 4,
+PAGE_VIEW: 5
+}), r = cc.Enum({
+VERTICAL: 0,
+HORIZONTAL: 1
+}), s = cc.Enum({
+TOP: 0,
+CENTER: 1,
+BOTTOM: 2
+}), o = cc.Enum({
+LEFT: 0,
+CENTER: 1,
+RIGHT: 2
+}), a = cc.Class({
+name: "cc.StudioComponent",
+extends: cc.Component,
+editor: !1,
+properties: !1,
+statics: {
+ComponentType: n,
+ListDirection: r,
+VerticalAlign: s,
+HorizontalAlign: o
+}
+}), c = t("../utils/prefab-helper");
+a.PlaceHolder = cc.Class({
+name: "cc.StudioComponent.PlaceHolder",
+extends: cc.Component,
+properties: {
+_baseUrl: "",
+nestedPrefab: cc.Prefab
+},
+onLoad: function() {
+this.nestedPrefab && this._replaceWithNestedPrefab();
+},
+_replaceWithNestedPrefab: function() {
+var t = this.node, e = t._prefab;
+e.root = t;
+e.asset = this.nestedPrefab;
+c.syncWithPrefab(t);
+}
+});
+cc.StudioComponent = e.exports = a;
+var l = cc.Class({
+name: "cc.StudioWidget",
+extends: cc.Widget,
+editor: !1,
+_validateTargetInDEV: function() {}
+});
+cc.StudioWidget = e.exports = l;
+}), {
+"../utils/prefab-helper": 299
+} ],
+113: [ (function(t, e, i) {
+"use strict";
+var n = t("../utils/gray-sprite-state"), r = cc.Class({
+name: "cc.Toggle",
+extends: t("./CCButton"),
+mixins: [ n ],
+editor: !1,
+properties: {
+_N$isChecked: !0,
+isChecked: {
+get: function() {
+return this._N$isChecked;
+},
+set: function(t) {
+if (t !== this._N$isChecked) {
+var e = this.toggleGroup || this._toggleContainer;
+if (!(e && e.enabled && this._N$isChecked) || e.allowSwitchOff) {
+this._N$isChecked = t;
+this._updateCheckMark();
+e && e.enabled && e.updateToggles(this);
+this._emitToggleEvents();
+}
+}
+},
+tooltip: !1
+},
+toggleGroup: {
+default: null,
+tooltip: !1,
+type: t("./CCToggleGroup")
+},
+checkMark: {
+default: null,
+type: cc.Sprite,
+tooltip: !1
+},
+checkEvents: {
+default: [],
+type: cc.Component.EventHandler
+},
+_resizeToTarget: {
+animatable: !1,
+set: function(t) {
+t && this._resizeNodeToTargetNode();
+}
+}
+},
+onEnable: function() {
+this._super();
+this._registerToggleEvent();
+this.toggleGroup && this.toggleGroup.enabledInHierarchy && this.toggleGroup.addToggle(this);
+},
+onDisable: function() {
+this._super();
+this._unregisterToggleEvent();
+this.toggleGroup && this.toggleGroup.enabledInHierarchy && this.toggleGroup.removeToggle(this);
+},
+_hideCheckMark: function() {
+this._N$isChecked = !1;
+this._updateCheckMark();
+},
+toggle: function(t) {
+this.isChecked = !this.isChecked;
+},
+check: function() {
+this.isChecked = !0;
+},
+uncheck: function() {
+this.isChecked = !1;
+},
+_updateCheckMark: function() {
+this.checkMark && (this.checkMark.node.active = !!this.isChecked);
+},
+_updateDisabledState: function() {
+this._super();
+if (this.enableAutoGrayEffect && this.checkMark) {
+var t = !this.interactable;
+this._switchGrayMaterial(t, this.checkMark);
+}
+},
+_registerToggleEvent: function() {
+this.node.on("click", this.toggle, this);
+},
+_unregisterToggleEvent: function() {
+this.node.off("click", this.toggle, this);
+},
+_emitToggleEvents: function() {
+this.node.emit("toggle", this);
+this.checkEvents && cc.Component.EventHandler.emitEvents(this.checkEvents, this);
+}
+});
+cc.Toggle = e.exports = r;
+t("../platform/js").get(r.prototype, "_toggleContainer", (function() {
+var t = this.node.parent;
+return cc.Node.isNode(t) ? t.getComponent(cc.ToggleContainer) : null;
+}));
+}), {
+"../platform/js": 221,
+"../utils/gray-sprite-state": 292,
+"./CCButton": 93,
+"./CCToggleGroup": 115
+} ],
+114: [ (function(t, e, i) {
+"use strict";
+var n = cc.Class({
+name: "cc.ToggleContainer",
+extends: cc.Component,
+editor: !1,
+properties: {
+allowSwitchOff: {
+tooltip: !1,
+default: !1
+},
+checkEvents: {
+default: [],
+type: cc.Component.EventHandler
+}
+},
+updateToggles: function(t) {
+if (this.enabledInHierarchy && t.isChecked) {
+this.toggleItems.forEach((function(e) {
+e !== t && e.isChecked && e.enabled && e._hideCheckMark();
+}));
+this.checkEvents && cc.Component.EventHandler.emitEvents(this.checkEvents, t);
+}
+},
+_allowOnlyOneToggleChecked: function() {
+var t = !1;
+this.toggleItems.forEach((function(e) {
+t ? e._hideCheckMark() : e.isChecked && (t = !0);
+}));
+return t;
+},
+_makeAtLeastOneToggleChecked: function() {
+if (!this._allowOnlyOneToggleChecked() && !this.allowSwitchOff) {
+var t = this.toggleItems;
+t.length > 0 && t[0].check();
+}
+},
+onEnable: function() {
+this.node.on("child-added", this._allowOnlyOneToggleChecked, this);
+this.node.on("child-removed", this._makeAtLeastOneToggleChecked, this);
+},
+onDisable: function() {
+this.node.off("child-added", this._allowOnlyOneToggleChecked, this);
+this.node.off("child-removed", this._makeAtLeastOneToggleChecked, this);
+},
+start: function() {
+this._makeAtLeastOneToggleChecked();
+}
+});
+t("../platform/js").get(n.prototype, "toggleItems", (function() {
+return this.node.getComponentsInChildren(cc.Toggle);
+}));
+cc.ToggleContainer = e.exports = n;
+}), {
+"../platform/js": 221
+} ],
+115: [ (function(t, e, i) {
+"use strict";
+var n = cc.Class({
+name: "cc.ToggleGroup",
+extends: cc.Component,
+ctor: function() {
+this._toggleItems = [];
+},
+editor: !1,
+properties: {
+allowSwitchOff: {
+tooltip: !1,
+default: !1
+},
+toggleItems: {
+get: function() {
+return this._toggleItems;
+}
+}
+},
+updateToggles: function(t) {
+this.enabledInHierarchy && this._toggleItems.forEach((function(e) {
+t.isChecked && e !== t && e.isChecked && e.enabled && e._hideCheckMark();
+}));
+},
+addToggle: function(t) {
+-1 === this._toggleItems.indexOf(t) && this._toggleItems.push(t);
+this._allowOnlyOneToggleChecked();
+},
+removeToggle: function(t) {
+var e = this._toggleItems.indexOf(t);
+e > -1 && this._toggleItems.splice(e, 1);
+this._makeAtLeastOneToggleChecked();
+},
+_allowOnlyOneToggleChecked: function() {
+var t = !1;
+this._toggleItems.forEach((function(e) {
+t && e.enabled && e._hideCheckMark();
+e.isChecked && e.enabled && (t = !0);
+}));
+return t;
+},
+_makeAtLeastOneToggleChecked: function() {
+this._allowOnlyOneToggleChecked() || this.allowSwitchOff || this._toggleItems.length > 0 && (this._toggleItems[0].isChecked = !0);
+},
+start: function() {
+this._makeAtLeastOneToggleChecked();
+}
+}), r = !1;
+t("../platform/js").get(cc, "ToggleGroup", (function() {
+if (!r) {
+cc.logID(1405, "cc.ToggleGroup", "cc.ToggleContainer");
+r = !0;
+}
+return n;
+}));
+e.exports = n;
+}), {
+"../platform/js": 221
+} ],
+116: [ (function(t, e, i) {
+"use strict";
+var n = cc.Class({
+name: "cc.ViewGroup",
+extends: t("./CCComponent")
+});
+cc.ViewGroup = e.exports = n;
+}), {
+"./CCComponent": 95
+} ],
+117: [ (function(t, e, i) {
+"use strict";
+var n = t("../base-ui/CCWidgetManager"), r = n.AlignMode, s = n._AlignFlags, o = s.TOP, a = s.MID, c = s.BOT, l = s.LEFT, h = s.CENTER, u = s.RIGHT, _ = o | c, f = l | u, d = cc.Class({
+name: "cc.Widget",
+extends: t("./CCComponent"),
+editor: !1,
+properties: {
+target: {
+get: function() {
+return this._target;
+},
+set: function(t) {
+this._target = t;
+0;
+},
+type: cc.Node,
+tooltip: !1
+},
+isAlignTop: {
+get: function() {
+return (this._alignFlags & o) > 0;
+},
+set: function(t) {
+this._setAlign(o, t);
+},
+animatable: !1,
+tooltip: !1
+},
+isAlignVerticalCenter: {
+get: function() {
+return (this._alignFlags & a) > 0;
+},
+set: function(t) {
+if (t) {
+this.isAlignTop = !1;
+this.isAlignBottom = !1;
+this._alignFlags |= a;
+} else this._alignFlags &= ~a;
+},
+animatable: !1,
+tooltip: !1
+},
+isAlignBottom: {
+get: function() {
+return (this._alignFlags & c) > 0;
+},
+set: function(t) {
+this._setAlign(c, t);
+},
+animatable: !1,
+tooltip: !1
+},
+isAlignLeft: {
+get: function() {
+return (this._alignFlags & l) > 0;
+},
+set: function(t) {
+this._setAlign(l, t);
+},
+animatable: !1,
+tooltip: !1
+},
+isAlignHorizontalCenter: {
+get: function() {
+return (this._alignFlags & h) > 0;
+},
+set: function(t) {
+if (t) {
+this.isAlignLeft = !1;
+this.isAlignRight = !1;
+this._alignFlags |= h;
+} else this._alignFlags &= ~h;
+},
+animatable: !1,
+tooltip: !1
+},
+isAlignRight: {
+get: function() {
+return (this._alignFlags & u) > 0;
+},
+set: function(t) {
+this._setAlign(u, t);
+},
+animatable: !1,
+tooltip: !1
+},
+isStretchWidth: {
+get: function() {
+return (this._alignFlags & f) === f;
+},
+visible: !1
+},
+isStretchHeight: {
+get: function() {
+return (this._alignFlags & _) === _;
+},
+visible: !1
+},
+top: {
+get: function() {
+return this._top;
+},
+set: function(t) {
+this._top = t;
+},
+tooltip: !1
+},
+bottom: {
+get: function() {
+return this._bottom;
+},
+set: function(t) {
+this._bottom = t;
+},
+tooltip: !1
+},
+left: {
+get: function() {
+return this._left;
+},
+set: function(t) {
+this._left = t;
+},
+tooltip: !1
+},
+right: {
+get: function() {
+return this._right;
+},
+set: function(t) {
+this._right = t;
+},
+tooltip: !1
+},
+horizontalCenter: {
+get: function() {
+return this._horizontalCenter;
+},
+set: function(t) {
+this._horizontalCenter = t;
+},
+tooltip: !1
+},
+verticalCenter: {
+get: function() {
+return this._verticalCenter;
+},
+set: function(t) {
+this._verticalCenter = t;
+},
+tooltip: !1
+},
+isAbsoluteHorizontalCenter: {
+get: function() {
+return this._isAbsHorizontalCenter;
+},
+set: function(t) {
+this._isAbsHorizontalCenter = t;
+},
+animatable: !1
+},
+isAbsoluteVerticalCenter: {
+get: function() {
+return this._isAbsVerticalCenter;
+},
+set: function(t) {
+this._isAbsVerticalCenter = t;
+},
+animatable: !1
+},
+isAbsoluteTop: {
+get: function() {
+return this._isAbsTop;
+},
+set: function(t) {
+this._isAbsTop = t;
+},
+animatable: !1
+},
+isAbsoluteBottom: {
+get: function() {
+return this._isAbsBottom;
+},
+set: function(t) {
+this._isAbsBottom = t;
+},
+animatable: !1
+},
+isAbsoluteLeft: {
+get: function() {
+return this._isAbsLeft;
+},
+set: function(t) {
+this._isAbsLeft = t;
+},
+animatable: !1
+},
+isAbsoluteRight: {
+get: function() {
+return this._isAbsRight;
+},
+set: function(t) {
+this._isAbsRight = t;
+},
+animatable: !1
+},
+alignMode: {
+default: r.ON_WINDOW_RESIZE,
+type: r,
+tooltip: !1
+},
+_wasAlignOnce: {
+default: void 0,
+formerlySerializedAs: "isAlignOnce"
+},
+_target: null,
+_alignFlags: 0,
+_left: 0,
+_right: 0,
+_top: 0,
+_bottom: 0,
+_verticalCenter: 0,
+_horizontalCenter: 0,
+_isAbsLeft: !0,
+_isAbsRight: !0,
+_isAbsTop: !0,
+_isAbsBottom: !0,
+_isAbsHorizontalCenter: !0,
+_isAbsVerticalCenter: !0,
+_originalWidth: 0,
+_originalHeight: 0
+},
+statics: {
+AlignMode: r
+},
+onLoad: function() {
+if (void 0 !== this._wasAlignOnce) {
+this.alignMode = this._wasAlignOnce ? r.ONCE : r.ALWAYS;
+this._wasAlignOnce = void 0;
+}
+},
+onEnable: function() {
+n.add(this);
+},
+onDisable: function() {
+n.remove(this);
+},
+_validateTargetInDEV: !1,
+_setAlign: function(t, e) {
+if (e !== (this._alignFlags & t) > 0) {
+var i = (t & f) > 0;
+if (e) {
+this._alignFlags |= t;
+if (i) {
+this.isAlignHorizontalCenter = !1;
+if (this.isStretchWidth) {
+this._originalWidth = this.node.width;
+0;
+}
+} else {
+this.isAlignVerticalCenter = !1;
+if (this.isStretchHeight) {
+this._originalHeight = this.node.height;
+0;
+}
+}
+0;
+} else {
+i ? this.isStretchWidth && (this.node.width = this._originalWidth) : this.isStretchHeight && (this.node.height = this._originalHeight);
+this._alignFlags &= ~t;
+}
+}
+},
+updateAlignment: function() {
+n.updateAlignment(this.node);
+}
+});
+Object.defineProperty(d.prototype, "isAlignOnce", {
+get: function() {
+0;
+return this.alignMode === r.ONCE;
+},
+set: function(t) {
+0;
+this.alignMode = t ? r.ONCE : r.ALWAYS;
+}
+});
+cc.Widget = e.exports = d;
+}), {
+"../base-ui/CCWidgetManager": 79,
+"./CCComponent": 95
+} ],
+118: [ (function(t, e, i) {
+"use strict";
+var n = t("./CCComponent"), r = void 0;
+r = cc.sys.platform === cc.sys.BAIDU_GAME ? cc.Class({
+name: "cc.SwanSubContextView",
+extends: n,
+editor: !1,
+properties: {
+_fps: 60,
+fps: {
+get: function() {
+return this._fps;
+},
+set: function(t) {
+if (this._fps !== t) {
+this._fps = t;
+this._updateInterval = 1 / t;
+this._updateSubContextFrameRate();
+}
+},
+tooltip: !1
+}
+},
+ctor: function() {
+this._sprite = null;
+this._tex = new cc.Texture2D();
+this._context = null;
+this._updatedTime = performance.now();
+this._updateInterval = 0;
+},
+onLoad: function() {
+if (swan.getOpenDataContext) {
+this._updateInterval = 1e3 / this._fps;
+this._context = swan.getOpenDataContext();
+var t = this._context.canvas;
+if (t) {
+t.width = this.node.width;
+t.height = this.node.height;
+}
+this._tex.setPremultiplyAlpha(!0);
+this._tex.initWithElement(t);
+this._sprite = this.node.getComponent(cc.Sprite);
+if (!this._sprite) {
+this._sprite = this.node.addComponent(cc.Sprite);
+this._sprite.srcBlendFactor = cc.macro.BlendFactor.ONE;
+}
+this._sprite.spriteFrame = new cc.SpriteFrame(this._tex);
+} else this.enabled = !1;
+},
+onEnable: function() {
+this._runSubContextMainLoop();
+this._registerNodeEvent();
+this._updateSubContextFrameRate();
+this.updateSubContextViewport();
+},
+onDisable: function() {
+this._unregisterNodeEvent();
+this._stopSubContextMainLoop();
+},
+update: function(t) {
+if (void 0 === t) {
+this._context && this._context.postMessage({
+fromEngine: !0,
+event: "step"
+});
+this._updateSubContextTexture();
+} else {
+if (performance.now() - this._updatedTime >= this._updateInterval) {
+this._updatedTime += this._updateInterval;
+this._updateSubContextTexture();
+}
+}
+},
+_updateSubContextTexture: function() {
+if (this._tex && this._context) {
+this._tex.initWithElement(this._context.canvas);
+this._sprite._activateMaterial();
+}
+},
+updateSubContextViewport: function() {
+if (this._context) {
+var t = this.node.getBoundingBoxToWorld(), e = cc.view._scaleX, i = cc.view._scaleY;
+this._context.postMessage({
+fromEngine: !0,
+event: "viewport",
+x: t.x * e + cc.view._viewportRect.x,
+y: t.y * i + cc.view._viewportRect.y,
+width: t.width * e,
+height: t.height * i
+});
+}
+},
+_registerNodeEvent: function() {
+this.node.on("position-changed", this.updateSubContextViewport, this);
+this.node.on("scale-changed", this.updateSubContextViewport, this);
+this.node.on("size-changed", this.updateSubContextViewport, this);
+},
+_unregisterNodeEvent: function() {
+this.node.off("position-changed", this.updateSubContextViewport, this);
+this.node.off("scale-changed", this.updateSubContextViewport, this);
+this.node.off("size-changed", this.updateSubContextViewport, this);
+},
+_runSubContextMainLoop: function() {
+this._context && this._context.postMessage({
+fromEngine: !0,
+event: "mainLoop",
+value: !0
+});
+},
+_stopSubContextMainLoop: function() {
+this._context && this._context.postMessage({
+fromEngine: !0,
+event: "mainLoop",
+value: !1
+});
+},
+_updateSubContextFrameRate: function() {
+this._context && this._context.postMessage({
+fromEngine: !0,
+event: "frameRate",
+value: this._fps
+});
+}
+}) : cc.Class({
+name: "cc.SwanSubContextView",
+extends: n
+});
+cc.SwanSubContextView = e.exports = r;
+}), {
+"./CCComponent": 95
+} ],
+119: [ (function(t, e, i) {
+"use strict";
+var n = t("./CCComponent"), r = void 0;
+r = cc.Class({
+name: "cc.WXSubContextView",
+extends: n
+});
+cc.WXSubContextView = e.exports = r;
+}), {
+"./CCComponent": 95
+} ],
+120: [ (function(t, e, i) {
+"use strict";
+var n = t("../../platform/CCMacro"), r = t("./EditBoxImplBase"), s = t("../CCLabel"), o = t("./types"), a = o.InputMode, c = o.InputFlag, l = o.KeyboardReturnType;
+function h(t) {
+return t.replace(/(?:^|\s)\S/g, (function(t) {
+return t.toUpperCase();
+}));
+}
+function u(t) {
+return t.charAt(0).toUpperCase() + t.slice(1);
+}
+var _ = cc.Class({
+name: "cc.EditBox",
+extends: cc.Component,
+editor: !1,
+properties: {
+_useOriginalSize: !0,
+_string: "",
+string: {
+tooltip: !1,
+get: function() {
+return this._string;
+},
+set: function(t) {
+t = "" + t;
+this.maxLength >= 0 && t.length >= this.maxLength && (t = t.slice(0, this.maxLength));
+this._string = t;
+this._updateString(t);
+}
+},
+textLabel: {
+tooltip: !1,
+default: null,
+type: s,
+notify: function(t) {
+if (this.textLabel && this.textLabel !== t) {
+this._updateTextLabel();
+this._updateLabels();
+}
+}
+},
+placeholderLabel: {
+tooltip: !1,
+default: null,
+type: s,
+notify: function(t) {
+if (this.placeholderLabel && this.placeholderLabel !== t) {
+this._updatePlaceholderLabel();
+this._updateLabels();
+}
+}
+},
+background: {
+tooltip: !1,
+default: null,
+type: cc.Sprite,
+notify: function(t) {
+this.background && this.background !== t && this._updateBackgroundSprite();
+}
+},
+_N$backgroundImage: {
+default: void 0,
+type: cc.SpriteFrame
+},
+backgroundImage: {
+get: function() {
+return this.background ? this.background.spriteFrame : null;
+},
+set: function(t) {
+this.background && (this.background.spriteFrame = t);
+}
+},
+returnType: {
+default: l.DEFAULT,
+tooltip: !1,
+displayName: "KeyboardReturnType",
+type: l
+},
+_N$returnType: {
+default: void 0,
+type: cc.Float
+},
+inputFlag: {
+tooltip: !1,
+default: c.DEFAULT,
+type: c,
+notify: function() {
+this._updateString(this._string);
+}
+},
+inputMode: {
+tooltip: !1,
+default: a.ANY,
+type: a,
+notify: function(t) {
+if (this.inputMode !== t) {
+this._updateTextLabel();
+this._updatePlaceholderLabel();
+}
+}
+},
+fontSize: {
+get: function() {
+return this.textLabel ? this.textLabel.fontSize : null;
+},
+set: function(t) {
+this.textLabel && (this.textLabel.fontSize = t);
+}
+},
+_N$fontSize: {
+default: void 0,
+type: cc.Float
+},
+lineHeight: {
+get: function() {
+return this.textLabel ? this.textLabel.lineHeight : null;
+},
+set: function(t) {
+this.textLabel && (this.textLabel.lineHeight = t);
+}
+},
+_N$lineHeight: {
+default: void 0,
+type: cc.Float
+},
+fontColor: {
+get: function() {
+return this.textLabel ? this.textLabel.node.color : null;
+},
+set: function(t) {
+if (this.textLabel) {
+this.textLabel.node.color = t;
+this.textLabel.node.opacity = t.a;
+}
+}
+},
+_N$fontColor: void 0,
+placeholder: {
+tooltip: !1,
+get: function() {
+return this.placeholderLabel ? this.placeholderLabel.string : "";
+},
+set: function(t) {
+this.placeholderLabel && (this.placeholderLabel.string = t);
+}
+},
+_N$placeholder: {
+default: void 0,
+type: cc.String
+},
+placeholderFontSize: {
+get: function() {
+return this.placeholderLabel ? this.placeholderLabel.fontSize : null;
+},
+set: function(t) {
+this.placeholderLabel && (this.placeholderLabel.fontSize = t);
+}
+},
+_N$placeholderFontSize: {
+default: void 0,
+type: cc.Float
+},
+placeholderFontColor: {
+get: function() {
+return this.placeholderLabel ? this.placeholderLabel.node.color : null;
+},
+set: function(t) {
+if (this.placeholderLabel) {
+this.placeholderLabel.node.color = t;
+this.placeholderLabel.node.opacity = t.a;
+}
+}
+},
+_N$placeholderFontColor: void 0,
+maxLength: {
+tooltip: !1,
+default: 20
+},
+_N$maxLength: {
+default: void 0,
+type: cc.Float
+},
+stayOnTop: {
+default: !1,
+notify: function() {
+cc.warn("editBox.stayOnTop is removed since v2.1.");
+}
+},
+_tabIndex: 0,
+tabIndex: {
+tooltip: !1,
+get: function() {
+return this._tabIndex;
+},
+set: function(t) {
+if (this._tabIndex !== t) {
+this._tabIndex = t;
+this._impl && this._impl.setTabIndex(t);
+}
+}
+},
+editingDidBegan: {
+default: [],
+type: cc.Component.EventHandler
+},
+textChanged: {
+default: [],
+type: cc.Component.EventHandler
+},
+editingDidEnded: {
+default: [],
+type: cc.Component.EventHandler
+},
+editingReturn: {
+default: [],
+type: cc.Component.EventHandler
+}
+},
+statics: {
+_ImplClass: r,
+KeyboardReturnType: l,
+InputFlag: c,
+InputMode: a
+},
+_init: function() {
+this._upgradeComp();
+this._isLabelVisible = !0;
+this.node.on(cc.Node.EventType.SIZE_CHANGED, this._syncSize, this);
+(this._impl = new _._ImplClass()).init(this);
+this._updateString(this._string);
+this._syncSize();
+},
+_updateBackgroundSprite: function() {
+var t = this.background;
+if (!t) {
+var e = this.node.getChildByName("BACKGROUND_SPRITE");
+e || (e = new cc.Node("BACKGROUND_SPRITE"));
+(t = e.getComponent(cc.Sprite)) || (t = e.addComponent(cc.Sprite));
+e.parent = this.node;
+this.background = t;
+}
+t.type = cc.Sprite.Type.SLICED;
+if (void 0 !== this._N$backgroundImage) {
+t.spriteFrame = this._N$backgroundImage;
+this._N$backgroundImage = void 0;
+}
+},
+_updateTextLabel: function() {
+var t = this.textLabel;
+if (!t) {
+var e = this.node.getChildByName("TEXT_LABEL");
+e || (e = new cc.Node("TEXT_LABEL"));
+(t = e.getComponent(s)) || (t = e.addComponent(s));
+e.parent = this.node;
+this.textLabel = t;
+}
+t.node.setAnchorPoint(0, 1);
+t.overflow = s.Overflow.CLAMP;
+if (this.inputMode === a.ANY) {
+t.verticalAlign = n.VerticalTextAlignment.TOP;
+t.enableWrapText = !0;
+} else {
+t.verticalAlign = n.VerticalTextAlignment.CENTER;
+t.enableWrapText = !1;
+}
+t.string = this._updateLabelStringStyle(this._string);
+if (void 0 !== this._N$fontColor) {
+t.node.color = this._N$fontColor;
+t.node.opacity = this._N$fontColor.a;
+this._N$fontColor = void 0;
+}
+if (void 0 !== this._N$fontSize) {
+t.fontSize = this._N$fontSize;
+this._N$fontSize = void 0;
+}
+if (void 0 !== this._N$lineHeight) {
+t.lineHeight = this._N$lineHeight;
+this._N$lineHeight = void 0;
+}
+},
+_updatePlaceholderLabel: function() {
+var t = this.placeholderLabel;
+if (!t) {
+var e = this.node.getChildByName("PLACEHOLDER_LABEL");
+e || (e = new cc.Node("PLACEHOLDER_LABEL"));
+(t = e.getComponent(s)) || (t = e.addComponent(s));
+e.parent = this.node;
+this.placeholderLabel = t;
+}
+t.node.setAnchorPoint(0, 1);
+t.overflow = s.Overflow.CLAMP;
+if (this.inputMode === a.ANY) {
+t.verticalAlign = n.VerticalTextAlignment.TOP;
+t.enableWrapText = !0;
+} else {
+t.verticalAlign = n.VerticalTextAlignment.CENTER;
+t.enableWrapText = !1;
+}
+t.string = this.placeholder;
+if (void 0 !== this._N$placeholderFontColor) {
+t.node.color = this._N$placeholderFontColor;
+t.node.opacity = this._N$placeholderFontColor.a;
+this._N$placeholderFontColor = void 0;
+}
+if (void 0 !== this._N$placeholderFontSize) {
+t.fontSize = this._N$placeholderFontSize;
+this._N$placeholderFontSize = void 0;
+}
+},
+_upgradeComp: function() {
+if (void 0 !== this._N$returnType) {
+this.returnType = this._N$returnType;
+this._N$returnType = void 0;
+}
+if (void 0 !== this._N$maxLength) {
+this.maxLength = this._N$maxLength;
+this._N$maxLength = void 0;
+}
+void 0 !== this._N$backgroundImage && this._updateBackgroundSprite();
+void 0 === this._N$fontColor && void 0 === this._N$fontSize && void 0 === this._N$lineHeight || this._updateTextLabel();
+void 0 === this._N$placeholderFontColor && void 0 === this._N$placeholderFontSize || this._updatePlaceholderLabel();
+if (void 0 !== this._N$placeholder) {
+this.placeholder = this._N$placeholder;
+this._N$placeholder = void 0;
+}
+},
+_syncSize: function() {
+if (this._impl) {
+var t = this.node.getContentSize();
+this._impl.setSize(t.width, t.height);
+}
+},
+_showLabels: function() {
+this._isLabelVisible = !0;
+this._updateLabels();
+},
+_hideLabels: function() {
+this._isLabelVisible = !1;
+this.textLabel && (this.textLabel.node.active = !1);
+this.placeholderLabel && (this.placeholderLabel.node.active = !1);
+},
+_updateLabels: function() {
+if (this._isLabelVisible) {
+var t = this._string;
+this.textLabel && (this.textLabel.node.active = "" !== t);
+this.placeholderLabel && (this.placeholderLabel.node.active = "" === t);
+}
+},
+_updateString: function(t) {
+var e = this.textLabel;
+if (e) {
+var i = t;
+i && (i = this._updateLabelStringStyle(i));
+e.string = i;
+this._updateLabels();
+}
+},
+_updateLabelStringStyle: function(t, e) {
+var i = this.inputFlag;
+if (e || i !== c.PASSWORD) i === c.INITIAL_CAPS_ALL_CHARACTERS ? t = t.toUpperCase() : i === c.INITIAL_CAPS_WORD ? t = h(t) : i === c.INITIAL_CAPS_SENTENCE && (t = u(t)); else {
+for (var n = "", r = t.length, s = 0; s < r; ++s) n += "●";
+t = n;
+}
+return t;
+},
+editBoxEditingDidBegan: function() {
+cc.Component.EventHandler.emitEvents(this.editingDidBegan, this);
+this.node.emit("editing-did-began", this);
+},
+editBoxEditingDidEnded: function() {
+cc.Component.EventHandler.emitEvents(this.editingDidEnded, this);
+this.node.emit("editing-did-ended", this);
+},
+editBoxTextChanged: function(t) {
+t = this._updateLabelStringStyle(t, !0);
+this.string = t;
+cc.Component.EventHandler.emitEvents(this.textChanged, t, this);
+this.node.emit("text-changed", this);
+},
+editBoxEditingReturn: function() {
+cc.Component.EventHandler.emitEvents(this.editingReturn, this);
+this.node.emit("editing-return", this);
+},
+onEnable: function() {
+this._registerEvent();
+this._impl && this._impl.enable();
+},
+onDisable: function() {
+this._unregisterEvent();
+this._impl && this._impl.disable();
+},
+onDestroy: function() {
+this._impl && this._impl.clear();
+},
+__preload: function() {
+this._init();
+},
+_registerEvent: function() {
+this.node.on(cc.Node.EventType.TOUCH_START, this._onTouchBegan, this);
+this.node.on(cc.Node.EventType.TOUCH_END, this._onTouchEnded, this);
+},
+_unregisterEvent: function() {
+this.node.off(cc.Node.EventType.TOUCH_START, this._onTouchBegan, this);
+this.node.off(cc.Node.EventType.TOUCH_END, this._onTouchEnded, this);
+},
+_onTouchBegan: function(t) {
+t.stopPropagation();
+},
+_onTouchCancel: function(t) {
+t.stopPropagation();
+},
+_onTouchEnded: function(t) {
+this._impl && this._impl.beginEditing();
+t.stopPropagation();
+},
+setFocus: function() {
+cc.warnID(1400, "setFocus()", "focus()");
+this._impl && this._impl.setFocus(!0);
+},
+focus: function() {
+this._impl && this._impl.setFocus(!0);
+},
+blur: function() {
+this._impl && this._impl.setFocus(!1);
+},
+isFocused: function() {
+return !!this._impl && this._impl.isFocused();
+},
+update: function() {
+this._impl && this._impl.update();
+}
+});
+cc.EditBox = e.exports = _;
+cc.sys.isBrowser && t("./WebEditBoxImpl");
+}), {
+"../../platform/CCMacro": 206,
+"../CCLabel": 97,
+"./EditBoxImplBase": 121,
+"./WebEditBoxImpl": 122,
+"./types": 124
+} ],
+121: [ (function(t, e, i) {
+"use strict";
+var n = cc.Class({
+ctor: function() {
+this._delegate = null;
+},
+init: function(t) {},
+enable: function() {},
+disable: function() {},
+clear: function() {},
+update: function() {},
+setTabIndex: function(t) {},
+setSize: function(t, e) {},
+setFocus: function(t) {},
+isFocused: function() {},
+beginEditing: function() {},
+endEditing: function() {}
+});
+e.exports = n;
+}), {} ],
+122: [ (function(t, e, i) {
+"use strict";
+var n = t("../../platform/utils"), r = t("../../platform/CCMacro"), s = t("./types"), o = t("../CCLabel"), a = t("./tabIndexUtil"), c = cc.EditBox, l = cc.js, h = s.InputMode, u = s.InputFlag, _ = s.KeyboardReturnType, f = cc.vmath, d = {
+zoomInvalid: !1
+};
+cc.sys.OS_ANDROID !== cc.sys.os || cc.sys.browserType !== cc.sys.BROWSER_TYPE_SOUGOU && cc.sys.browserType !== cc.sys.BROWSER_TYPE_360 || (d.zoomInvalid = !0);
+var m = 0, p = cc.v3(), v = null, y = !1, g = !1;
+function x() {
+this._domId = "EditBoxId_" + ++m;
+this._placeholderStyleSheet = null;
+this._elem = null;
+this._isTextArea = !1;
+this._editing = !1;
+this._worldMat = f.mat4.create();
+this._cameraMat = f.mat4.create();
+this._m00 = 0;
+this._m01 = 0;
+this._m04 = 0;
+this._m05 = 0;
+this._m12 = 0;
+this._m13 = 0;
+this._w = 0;
+this._h = 0;
+this._inputMode = null;
+this._inputFlag = null;
+this._returnType = null;
+this._eventListeners = {};
+this._textLabelFont = null;
+this._textLabelFontSize = null;
+this._textLabelFontColor = null;
+this._textLabelAlign = null;
+this._placeholderLabelFont = null;
+this._placeholderLabelFontSize = null;
+this._placeholderLabelFontColor = null;
+this._placeholderLabelAlign = null;
+this._placeholderLineHeight = null;
+}
+l.extend(x, c._ImplClass);
+c._ImplClass = x;
+Object.assign(x.prototype, {
+init: function(t) {
+if (t) {
+this._delegate = t;
+t.inputMode === h.ANY ? this._createTextArea() : this._createInput();
+a.add(this);
+this.setTabIndex(t.tabIndex);
+this._initStyleSheet();
+this._registerEventListeners();
+this._addDomToGameContainer();
+y = cc.view.isAutoFullScreenEnabled();
+g = cc.view._resizeWithBrowserSize;
+}
+},
+enable: function() {},
+disable: function() {
+this._editing && this._elem.blur();
+},
+clear: function() {
+this._removeEventListeners();
+this._removeDomFromGameContainer();
+a.remove(this);
+v === this && (v = null);
+},
+update: function() {
+this._updateMatrix();
+},
+setTabIndex: function(t) {
+this._elem.tabIndex = t;
+a.resort();
+},
+setSize: function(t, e) {
+var i = this._elem;
+i.style.width = t + "px";
+i.style.height = e + "px";
+},
+setFocus: function(t) {
+t ? this.beginEditing() : this._elem.blur();
+},
+isFocused: function() {
+return this._editing;
+},
+beginEditing: function() {
+v && v !== this && v.setFocus(!1);
+this._editing = !0;
+v = this;
+this._showDom();
+this._elem.focus();
+this._delegate.editBoxEditingDidBegan();
+},
+endEditing: function() {},
+_createInput: function() {
+this._isTextArea = !1;
+this._elem = document.createElement("input");
+},
+_createTextArea: function() {
+this._isTextArea = !0;
+this._elem = document.createElement("textarea");
+},
+_addDomToGameContainer: function() {
+cc.game.container.appendChild(this._elem);
+document.head.appendChild(this._placeholderStyleSheet);
+},
+_removeDomFromGameContainer: function() {
+n.contains(cc.game.container, this._elem) && cc.game.container.removeChild(this._elem);
+n.contains(document.head, this._placeholderStyleSheet) && document.head.removeChild(this._placeholderStyleSheet);
+delete this._elem;
+delete this._placeholderStyleSheet;
+},
+_showDom: function() {
+this._updateMaxLength();
+this._updateInputType();
+this._updateStyleSheet();
+this._elem.style.display = "";
+this._delegate._hideLabels();
+cc.sys.isMobile && this._showDomOnMobile();
+},
+_hideDom: function() {
+this._elem.style.display = "none";
+this._delegate._showLabels();
+cc.sys.isMobile && this._hideDomOnMobile();
+},
+_showDomOnMobile: function() {
+if (cc.sys.os === cc.sys.OS_ANDROID) {
+if (y) {
+cc.view.enableAutoFullScreen(!1);
+cc.screen.exitFullScreen();
+}
+g && cc.view.resizeWithBrowserSize(!1);
+this._adjustWindowScroll();
+}
+},
+_hideDomOnMobile: function() {
+cc.sys.os === cc.sys.OS_ANDROID && setTimeout((function() {
+if (!v) {
+y && cc.view.enableAutoFullScreen(!0);
+g && cc.view.resizeWithBrowserSize(!0);
+}
+}), 800);
+this._scrollBackWindow();
+},
+_adjustWindowScroll: function() {
+var t = this;
+setTimeout((function() {
+window.scrollY < 100 && t._elem.scrollIntoView({
+block: "nearest",
+inline: "nearest",
+behavior: "auto"
+});
+}), 800);
+},
+_scrollBackWindow: function() {
+setTimeout((function() {
+var t = cc.sys;
+t.browserType !== t.BROWSER_TYPE_WECHAT || t.os !== t.OS_IOS ? t.os !== t.OS_IOS && window.scrollTo(0, 0) : window.top && window.top.scrollTo(0, 0);
+}), 800);
+},
+_updateMatrix: function() {
+var t = this._delegate.node;
+t.getWorldMatrix(this._worldMat);
+var e = this._worldMat;
+if (this.xxforceUpdate || this._m00 !== e.m00 || this._m01 !== e.m01 || this._m04 !== e.m04 || this._m05 !== e.m05 || this._m12 !== e.m12 || this._m13 !== e.m13 || this._w !== t._contentSize.width || this._h !== t._contentSize.height) {
+this._m00 = e.m00;
+this._m01 = e.m01;
+this._m04 = e.m04;
+this._m05 = e.m05;
+this._m12 = e.m12;
+this._m13 = e.m13;
+this._w = t._contentSize.width;
+this._h = t._contentSize.height;
+var i = cc.view._scaleX, n = cc.view._scaleY, r = cc.view._viewportRect, s = cc.view._devicePixelRatio;
+p.x = -t._anchorPoint.x * this._w;
+p.y = -t._anchorPoint.y * this._h;
+f.mat4.translate(e, e, p);
+var o = void 0;
+cc.Camera.findCamera(t).getWorldToScreenMatrix2D(this._cameraMat);
+o = this._cameraMat;
+f.mat4.mul(o, o, e);
+i /= s;
+n /= s;
+var a = cc.game.container, c = o.m00 * i, l = o.m01, h = o.m04, u = o.m05 * n, _ = a && a.style.paddingLeft && parseInt(a.style.paddingLeft);
+_ += r.x / s + (this.offsetXXX || 0);
+var m = a && a.style.paddingBottom && parseInt(a.style.paddingBottom);
+m += r.y / s + (this.offsetYYY || 0);
+var v = o.m12 * i + _, y = o.m13 * n + m;
+if (d.zoomInvalid) {
+this.setSize(t.width * c, t.height * u);
+c = 1;
+u = 1;
+}
+var g = this._elem, x = "matrix(" + c + "," + -l + "," + -h + "," + u + "," + v + "," + -y + ")";
+g.style.transform = x;
+g.style["-webkit-transform"] = x;
+g.style["transform-origin"] = "0px 100% 0px";
+g.style["-webkit-transform-origin"] = "0px 100% 0px";
+}
+},
+_updateInputType: function() {
+var t = this._delegate, e = t.inputMode, i = t.inputFlag, n = t.returnType, r = this._elem;
+if (this._inputMode !== e || this._inputFlag !== i || this._returnType !== n) {
+this._inputMode = e;
+this._inputFlag = i;
+this._returnType = n;
+if (this._isTextArea) {
+var s = "none";
+i === u.INITIAL_CAPS_ALL_CHARACTERS ? s = "uppercase" : i === u.INITIAL_CAPS_WORD && (s = "capitalize");
+r.style.textTransform = s;
+} else if (i !== u.PASSWORD) {
+var o = r.type;
+if (e === h.EMAIL_ADDR) o = "email"; else if (e === h.NUMERIC || e === h.DECIMAL) o = "number"; else if (e === h.PHONE_NUMBER) {
+o = "number";
+r.pattern = "[0-9]*";
+} else if (e === h.URL) o = "url"; else {
+o = "text";
+n === _.SEARCH && (o = "search");
+}
+r.type = o;
+var a = "none";
+i === u.INITIAL_CAPS_ALL_CHARACTERS ? a = "uppercase" : i === u.INITIAL_CAPS_WORD && (a = "capitalize");
+r.style.textTransform = a;
+} else r.type = "password";
+}
+},
+_updateMaxLength: function() {
+var t = this._delegate.maxLength;
+t < 0 && (t = 65535);
+this._elem.maxLength = t;
+},
+_initStyleSheet: function() {
+var t = this._elem;
+t.style.display = "none";
+t.style.border = 0;
+t.style.background = "transparent";
+t.style.width = "100%";
+t.style.height = "100%";
+t.style.active = 0;
+t.style.outline = "medium";
+t.style.padding = "0";
+t.style.textTransform = "uppercase";
+t.style.position = "absolute";
+t.style.bottom = "0px";
+t.style.left = "2px";
+t.className = "cocosEditBox";
+t.id = this._domId;
+if (this._isTextArea) {
+t.style.resize = "none";
+t.style.overflow_y = "scroll";
+} else {
+t.type = "text";
+t.style["-moz-appearance"] = "textfield";
+}
+this._placeholderStyleSheet = document.createElement("style");
+},
+_updateStyleSheet: function() {
+var t = this._delegate, e = this._elem;
+e.value = t.string;
+e.placeholder = "";
+this._updateTextLabel(t.textLabel);
+this._updatePlaceholderLabel(t.placeholderLabel);
+},
+_updateTextLabel: function(t) {
+if (t) {
+var e = t.font;
+e = !e || e instanceof cc.BitmapFont ? t.fontFamily : e._fontFamily;
+var i = t.fontSize * t.node.scaleY;
+if (this._textLabelFont !== e || this._textLabelFontSize !== i || this._textLabelFontColor !== t.fontColor || this._textLabelAlign !== t.horizontalAlign) {
+this._textLabelFont = e;
+this._textLabelFontSize = i;
+this._textLabelFontColor = t.fontColor;
+this._textLabelAlign = t.horizontalAlign;
+var n = this._elem;
+n.style.fontSize = i + "px";
+n.style.color = t.node.color.toCSS("rgba");
+n.style.opacity = t.node.opacity.toString();
+cc.sys.OS_ANDROID && cc.sys.isMobile && (t.string = n.value);
+n.style.fontFamily = e;
+switch (t.horizontalAlign) {
+case o.HorizontalAlign.LEFT:
+n.style.textAlign = "left";
+break;
+
+case o.HorizontalAlign.CENTER:
+n.style.textAlign = "center";
+break;
+
+case o.HorizontalAlign.RIGHT:
+n.style.textAlign = "right";
+}
+"0" == t.node.opacity.toString() && cc.sys.os === cc.sys.OS_IOS && cc.sys.isMobile && (n.style.fontSize = "0px");
+}
+}
+},
+_updatePlaceholderLabel: function(t) {
+if (t) {
+var e = t.font;
+e = !e || e instanceof cc.BitmapFont ? t.fontFamily : t.font._fontFamily;
+var i = t.fontSize * t.node.scaleY;
+if (this._placeholderLabelFont !== e || this._placeholderLabelFontSize !== i || this._placeholderLabelFontColor !== t.fontColor || this._placeholderLabelAlign !== t.horizontalAlign || this._placeholderLineHeight !== t.fontSize) {
+this._placeholderLabelFont = e;
+this._placeholderLabelFontSize = i;
+this._placeholderLabelFontColor = t.fontColor;
+this._placeholderLabelAlign = t.horizontalAlign;
+this._placeholderLineHeight = t.fontSize;
+var n = this._placeholderStyleSheet, r = t.node.color.toCSS("rgba"), s = t.fontSize, a = void 0;
+switch (t.horizontalAlign) {
+case o.HorizontalAlign.LEFT:
+a = "left";
+break;
+
+case o.HorizontalAlign.CENTER:
+a = "center";
+break;
+
+case o.HorizontalAlign.RIGHT:
+a = "right";
+}
+n.innerHTML = "#" + this._domId + "::-webkit-input-placeholder,#" + this._domId + "::-moz-placeholder,#" + this._domId + ":-ms-input-placeholder{text-transform: initial; font-family: " + e + "; font-size: " + i + "px; color: " + r + "; line-height: " + s + "px; text-align: " + a + ";}";
+cc.sys.browserType === cc.sys.BROWSER_TYPE_EDGE && (n.innerHTML += "#" + this._domId + "::-ms-clear{display: none;}");
+}
+}
+},
+_registerEventListeners: function() {
+var t = this, e = this._elem, i = !1, n = this._eventListeners;
+n.compositionStart = function() {
+i = !0;
+};
+n.compositionEnd = function() {
+i = !1;
+t._delegate.editBoxTextChanged(e.value);
+};
+n.onInput = function() {
+i || t._delegate.editBoxTextChanged(e.value);
+};
+n.onClick = function(e) {
+t._editing && cc.sys.isMobile && t._adjustWindowScroll();
+};
+n.onKeydown = function(i) {
+if (i.keyCode === r.KEY.enter) {
+i.stopPropagation();
+t._delegate.editBoxEditingReturn();
+t._isTextArea || e.blur();
+} else if (i.keyCode === r.KEY.tab) {
+i.stopPropagation();
+i.preventDefault();
+a.next(t);
+}
+};
+n.onKeyup = function(i) {
+t._delegate.editBoxTextChanged(e.value);
+};
+n.onBlur = function() {
+t._editing = !1;
+v = null;
+t._hideDom();
+t._delegate.editBoxEditingDidEnded();
+};
+e.addEventListener("compositionstart", n.compositionStart);
+e.addEventListener("compositionend", n.compositionEnd);
+e.addEventListener("input", n.onInput);
+e.addEventListener("keydown", n.onKeydown);
+e.addEventListener("keyup", n.onKeyup);
+e.addEventListener("blur", n.onBlur);
+e.addEventListener("touchstart", n.onClick);
+},
+_removeEventListeners: function() {
+var t = this._elem, e = this._eventListeners;
+t.removeEventListener("compositionstart", e.compositionStart);
+t.removeEventListener("compositionend", e.compositionEnd);
+t.removeEventListener("input", e.onInput);
+t.removeEventListener("keydown", e.onKeydown);
+t.removeEventListener("keyup", e.onKeyup);
+t.removeEventListener("blur", e.onBlur);
+t.removeEventListener("touchstart", e.onClick);
+e.compositionStart = null;
+e.compositionEnd = null;
+e.onInput = null;
+e.onKeydown = null;
+e.onKeyup = null;
+e.onBlur = null;
+e.onClick = null;
+}
+});
+}), {
+"../../platform/CCMacro": 206,
+"../../platform/utils": 225,
+"../CCLabel": 97,
+"./tabIndexUtil": 123,
+"./types": 124
+} ],
+123: [ (function(t, e, i) {
+"use strict";
+e.exports = {
+_tabIndexList: [],
+add: function(t) {
+var e = this._tabIndexList;
+-1 === e.indexOf(t) && e.push(t);
+},
+remove: function(t) {
+var e = this._tabIndexList, i = e.indexOf(t);
+-1 !== i && e.splice(i, 1);
+},
+resort: function() {
+this._tabIndexList.sort((function(t, e) {
+return t._delegate._tabIndex - e._delegate._tabIndex;
+}));
+},
+next: function(t) {
+var e = this._tabIndexList, i = e.indexOf(t);
+t.setFocus(!1);
+if (-1 !== i) {
+var n = e[i + 1];
+n && n._delegate._tabIndex >= 0 && n.setFocus(!0);
+}
+}
+};
+}), {} ],
+124: [ (function(t, e, i) {
+"use strict";
+var n = cc.Enum({
+DEFAULT: 0,
+DONE: 1,
+SEND: 2,
+SEARCH: 3,
+GO: 4,
+NEXT: 5
+}), r = cc.Enum({
+ANY: 0,
+EMAIL_ADDR: 1,
+NUMERIC: 2,
+PHONE_NUMBER: 3,
+URL: 4,
+DECIMAL: 5,
+SINGLE_LINE: 6
+}), s = cc.Enum({
+PASSWORD: 0,
+SENSITIVE: 1,
+INITIAL_CAPS_WORD: 2,
+INITIAL_CAPS_SENTENCE: 3,
+INITIAL_CAPS_ALL_CHARACTERS: 4,
+DEFAULT: 5
+});
+e.exports = {
+KeyboardReturnType: n,
+InputMode: r,
+InputFlag: s
+};
+}), {} ],
+125: [ (function(t, e, i) {
+"use strict";
+t("./CCComponent");
+t("./CCComponentEventHandler");
+t("./missing-script");
+var n = [ t("./CCSprite"), t("./CCWidget"), t("./CCCanvas"), t("./CCAudioSource"), t("./CCAnimation"), t("./CCButton"), t("./CCLabel"), t("./CCProgressBar"), t("./CCMask"), t("./CCScrollBar"), t("./CCScrollView"), t("./CCPageViewIndicator"), t("./CCPageView"), t("./CCSlider"), t("./CCLayout"), t("./editbox/CCEditBox"), t("./CCLabelOutline"), t("./CCLabelShadow"), t("./CCRichText"), t("./CCToggleContainer"), t("./CCToggleGroup"), t("./CCToggle"), t("./CCBlockInputEvents"), t("./CCMotionStreak"), t("./WXSubContextView"), t("./SwanSubContextView") ];
+e.exports = n;
+}), {
+"./CCAnimation": 90,
+"./CCAudioSource": 91,
+"./CCBlockInputEvents": 92,
+"./CCButton": 93,
+"./CCCanvas": 94,
+"./CCComponent": 95,
+"./CCComponentEventHandler": 96,
+"./CCLabel": 97,
+"./CCLabelOutline": 98,
+"./CCLabelShadow": 99,
+"./CCLayout": 100,
+"./CCMask": 101,
+"./CCMotionStreak": 102,
+"./CCPageView": 103,
+"./CCPageViewIndicator": 104,
+"./CCProgressBar": 105,
+"./CCRichText": 107,
+"./CCScrollBar": 108,
+"./CCScrollView": 109,
+"./CCSlider": 110,
+"./CCSprite": 111,
+"./CCToggle": 113,
+"./CCToggleContainer": 114,
+"./CCToggleGroup": 115,
+"./CCWidget": 117,
+"./SwanSubContextView": 118,
+"./WXSubContextView": 119,
+"./editbox/CCEditBox": 120,
+"./missing-script": 126
+} ],
+126: [ (function(t, e, i) {
+"use strict";
+var n = cc.js, r = t("../utils/misc").BUILTIN_CLASSID_RE, s = cc.Class({
+name: "cc.MissingClass",
+properties: {
+_$erialized: {
+default: null,
+visible: !1,
+editorOnly: !0
+}
+}
+}), o = cc.Class({
+name: "cc.MissingScript",
+extends: cc.Component,
+editor: {
+inspector: "packages://inspector/inspectors/comps/missing-script.js"
+},
+properties: {
+compiled: {
+default: !1,
+serializable: !1
+},
+_$erialized: {
+default: null,
+visible: !1,
+editorOnly: !0
+}
+},
+ctor: !1,
+statics: {
+safeFindClass: function(t, e) {
+var i = n._getClassById(t);
+if (i) return i;
+if (t) {
+cc.deserialize.reportMissingClass(t);
+return o.getMissingWrapper(t, e);
+}
+return null;
+},
+getMissingWrapper: function(t, e) {
+return e.node && (/^[0-9a-zA-Z+/]{23}$/.test(t) || r.test(t)) ? o : s;
+}
+},
+onLoad: function() {
+cc.warnID(4600, this.node.name);
+}
+});
+cc._MissingScript = e.exports = o;
+}), {
+"../utils/misc": 297
+} ],
+127: [ (function(t, e, i) {
+"use strict";
+var n = cc.js;
+t("../event/event");
+var r = function(t, e) {
+cc.Event.call(this, cc.Event.MOUSE, e);
+this._eventType = t;
+this._button = 0;
+this._x = 0;
+this._y = 0;
+this._prevX = 0;
+this._prevY = 0;
+this._scrollX = 0;
+this._scrollY = 0;
+};
+n.extend(r, cc.Event);
+var s = r.prototype;
+s.setScrollData = function(t, e) {
+this._scrollX = t;
+this._scrollY = e;
+};
+s.getScrollX = function() {
+return this._scrollX;
+};
+s.getScrollY = function() {
+return this._scrollY;
+};
+s.setLocation = function(t, e) {
+this._x = t;
+this._y = e;
+};
+s.getLocation = function() {
+return cc.v2(this._x, this._y);
+};
+s.getLocationInView = function() {
+return cc.v2(this._x, cc.view._designResolutionSize.height - this._y);
+};
+s._setPrevCursor = function(t, e) {
+this._prevX = t;
+this._prevY = e;
+};
+s.getPreviousLocation = function() {
+return cc.v2(this._prevX, this._prevY);
+};
+s.getDelta = function() {
+return cc.v2(this._x - this._prevX, this._y - this._prevY);
+};
+s.getDeltaX = function() {
+return this._x - this._prevX;
+};
+s.getDeltaY = function() {
+return this._y - this._prevY;
+};
+s.setButton = function(t) {
+this._button = t;
+};
+s.getButton = function() {
+return this._button;
+};
+s.getLocationX = function() {
+return this._x;
+};
+s.getLocationY = function() {
+return this._y;
+};
+r.NONE = 0;
+r.DOWN = 1;
+r.UP = 2;
+r.MOVE = 3;
+r.SCROLL = 4;
+r.BUTTON_LEFT = 0;
+r.BUTTON_RIGHT = 2;
+r.BUTTON_MIDDLE = 1;
+r.BUTTON_4 = 3;
+r.BUTTON_5 = 4;
+r.BUTTON_6 = 5;
+r.BUTTON_7 = 6;
+r.BUTTON_8 = 7;
+var o = function(t, e) {
+cc.Event.call(this, cc.Event.TOUCH, e);
+this._eventCode = 0;
+this._touches = t || [];
+this.touch = null;
+this.currentTouch = null;
+};
+n.extend(o, cc.Event);
+(s = o.prototype).getEventCode = function() {
+return this._eventCode;
+};
+s.getTouches = function() {
+return this._touches;
+};
+s._setEventCode = function(t) {
+this._eventCode = t;
+};
+s._setTouches = function(t) {
+this._touches = t;
+};
+s.setLocation = function(t, e) {
+this.touch && this.touch.setTouchInfo(this.touch.getID(), t, e);
+};
+s.getLocation = function() {
+return this.touch ? this.touch.getLocation() : cc.v2();
+};
+s.getLocationInView = function() {
+return this.touch ? this.touch.getLocationInView() : cc.v2();
+};
+s.getPreviousLocation = function() {
+return this.touch ? this.touch.getPreviousLocation() : cc.v2();
+};
+s.getStartLocation = function() {
+return this.touch ? this.touch.getStartLocation() : cc.v2();
+};
+s.getID = function() {
+return this.touch ? this.touch.getID() : null;
+};
+s.getDelta = function() {
+return this.touch ? this.touch.getDelta() : cc.v2();
+};
+s.getDeltaX = function() {
+return this.touch ? this.touch.getDelta().x : 0;
+};
+s.getDeltaY = function() {
+return this.touch ? this.touch.getDelta().y : 0;
+};
+s.getLocationX = function() {
+return this.touch ? this.touch.getLocationX() : 0;
+};
+s.getLocationY = function() {
+return this.touch ? this.touch.getLocationY() : 0;
+};
+o.MAX_TOUCHES = 5;
+o.BEGAN = 0;
+o.MOVED = 1;
+o.ENDED = 2;
+o.CANCELED = 3;
+var a = function(t, e) {
+cc.Event.call(this, cc.Event.ACCELERATION, e);
+this.acc = t;
+};
+n.extend(a, cc.Event);
+var c = function(t, e, i) {
+cc.Event.call(this, cc.Event.KEYBOARD, i);
+this.keyCode = t;
+this.isPressed = e;
+};
+n.extend(c, cc.Event);
+cc.Event.EventMouse = r;
+cc.Event.EventTouch = o;
+cc.Event.EventAcceleration = a;
+cc.Event.EventKeyboard = c;
+e.exports = cc.Event;
+}), {
+"../event/event": 134
+} ],
+128: [ (function(t, e, i) {
+"use strict";
+var n = t("../platform/js");
+cc.EventListener = function(t, e, i) {
+this._onEvent = i;
+this._type = t || 0;
+this._listenerID = e || "";
+this._registered = !1;
+this._fixedPriority = 0;
+this._node = null;
+this._target = null;
+this._paused = !0;
+this._isEnabled = !0;
+};
+cc.EventListener.prototype = {
+constructor: cc.EventListener,
+_setPaused: function(t) {
+this._paused = t;
+},
+_isPaused: function() {
+return this._paused;
+},
+_setRegistered: function(t) {
+this._registered = t;
+},
+_isRegistered: function() {
+return this._registered;
+},
+_getType: function() {
+return this._type;
+},
+_getListenerID: function() {
+return this._listenerID;
+},
+_setFixedPriority: function(t) {
+this._fixedPriority = t;
+},
+_getFixedPriority: function() {
+return this._fixedPriority;
+},
+_setSceneGraphPriority: function(t) {
+this._target = t;
+this._node = t;
+},
+_getSceneGraphPriority: function() {
+return this._node;
+},
+checkAvailable: function() {
+return null !== this._onEvent;
+},
+clone: function() {
+return null;
+},
+setEnabled: function(t) {
+this._isEnabled = t;
+},
+isEnabled: function() {
+return this._isEnabled;
+},
+retain: function() {},
+release: function() {}
+};
+cc.EventListener.UNKNOWN = 0;
+cc.EventListener.TOUCH_ONE_BY_ONE = 1;
+cc.EventListener.TOUCH_ALL_AT_ONCE = 2;
+cc.EventListener.KEYBOARD = 3;
+cc.EventListener.MOUSE = 4;
+cc.EventListener.ACCELERATION = 6;
+cc.EventListener.CUSTOM = 8;
+var r = cc.EventListener.ListenerID = {
+MOUSE: "__cc_mouse",
+TOUCH_ONE_BY_ONE: "__cc_touch_one_by_one",
+TOUCH_ALL_AT_ONCE: "__cc_touch_all_at_once",
+KEYBOARD: "__cc_keyboard",
+ACCELERATION: "__cc_acceleration"
+}, s = function(t, e) {
+this._onCustomEvent = e;
+cc.EventListener.call(this, cc.EventListener.CUSTOM, t, this._callback);
+};
+n.extend(s, cc.EventListener);
+n.mixin(s.prototype, {
+_onCustomEvent: null,
+_callback: function(t) {
+null !== this._onCustomEvent && this._onCustomEvent(t);
+},
+checkAvailable: function() {
+return cc.EventListener.prototype.checkAvailable.call(this) && null !== this._onCustomEvent;
+},
+clone: function() {
+return new s(this._listenerID, this._onCustomEvent);
+}
+});
+var o = function() {
+cc.EventListener.call(this, cc.EventListener.MOUSE, r.MOUSE, this._callback);
+};
+n.extend(o, cc.EventListener);
+n.mixin(o.prototype, {
+onMouseDown: null,
+onMouseUp: null,
+onMouseMove: null,
+onMouseScroll: null,
+_callback: function(t) {
+var e = cc.Event.EventMouse;
+switch (t._eventType) {
+case e.DOWN:
+this.onMouseDown && this.onMouseDown(t);
+break;
+
+case e.UP:
+this.onMouseUp && this.onMouseUp(t);
+break;
+
+case e.MOVE:
+this.onMouseMove && this.onMouseMove(t);
+break;
+
+case e.SCROLL:
+this.onMouseScroll && this.onMouseScroll(t);
+}
+},
+clone: function() {
+var t = new o();
+t.onMouseDown = this.onMouseDown;
+t.onMouseUp = this.onMouseUp;
+t.onMouseMove = this.onMouseMove;
+t.onMouseScroll = this.onMouseScroll;
+return t;
+},
+checkAvailable: function() {
+return !0;
+}
+});
+var a = function() {
+cc.EventListener.call(this, cc.EventListener.TOUCH_ONE_BY_ONE, r.TOUCH_ONE_BY_ONE, null);
+this._claimedTouches = [];
+};
+n.extend(a, cc.EventListener);
+n.mixin(a.prototype, {
+constructor: a,
+_claimedTouches: null,
+swallowTouches: !1,
+onTouchBegan: null,
+onTouchMoved: null,
+onTouchEnded: null,
+onTouchCancelled: null,
+setSwallowTouches: function(t) {
+this.swallowTouches = t;
+},
+isSwallowTouches: function() {
+return this.swallowTouches;
+},
+clone: function() {
+var t = new a();
+t.onTouchBegan = this.onTouchBegan;
+t.onTouchMoved = this.onTouchMoved;
+t.onTouchEnded = this.onTouchEnded;
+t.onTouchCancelled = this.onTouchCancelled;
+t.swallowTouches = this.swallowTouches;
+return t;
+},
+checkAvailable: function() {
+if (!this.onTouchBegan) {
+cc.logID(1801);
+return !1;
+}
+return !0;
+}
+});
+var c = function() {
+cc.EventListener.call(this, cc.EventListener.TOUCH_ALL_AT_ONCE, r.TOUCH_ALL_AT_ONCE, null);
+};
+n.extend(c, cc.EventListener);
+n.mixin(c.prototype, {
+constructor: c,
+onTouchesBegan: null,
+onTouchesMoved: null,
+onTouchesEnded: null,
+onTouchesCancelled: null,
+clone: function() {
+var t = new c();
+t.onTouchesBegan = this.onTouchesBegan;
+t.onTouchesMoved = this.onTouchesMoved;
+t.onTouchesEnded = this.onTouchesEnded;
+t.onTouchesCancelled = this.onTouchesCancelled;
+return t;
+},
+checkAvailable: function() {
+if (null === this.onTouchesBegan && null === this.onTouchesMoved && null === this.onTouchesEnded && null === this.onTouchesCancelled) {
+cc.logID(1802);
+return !1;
+}
+return !0;
+}
+});
+var l = function(t) {
+this._onAccelerationEvent = t;
+cc.EventListener.call(this, cc.EventListener.ACCELERATION, r.ACCELERATION, this._callback);
+};
+n.extend(l, cc.EventListener);
+n.mixin(l.prototype, {
+constructor: l,
+_onAccelerationEvent: null,
+_callback: function(t) {
+this._onAccelerationEvent(t.acc, t);
+},
+checkAvailable: function() {
+cc.assertID(this._onAccelerationEvent, 1803);
+return !0;
+},
+clone: function() {
+return new l(this._onAccelerationEvent);
+}
+});
+var h = function() {
+cc.EventListener.call(this, cc.EventListener.KEYBOARD, r.KEYBOARD, this._callback);
+};
+n.extend(h, cc.EventListener);
+n.mixin(h.prototype, {
+constructor: h,
+onKeyPressed: null,
+onKeyReleased: null,
+_callback: function(t) {
+t.isPressed ? this.onKeyPressed && this.onKeyPressed(t.keyCode, t) : this.onKeyReleased && this.onKeyReleased(t.keyCode, t);
+},
+clone: function() {
+var t = new h();
+t.onKeyPressed = this.onKeyPressed;
+t.onKeyReleased = this.onKeyReleased;
+return t;
+},
+checkAvailable: function() {
+if (null === this.onKeyPressed && null === this.onKeyReleased) {
+cc.logID(1800);
+return !1;
+}
+return !0;
+}
+});
+cc.EventListener.create = function(t) {
+cc.assertID(t && t.event, 1900);
+var e = t.event;
+delete t.event;
+var i = null;
+if (e === cc.EventListener.TOUCH_ONE_BY_ONE) i = new a(); else if (e === cc.EventListener.TOUCH_ALL_AT_ONCE) i = new c(); else if (e === cc.EventListener.MOUSE) i = new o(); else if (e === cc.EventListener.CUSTOM) {
+i = new s(t.eventName, t.callback);
+delete t.eventName;
+delete t.callback;
+} else if (e === cc.EventListener.KEYBOARD) i = new h(); else if (e === cc.EventListener.ACCELERATION) {
+i = new l(t.callback);
+delete t.callback;
+}
+for (var n in t) i[n] = t[n];
+return i;
+};
+e.exports = cc.EventListener;
+}), {
+"../platform/js": 221
+} ],
+129: [ (function(t, e, i) {
+"use strict";
+var n = t("../platform/js");
+t("./CCEventListener");
+var r = cc.EventListener.ListenerID, s = function() {
+this._fixedListeners = [];
+this._sceneGraphListeners = [];
+this.gt0Index = 0;
+};
+s.prototype = {
+constructor: s,
+size: function() {
+return this._fixedListeners.length + this._sceneGraphListeners.length;
+},
+empty: function() {
+return 0 === this._fixedListeners.length && 0 === this._sceneGraphListeners.length;
+},
+push: function(t) {
+0 === t._getFixedPriority() ? this._sceneGraphListeners.push(t) : this._fixedListeners.push(t);
+},
+clearSceneGraphListeners: function() {
+this._sceneGraphListeners.length = 0;
+},
+clearFixedListeners: function() {
+this._fixedListeners.length = 0;
+},
+clear: function() {
+this._sceneGraphListeners.length = 0;
+this._fixedListeners.length = 0;
+},
+getFixedPriorityListeners: function() {
+return this._fixedListeners;
+},
+getSceneGraphPriorityListeners: function() {
+return this._sceneGraphListeners;
+}
+};
+var o = function(t) {
+var e = cc.Event, i = t.type;
+if (i === e.ACCELERATION) return r.ACCELERATION;
+if (i === e.KEYBOARD) return r.KEYBOARD;
+if (i.startsWith(e.MOUSE)) return r.MOUSE;
+i.startsWith(e.TOUCH) && cc.logID(2e3);
+return "";
+}, a = {
+DIRTY_NONE: 0,
+DIRTY_FIXED_PRIORITY: 1,
+DIRTY_SCENE_GRAPH_PRIORITY: 2,
+DIRTY_ALL: 3,
+_listenersMap: {},
+_priorityDirtyFlagMap: {},
+_nodeListenersMap: {},
+_toAddedListeners: [],
+_toRemovedListeners: [],
+_dirtyListeners: {},
+_inDispatch: 0,
+_isEnabled: !1,
+_internalCustomListenerIDs: [],
+_setDirtyForNode: function(t) {
+var e = this._nodeListenersMap[t._id];
+if (void 0 !== e) for (var i = 0, n = e.length; i < n; i++) {
+var r = e[i]._getListenerID();
+null == this._dirtyListeners[r] && (this._dirtyListeners[r] = !0);
+}
+if (t.getChildren) {
+var s = t.getChildren(), o = 0;
+for (n = s ? s.length : 0; o < n; o++) this._setDirtyForNode(s[o]);
+}
+},
+pauseTarget: function(t, e) {
+if (t instanceof cc._BaseNode) {
+var i, n, r = this._nodeListenersMap[t._id];
+if (r) for (i = 0, n = r.length; i < n; i++) r[i]._setPaused(!0);
+if (!0 === e) {
+var s = t.getChildren();
+for (i = 0, n = s ? s.length : 0; i < n; i++) this.pauseTarget(s[i], !0);
+}
+} else cc.warnID(3506);
+},
+resumeTarget: function(t, e) {
+if (t instanceof cc._BaseNode) {
+var i, n, r = this._nodeListenersMap[t._id];
+if (r) for (i = 0, n = r.length; i < n; i++) r[i]._setPaused(!1);
+this._setDirtyForNode(t);
+if (!0 === e && t.getChildren) {
+var s = t.getChildren();
+for (i = 0, n = s ? s.length : 0; i < n; i++) this.resumeTarget(s[i], !0);
+}
+} else cc.warnID(3506);
+},
+_addListener: function(t) {
+0 === this._inDispatch ? this._forceAddEventListener(t) : this._toAddedListeners.push(t);
+},
+_forceAddEventListener: function(t) {
+var e = t._getListenerID(), i = this._listenersMap[e];
+if (!i) {
+i = new s();
+this._listenersMap[e] = i;
+}
+i.push(t);
+if (0 === t._getFixedPriority()) {
+this._setDirty(e, this.DIRTY_SCENE_GRAPH_PRIORITY);
+var n = t._getSceneGraphPriority();
+null === n && cc.logID(3507);
+this._associateNodeAndEventListener(n, t);
+n.activeInHierarchy && this.resumeTarget(n);
+} else this._setDirty(e, this.DIRTY_FIXED_PRIORITY);
+},
+_getListeners: function(t) {
+return this._listenersMap[t];
+},
+_updateDirtyFlagForSceneGraph: function() {
+var t = this._dirtyListeners;
+for (var e in t) this._setDirty(e, this.DIRTY_SCENE_GRAPH_PRIORITY);
+this._dirtyListeners = {};
+},
+_removeAllListenersInVector: function(t) {
+if (t) for (var e, i = t.length - 1; i >= 0; i--) {
+(e = t[i])._setRegistered(!1);
+if (null != e._getSceneGraphPriority()) {
+this._dissociateNodeAndEventListener(e._getSceneGraphPriority(), e);
+e._setSceneGraphPriority(null);
+}
+0 === this._inDispatch && cc.js.array.removeAt(t, i);
+}
+},
+_removeListenersForListenerID: function(t) {
+var e, i = this._listenersMap[t];
+if (i) {
+var n = i.getFixedPriorityListeners(), r = i.getSceneGraphPriorityListeners();
+this._removeAllListenersInVector(r);
+this._removeAllListenersInVector(n);
+delete this._priorityDirtyFlagMap[t];
+if (!this._inDispatch) {
+i.clear();
+delete this._listenersMap[t];
+}
+}
+var s, o = this._toAddedListeners;
+for (e = o.length - 1; e >= 0; e--) (s = o[e]) && s._getListenerID() === t && cc.js.array.removeAt(o, e);
+},
+_sortEventListeners: function(t) {
+var e = this.DIRTY_NONE, i = this._priorityDirtyFlagMap;
+i[t] && (e = i[t]);
+if (e !== this.DIRTY_NONE) {
+i[t] = this.DIRTY_NONE;
+e & this.DIRTY_FIXED_PRIORITY && this._sortListenersOfFixedPriority(t);
+if (e & this.DIRTY_SCENE_GRAPH_PRIORITY) {
+cc.director.getScene() && this._sortListenersOfSceneGraphPriority(t);
+}
+}
+},
+_sortListenersOfSceneGraphPriority: function(t) {
+var e = this._getListeners(t);
+if (e) {
+var i = e.getSceneGraphPriorityListeners();
+i && 0 !== i.length && e.getSceneGraphPriorityListeners().sort(this._sortEventListenersOfSceneGraphPriorityDes);
+}
+},
+_sortEventListenersOfSceneGraphPriorityDes: function(t, e) {
+var i = t._getSceneGraphPriority(), n = e._getSceneGraphPriority();
+if (!(e && n && n._activeInHierarchy && null !== n._parent)) return -1;
+if (!t || !i || !i._activeInHierarchy || null === i._parent) return 1;
+for (var r = i, s = n, o = !1; r._parent._id !== s._parent._id; ) {
+r = null === r._parent._parent ? (o = !0) && n : r._parent;
+s = null === s._parent._parent ? (o = !0) && i : s._parent;
+}
+if (r._id === s._id) {
+if (r._id === n._id) return -1;
+if (r._id === i._id) return 1;
+}
+return o ? r._localZOrder - s._localZOrder : s._localZOrder - r._localZOrder;
+},
+_sortListenersOfFixedPriority: function(t) {
+var e = this._listenersMap[t];
+if (e) {
+var i = e.getFixedPriorityListeners();
+if (i && 0 !== i.length) {
+i.sort(this._sortListenersOfFixedPriorityAsc);
+for (var n = 0, r = i.length; n < r && !(i[n]._getFixedPriority() >= 0); ) ++n;
+e.gt0Index = n;
+}
+}
+},
+_sortListenersOfFixedPriorityAsc: function(t, e) {
+return t._getFixedPriority() - e._getFixedPriority();
+},
+_onUpdateListeners: function(t) {
+var e, i, n, r = t.getFixedPriorityListeners(), s = t.getSceneGraphPriorityListeners(), o = this._toRemovedListeners;
+if (s) for (e = s.length - 1; e >= 0; e--) if (!(i = s[e])._isRegistered()) {
+cc.js.array.removeAt(s, e);
+-1 !== (n = o.indexOf(i)) && o.splice(n, 1);
+}
+if (r) for (e = r.length - 1; e >= 0; e--) if (!(i = r[e])._isRegistered()) {
+cc.js.array.removeAt(r, e);
+-1 !== (n = o.indexOf(i)) && o.splice(n, 1);
+}
+s && 0 === s.length && t.clearSceneGraphListeners();
+r && 0 === r.length && t.clearFixedListeners();
+},
+frameUpdateListeners: function() {
+var t = this._listenersMap, e = this._priorityDirtyFlagMap;
+for (var i in t) if (t[i].empty()) {
+delete e[i];
+delete t[i];
+}
+var n = this._toAddedListeners;
+if (0 !== n.length) {
+for (var r = 0, s = n.length; r < s; r++) this._forceAddEventListener(n[r]);
+n.length = 0;
+}
+0 !== this._toRemovedListeners.length && this._cleanToRemovedListeners();
+},
+_updateTouchListeners: function(t) {
+var e = this._inDispatch;
+cc.assertID(e > 0, 3508);
+if (!(e > 1)) {
+var i;
+(i = this._listenersMap[r.TOUCH_ONE_BY_ONE]) && this._onUpdateListeners(i);
+(i = this._listenersMap[r.TOUCH_ALL_AT_ONCE]) && this._onUpdateListeners(i);
+cc.assertID(1 === e, 3509);
+var n = this._toAddedListeners;
+if (0 !== n.length) {
+for (var s = 0, o = n.length; s < o; s++) this._forceAddEventListener(n[s]);
+this._toAddedListeners.length = 0;
+}
+0 !== this._toRemovedListeners.length && this._cleanToRemovedListeners();
+}
+},
+_cleanToRemovedListeners: function() {
+for (var t = this._toRemovedListeners, e = 0; e < t.length; e++) {
+var i = t[e], n = this._listenersMap[i._getListenerID()];
+if (n) {
+var r, s = n.getFixedPriorityListeners(), o = n.getSceneGraphPriorityListeners();
+o && -1 !== (r = o.indexOf(i)) && o.splice(r, 1);
+s && -1 !== (r = s.indexOf(i)) && s.splice(r, 1);
+}
+}
+t.length = 0;
+},
+_onTouchEventCallback: function(t, e) {
+if (!t._isRegistered()) return !1;
+var i = e.event, n = i.currentTouch;
+i.currentTarget = t._node;
+var r, s = !1, o = i.getEventCode(), c = cc.Event.EventTouch;
+if (o === c.BEGAN) t.onTouchBegan && (s = t.onTouchBegan(n, i)) && t._registered && t._claimedTouches.push(n); else if (t._claimedTouches.length > 0 && -1 !== (r = t._claimedTouches.indexOf(n))) {
+s = !0;
+if (o === c.MOVED && t.onTouchMoved) t.onTouchMoved(n, i); else if (o === c.ENDED) {
+t.onTouchEnded && t.onTouchEnded(n, i);
+t._registered && t._claimedTouches.splice(r, 1);
+} else if (o === c.CANCELLED) {
+t.onTouchCancelled && t.onTouchCancelled(n, i);
+t._registered && t._claimedTouches.splice(r, 1);
+}
+}
+if (i.isStopped()) {
+a._updateTouchListeners(i);
+return !0;
+}
+if (s && t.swallowTouches) {
+e.needsMutableSet && e.touches.splice(n, 1);
+return !0;
+}
+return !1;
+},
+_dispatchTouchEvent: function(t) {
+this._sortEventListeners(r.TOUCH_ONE_BY_ONE);
+this._sortEventListeners(r.TOUCH_ALL_AT_ONCE);
+var e = this._getListeners(r.TOUCH_ONE_BY_ONE), i = this._getListeners(r.TOUCH_ALL_AT_ONCE);
+if (null !== e || null !== i) {
+var n = t.getTouches(), s = cc.js.array.copy(n), o = {
+event: t,
+needsMutableSet: e && i,
+touches: s,
+selTouch: null
+};
+if (e) for (var a = 0; a < n.length; a++) {
+t.currentTouch = n[a];
+t._propagationStopped = t._propagationImmediateStopped = !1;
+this._dispatchEventToListeners(e, this._onTouchEventCallback, o);
+}
+if (i && s.length > 0) {
+this._dispatchEventToListeners(i, this._onTouchesEventCallback, {
+event: t,
+touches: s
+});
+if (t.isStopped()) return;
+}
+this._updateTouchListeners(t);
+}
+},
+_onTouchesEventCallback: function(t, e) {
+if (!t._registered) return !1;
+var i = cc.Event.EventTouch, n = e.event, r = e.touches, s = n.getEventCode();
+n.currentTarget = t._node;
+s === i.BEGAN && t.onTouchesBegan ? t.onTouchesBegan(r, n) : s === i.MOVED && t.onTouchesMoved ? t.onTouchesMoved(r, n) : s === i.ENDED && t.onTouchesEnded ? t.onTouchesEnded(r, n) : s === i.CANCELLED && t.onTouchesCancelled && t.onTouchesCancelled(r, n);
+if (n.isStopped()) {
+a._updateTouchListeners(n);
+return !0;
+}
+return !1;
+},
+_associateNodeAndEventListener: function(t, e) {
+var i = this._nodeListenersMap[t._id];
+if (!i) {
+i = [];
+this._nodeListenersMap[t._id] = i;
+}
+i.push(e);
+},
+_dissociateNodeAndEventListener: function(t, e) {
+var i = this._nodeListenersMap[t._id];
+if (i) {
+cc.js.array.remove(i, e);
+0 === i.length && delete this._nodeListenersMap[t._id];
+}
+},
+_dispatchEventToListeners: function(t, e, i) {
+var n, r, s = !1, o = t.getFixedPriorityListeners(), a = t.getSceneGraphPriorityListeners(), c = 0;
+if (o && 0 !== o.length) for (;c < t.gt0Index; ++c) if ((r = o[c]).isEnabled() && !r._isPaused() && r._isRegistered() && e(r, i)) {
+s = !0;
+break;
+}
+if (a && !s) for (n = 0; n < a.length; n++) if ((r = a[n]).isEnabled() && !r._isPaused() && r._isRegistered() && e(r, i)) {
+s = !0;
+break;
+}
+if (o && !s) for (;c < o.length; ++c) if ((r = o[c]).isEnabled() && !r._isPaused() && r._isRegistered() && e(r, i)) {
+s = !0;
+break;
+}
+},
+_setDirty: function(t, e) {
+var i = this._priorityDirtyFlagMap;
+null == i[t] ? i[t] = e : i[t] = e | i[t];
+},
+_sortNumberAsc: function(t, e) {
+return t - e;
+},
+hasEventListener: function(t) {
+return !!this._getListeners(t);
+},
+addListener: function(t, e) {
+cc.assertID(t && e, 3503);
+if (cc.js.isNumber(e) || e instanceof cc._BaseNode) {
+if (t instanceof cc.EventListener) {
+if (t._isRegistered()) {
+cc.logID(3505);
+return;
+}
+} else {
+cc.assertID(!cc.js.isNumber(e), 3504);
+t = cc.EventListener.create(t);
+}
+if (t.checkAvailable()) {
+if (cc.js.isNumber(e)) {
+if (0 === e) {
+cc.logID(3500);
+return;
+}
+t._setSceneGraphPriority(null);
+t._setFixedPriority(e);
+t._setRegistered(!0);
+t._setPaused(!1);
+this._addListener(t);
+} else {
+t._setSceneGraphPriority(e);
+t._setFixedPriority(0);
+t._setRegistered(!0);
+this._addListener(t);
+}
+return t;
+}
+} else cc.warnID(3506);
+},
+addCustomListener: function(t, e) {
+var i = new cc.EventListener.create({
+event: cc.EventListener.CUSTOM,
+eventName: t,
+callback: e
+});
+this.addListener(i, 1);
+return i;
+},
+removeListener: function(t) {
+if (null != t) {
+var e, i = this._listenersMap;
+for (var n in i) {
+var r = i[n], s = r.getFixedPriorityListeners(), o = r.getSceneGraphPriorityListeners();
+(e = this._removeListenerInVector(o, t)) ? this._setDirty(t._getListenerID(), this.DIRTY_SCENE_GRAPH_PRIORITY) : (e = this._removeListenerInVector(s, t)) && this._setDirty(t._getListenerID(), this.DIRTY_FIXED_PRIORITY);
+if (r.empty()) {
+delete this._priorityDirtyFlagMap[t._getListenerID()];
+delete i[n];
+}
+if (e) break;
+}
+if (!e) for (var a = this._toAddedListeners, c = a.length - 1; c >= 0; c--) {
+var l = a[c];
+if (l === t) {
+cc.js.array.removeAt(a, c);
+l._setRegistered(!1);
+break;
+}
+}
+}
+},
+_removeListenerInCallback: function(t, e) {
+if (null == t) return !1;
+for (var i = t.length - 1; i >= 0; i--) {
+var n = t[i];
+if (n._onCustomEvent === e || n._onEvent === e) {
+n._setRegistered(!1);
+if (null != n._getSceneGraphPriority()) {
+this._dissociateNodeAndEventListener(n._getSceneGraphPriority(), n);
+n._setSceneGraphPriority(null);
+}
+0 === this._inDispatch ? cc.js.array.removeAt(t, i) : this._toRemovedListeners.push(n);
+return !0;
+}
+}
+return !1;
+},
+_removeListenerInVector: function(t, e) {
+if (null == t) return !1;
+for (var i = t.length - 1; i >= 0; i--) {
+var n = t[i];
+if (n === e) {
+n._setRegistered(!1);
+if (null != n._getSceneGraphPriority()) {
+this._dissociateNodeAndEventListener(n._getSceneGraphPriority(), n);
+n._setSceneGraphPriority(null);
+}
+0 === this._inDispatch ? cc.js.array.removeAt(t, i) : this._toRemovedListeners.push(n);
+return !0;
+}
+}
+return !1;
+},
+removeListeners: function(t, e) {
+var i = this;
+if (cc.js.isNumber(t) || t instanceof cc._BaseNode) if (void 0 !== t._id) {
+var n, s = i._nodeListenersMap[t._id];
+if (s) {
+var o = cc.js.array.copy(s);
+for (n = 0; n < o.length; n++) i.removeListener(o[n]);
+delete i._nodeListenersMap[t._id];
+}
+var a = i._toAddedListeners;
+for (n = 0; n < a.length; ) {
+var c = a[n];
+if (c._getSceneGraphPriority() === t) {
+c._setSceneGraphPriority(null);
+c._setRegistered(!1);
+a.splice(n, 1);
+} else ++n;
+}
+if (!0 === e) {
+var l, h = t.getChildren();
+for (n = 0, l = h.length; n < l; n++) i.removeListeners(h[n], !0);
+}
+} else t === cc.EventListener.TOUCH_ONE_BY_ONE ? i._removeListenersForListenerID(r.TOUCH_ONE_BY_ONE) : t === cc.EventListener.TOUCH_ALL_AT_ONCE ? i._removeListenersForListenerID(r.TOUCH_ALL_AT_ONCE) : t === cc.EventListener.MOUSE ? i._removeListenersForListenerID(r.MOUSE) : t === cc.EventListener.ACCELERATION ? i._removeListenersForListenerID(r.ACCELERATION) : t === cc.EventListener.KEYBOARD ? i._removeListenersForListenerID(r.KEYBOARD) : cc.logID(3501); else cc.warnID(3506);
+},
+removeCustomListeners: function(t) {
+this._removeListenersForListenerID(t);
+},
+removeAllListeners: function() {
+var t = this._listenersMap, e = this._internalCustomListenerIDs;
+for (var i in t) -1 === e.indexOf(i) && this._removeListenersForListenerID(i);
+},
+setPriority: function(t, e) {
+if (null != t) {
+var i = this._listenersMap;
+for (var n in i) {
+var r = i[n].getFixedPriorityListeners();
+if (r) {
+if (-1 !== r.indexOf(t)) {
+null != t._getSceneGraphPriority() && cc.logID(3502);
+if (t._getFixedPriority() !== e) {
+t._setFixedPriority(e);
+this._setDirty(t._getListenerID(), this.DIRTY_FIXED_PRIORITY);
+}
+return;
+}
+}
+}
+}
+},
+setEnabled: function(t) {
+this._isEnabled = t;
+},
+isEnabled: function() {
+return this._isEnabled;
+},
+dispatchEvent: function(t) {
+if (this._isEnabled) {
+this._updateDirtyFlagForSceneGraph();
+this._inDispatch++;
+if (t && t.getType) if (t.getType().startsWith(cc.Event.TOUCH)) {
+this._dispatchTouchEvent(t);
+this._inDispatch--;
+} else {
+var e = o(t);
+this._sortEventListeners(e);
+var i = this._listenersMap[e];
+if (null != i) {
+this._dispatchEventToListeners(i, this._onListenerCallback, t);
+this._onUpdateListeners(i);
+}
+this._inDispatch--;
+} else cc.errorID(3511);
+}
+},
+_onListenerCallback: function(t, e) {
+e.currentTarget = t._target;
+t._onEvent(e);
+return e.isStopped();
+},
+dispatchCustomEvent: function(t, e) {
+var i = new cc.Event.EventCustom(t);
+i.setUserData(e);
+this.dispatchEvent(i);
+}
+};
+n.get(cc, "eventManager", (function() {
+cc.warnID(1405, "cc.eventManager", "cc.EventTarget or cc.systemEvent");
+return a;
+}));
+e.exports = a;
+}), {
+"../platform/js": 221,
+"./CCEventListener": 128
+} ],
+130: [ (function(t, e, i) {
+"use strict";
+cc.Touch = function(t, e, i) {
+this._lastModified = 0;
+this.setTouchInfo(i, t, e);
+};
+cc.Touch.prototype = {
+constructor: cc.Touch,
+getLocation: function() {
+return cc.v2(this._point.x, this._point.y);
+},
+getLocationX: function() {
+return this._point.x;
+},
+getLocationY: function() {
+return this._point.y;
+},
+getPreviousLocation: function() {
+return cc.v2(this._prevPoint.x, this._prevPoint.y);
+},
+getStartLocation: function() {
+return cc.v2(this._startPoint.x, this._startPoint.y);
+},
+getDelta: function() {
+return this._point.sub(this._prevPoint);
+},
+getLocationInView: function() {
+return cc.v2(this._point.x, cc.view._designResolutionSize.height - this._point.y);
+},
+getPreviousLocationInView: function() {
+return cc.v2(this._prevPoint.x, cc.view._designResolutionSize.height - this._prevPoint.y);
+},
+getStartLocationInView: function() {
+return cc.v2(this._startPoint.x, cc.view._designResolutionSize.height - this._startPoint.y);
+},
+getID: function() {
+return this._id;
+},
+setTouchInfo: function(t, e, i) {
+this._prevPoint = this._point;
+this._point = cc.v2(e || 0, i || 0);
+this._id = t;
+if (!this._startPointCaptured) {
+this._startPoint = cc.v2(this._point);
+cc.view._convertPointWithScale(this._startPoint);
+this._startPointCaptured = !0;
+}
+},
+_setPoint: function(t, e) {
+if (void 0 === e) {
+this._point.x = t.x;
+this._point.y = t.y;
+} else {
+this._point.x = t;
+this._point.y = e;
+}
+},
+_setPrevPoint: function(t, e) {
+this._prevPoint = void 0 === e ? cc.v2(t.x, t.y) : cc.v2(t || 0, e || 0);
+}
+};
+}), {} ],
+131: [ (function(t, e, i) {
+"use strict";
+t("./CCEvent");
+t("./CCTouch");
+t("./CCEventListener");
+var n = t("./CCEventManager");
+e.exports = n;
+0;
+}), {
+"./CCEvent": 127,
+"./CCEventListener": 128,
+"./CCEventManager": 129,
+"./CCTouch": 130
+} ],
+132: [ (function(t, e, i) {
+"use strict";
+var n = cc.js, r = t("../platform/callbacks-invoker").CallbacksHandler;
+function s() {
+r.call(this);
+}
+n.extend(s, r);
+s.prototype.invoke = function(t, e) {
+var i = t.type, n = this._callbackTable[i];
+if (n) {
+var r = !n.isInvoking;
+n.isInvoking = !0;
+for (var s = n.callbacks, o = n.targets, a = 0, c = s.length; a < c; ++a) {
+var l = s[a];
+if (l) {
+var h = o[a] || t.currentTarget;
+l.call(h, t, e);
+if (t._propagationImmediateStopped) break;
+}
+}
+if (r) {
+n.isInvoking = !1;
+n.containCanceled && n.purgeCanceled();
+}
+}
+};
+e.exports = s;
+0;
+}), {
+"../platform/callbacks-invoker": 214
+} ],
+133: [ (function(t, e, i) {
+"use strict";
+var n = t("../platform/js"), r = t("../platform/callbacks-invoker"), s = n.array.fastRemove;
+function o() {
+r.call(this);
+}
+n.extend(o, r);
+var a = o.prototype;
+a.on = function(t, e, i) {
+if (e) {
+if (!this.hasEventListener(t, e, i)) {
+this.add(t, e, i);
+i && i.__eventTargets && i.__eventTargets.push(this);
+}
+return e;
+}
+cc.errorID(6800);
+};
+a.off = function(t, e, i) {
+if (e) {
+this.remove(t, e, i);
+i && i.__eventTargets && s(i.__eventTargets, this);
+} else {
+var n = this._callbackTable[t];
+if (!n) return;
+for (var r = n.targets, o = 0; o < r.length; ++o) {
+var a = r[o];
+a && a.__eventTargets && s(a.__eventTargets, this);
+}
+this.removeAll(t);
+}
+};
+a.targetOff = function(t) {
+this.removeAll(t);
+t && t.__eventTargets && s(t.__eventTargets, this);
+};
+a.once = function(t, e, i) {
+var n = "__ONCE_FLAG:" + t;
+if (!this.hasEventListener(n, e, i)) {
+var r = this;
+this.on(t, (function s(o, a, c, l, h) {
+r.off(t, s, i);
+r.remove(n, e, i);
+e.call(this, o, a, c, l, h);
+}), i);
+this.add(n, e, i);
+}
+};
+a.emit = r.prototype.invoke;
+a.dispatchEvent = function(t) {
+this.invoke(t.type, t);
+};
+cc.EventTarget = e.exports = o;
+}), {
+"../platform/callbacks-invoker": 214,
+"../platform/js": 221
+} ],
+134: [ (function(t, e, i) {
+"use strict";
+var n = t("../platform/js");
+cc.Event = function(t, e) {
+this.type = t;
+this.bubbles = !!e;
+this.target = null;
+this.currentTarget = null;
+this.eventPhase = 0;
+this._propagationStopped = !1;
+this._propagationImmediateStopped = !1;
+};
+cc.Event.prototype = {
+constructor: cc.Event,
+unuse: function() {
+this.type = cc.Event.NO_TYPE;
+this.target = null;
+this.currentTarget = null;
+this.eventPhase = cc.Event.NONE;
+this._propagationStopped = !1;
+this._propagationImmediateStopped = !1;
+},
+reuse: function(t, e) {
+this.type = t;
+this.bubbles = e || !1;
+},
+stopPropagation: function() {
+this._propagationStopped = !0;
+},
+stopPropagationImmediate: function() {
+this._propagationImmediateStopped = !0;
+},
+isStopped: function() {
+return this._propagationStopped || this._propagationImmediateStopped;
+},
+getCurrentTarget: function() {
+return this.currentTarget;
+},
+getType: function() {
+return this.type;
+}
+};
+cc.Event.NO_TYPE = "no_type";
+cc.Event.TOUCH = "touch";
+cc.Event.MOUSE = "mouse";
+cc.Event.KEYBOARD = "keyboard";
+cc.Event.ACCELERATION = "acceleration";
+cc.Event.NONE = 0;
+cc.Event.CAPTURING_PHASE = 1;
+cc.Event.AT_TARGET = 2;
+cc.Event.BUBBLING_PHASE = 3;
+var r = function(t, e) {
+cc.Event.call(this, t, e);
+this.detail = null;
+};
+n.extend(r, cc.Event);
+r.prototype.reset = r;
+r.prototype.setUserData = function(t) {
+this.detail = t;
+};
+r.prototype.getUserData = function() {
+return this.detail;
+};
+r.prototype.getEventName = cc.Event.prototype.getType;
+var s = new n.Pool(10);
+r.put = function(t) {
+s.put(t);
+};
+r.get = function(t, e) {
+var i = s._get();
+i ? i.reset(t, e) : i = new r(t, e);
+return i;
+};
+cc.Event.EventCustom = r;
+e.exports = cc.Event;
+}), {
+"../platform/js": 221
+} ],
+135: [ (function(t, e, i) {
+"use strict";
+t("./event");
+t("./event-listeners");
+t("./event-target");
+t("./system-event");
+}), {
+"./event": 134,
+"./event-listeners": 132,
+"./event-target": 133,
+"./system-event": 136
+} ],
+136: [ (function(t, e, i) {
+"use strict";
+var n = t("../event/event-target"), r = t("../event-manager"), s = t("../platform/CCInputManager"), o = cc.Enum({
+KEY_DOWN: "keydown",
+KEY_UP: "keyup",
+DEVICEMOTION: "devicemotion"
+}), a = null, c = null, l = cc.Class({
+name: "SystemEvent",
+extends: n,
+statics: {
+EventType: o
+},
+setAccelerometerEnabled: function(t) {
+0;
+s.setAccelerometerEnabled(t);
+},
+setAccelerometerInterval: function(t) {
+0;
+s.setAccelerometerInterval(t);
+},
+on: function(t, e, i) {
+0;
+this._super(t, e, i);
+if (t === o.KEY_DOWN || t === o.KEY_UP) {
+a || (a = cc.EventListener.create({
+event: cc.EventListener.KEYBOARD,
+onKeyPressed: function(t, e) {
+e.type = o.KEY_DOWN;
+cc.systemEvent.dispatchEvent(e);
+},
+onKeyReleased: function(t, e) {
+e.type = o.KEY_UP;
+cc.systemEvent.dispatchEvent(e);
+}
+}));
+r.hasEventListener(cc.EventListener.ListenerID.KEYBOARD) || r.addListener(a, 1);
+}
+if (t === o.DEVICEMOTION) {
+c || (c = cc.EventListener.create({
+event: cc.EventListener.ACCELERATION,
+callback: function(t, e) {
+e.type = o.DEVICEMOTION;
+cc.systemEvent.dispatchEvent(e);
+}
+}));
+r.hasEventListener(cc.EventListener.ListenerID.ACCELERATION) || r.addListener(c, 1);
+}
+},
+off: function(t, e, i) {
+0;
+this._super(t, e, i);
+if (a && (t === o.KEY_DOWN || t === o.KEY_UP)) {
+var n = this.hasEventListener(o.KEY_DOWN), s = this.hasEventListener(o.KEY_UP);
+n || s || r.removeListener(a);
+}
+c && t === o.DEVICEMOTION && r.removeListener(c);
+}
+});
+cc.SystemEvent = e.exports = l;
+cc.systemEvent = new cc.SystemEvent();
+}), {
+"../event-manager": 131,
+"../event/event-target": 133,
+"../platform/CCInputManager": 205
+} ],
+137: [ (function(t, e, i) {
+"use strict";
+var n = cc.vmath.vec3, r = cc.vmath.mat3, s = n.create(), o = n.create(), a = r.create(), c = function(t, e, i) {
+a.m00 = Math.abs(i.m00);
+a.m01 = Math.abs(i.m01);
+a.m02 = Math.abs(i.m02);
+a.m03 = Math.abs(i.m04);
+a.m04 = Math.abs(i.m05);
+a.m05 = Math.abs(i.m06);
+a.m06 = Math.abs(i.m08);
+a.m07 = Math.abs(i.m09);
+a.m08 = Math.abs(i.m10);
+n.transformMat3(t, e, a);
+};
+function l(t, e, i, r, s, o) {
+this.center = n.create(t, e, i);
+this.halfExtents = n.create(r, s, o);
+}
+var h = l.prototype;
+h.getBoundary = function(t, e) {
+n.sub(t, this.center, this.halfExtents);
+n.add(e, this.center, this.halfExtents);
+};
+h.transform = function(t, e, i, r, s) {
+s || (s = this);
+n.transformMat4(s.center, this.center, t);
+c(s.halfExtents, this.halfExtents, t);
+};
+l.create = function(t, e, i, n, r, s) {
+return new l(t, e, i, n, r, s);
+};
+l.clone = function(t) {
+return new l(t.center.x, t.center.y, t.center.z, t.halfExtents.x, t.halfExtents.y, t.halfExtents.z);
+};
+l.copy = function(t, e) {
+n.copy(t.center, e.center);
+n.copy(t.halfExtents, e.halfExtents);
+return t;
+};
+l.fromPoints = function(t, e, i) {
+n.scale(t.center, n.add(s, e, i), .5);
+n.scale(t.halfExtents, n.sub(o, i, e), .5);
+return t;
+};
+l.set = function(t, e, i, r, s, o, a) {
+n.set(t.center, e, i, r);
+n.set(t.halfExtents, s, o, a);
+return t;
+};
+e.exports = l;
+}), {} ],
+138: [ (function(t, e, i) {
+"use strict";
+i.__esModule = !0;
+cc.geomUtils = {
+Triangle: t("./triangle"),
+Aabb: t("./aabb"),
+Ray: t("./ray"),
+intersect: t("./intersect")
+};
+i.default = cc.geomUtils;
+e.exports = i.default;
+}), {
+"./aabb": 137,
+"./intersect": 139,
+"./ray": 140,
+"./triangle": 141
+} ],
+139: [ (function(t, e, i) {
+"use strict";
+var n = s(t("../../renderer/gfx")), r = s(t("../../renderer/memop/recycle-pool"));
+function s(t) {
+return t && t.__esModule ? t : {
+default: t
+};
+}
+var o = t("./aabb"), a = t("./ray"), c = t("./triangle"), l = cc.vmath.mat4, h = cc.vmath.vec3, u = {};
+u.rayAabb = (function() {
+var t = h.create(), e = h.create();
+return function(i, n) {
+var r = i.o, s = i.d, o = 1 / s.x, a = 1 / s.y, c = 1 / s.z;
+h.sub(t, n.center, n.halfExtents);
+h.add(e, n.center, n.halfExtents);
+var l = (t.x - r.x) * o, u = (e.x - r.x) * o, _ = (t.y - r.y) * a, f = (e.y - r.y) * a, d = (t.z - r.z) * c, m = (e.z - r.z) * c, p = Math.max(Math.max(Math.min(l, u), Math.min(_, f)), Math.min(d, m)), v = Math.min(Math.min(Math.max(l, u), Math.max(_, f)), Math.max(d, m));
+return v < 0 || p > v ? 0 : p;
+};
+})();
+u.rayTriangle = (function() {
+var t = h.create(0, 0, 0), e = h.create(0, 0, 0), i = h.create(0, 0, 0), n = h.create(0, 0, 0), r = h.create(0, 0, 0);
+return function(s, o) {
+h.sub(t, o.b, o.a);
+h.sub(e, o.c, o.a);
+h.cross(i, s.d, e);
+var a = h.dot(t, i);
+if (a <= 0) return 0;
+h.sub(n, s.o, o.a);
+var c = h.dot(n, i);
+if (c < 0 || c > a) return 0;
+h.cross(r, n, t);
+var l = h.dot(s.d, r);
+if (l < 0 || c + l > a) return 0;
+var u = h.dot(e, r) / a;
+return u < 0 ? 0 : u;
+};
+})();
+u.rayMesh = (function() {
+var t = c.create(), e = Infinity, i = {
+5120: "getInt8",
+5121: "getUint8",
+5122: "getInt16",
+5123: "getUint16",
+5124: "getInt32",
+5125: "getUint32",
+5126: "getFloat32"
+}, r = (function() {
+var t = new ArrayBuffer(2);
+new DataView(t).setInt16(0, 256, !0);
+return 256 === new Int16Array(t)[0];
+})();
+function s(t, e, i, n, s) {
+h.set(t, e[i](s, r), e[i](s += n, r), e[i](s += n, r));
+}
+return function(r, o) {
+e = Infinity;
+for (var a = o._subMeshes, c = 0; c < a.length; c++) if (a[c]._primitiveType === n.default.PT_TRIANGLES) for (var l = o._vbs[c] || o._vbs[0], h = l.data, _ = new DataView(h.buffer, h.byteOffset, h.byteLength), f = o._ibs[c].data, d = l.buffer._format.element(n.default.ATTR_POSITION), m = d.offset, p = d.stride, v = i[d.type], y = 0; y < f.length; y += 3) {
+s(t.a, _, v, 4, f[y] * p + m);
+s(t.b, _, v, 4, f[y + 1] * p + m);
+s(t.c, _, v, 4, f[y + 2] * p + m);
+var g = u.rayTriangle(r, t);
+g > 0 && g < e && (e = g);
+}
+return e;
+};
+})();
+u.raycast = (function() {
+function t(e, i) {
+for (var n = e.children, r = n.length - 1; r >= 0; r--) {
+t(n[r], i);
+}
+i(e);
+}
+function e(t, e) {
+return t.distance - e.distance;
+}
+function i(t, e, i) {
+var n = e.x, r = e.y, s = e.z, o = i.m03 * n + i.m07 * r + i.m11 * s;
+o = o ? 1 / o : 1;
+t.x = (i.m00 * n + i.m04 * r + i.m08 * s) * o;
+t.y = (i.m01 * n + i.m05 * r + i.m09 * s) * o;
+t.z = (i.m02 * n + i.m06 * r + i.m10 * s) * o;
+return t;
+}
+var n = new r.default(function() {
+return {
+distance: 0,
+node: null
+};
+}, 1), s = [], c = o.create(), _ = h.create(), f = h.create(), d = a.create(), m = l.create(), p = l.create(), v = h.create();
+function y(t) {
+return t > 0 && t < Infinity;
+}
+return function(r, a, g, x) {
+n.reset();
+s.length = 0;
+t(r = r || cc.director.getScene(), (function(t) {
+if (!x || x(t)) {
+l.invert(p, t.getWorldMatrix(m));
+h.transformMat4(d.o, a.o, p);
+h.normalize(d.d, i(d.d, a.d, p));
+var e = Infinity, r = t._renderComponent;
+if (r && r._boundingBox) e = u.rayAabb(d, r._boundingBox); else if (t.width && t.height) {
+h.set(_, -t.width * t.anchorX, -t.height * t.anchorY, t.z);
+h.set(f, t.width * (1 - t.anchorX), t.height * (1 - t.anchorY), t.z);
+o.fromPoints(c, _, f);
+e = u.rayAabb(d, c);
+}
+if (y(e)) {
+g && (e = g(d, t, e));
+if (y(e)) {
+h.scale(v, d.d, e);
+i(v, v, m);
+var C = n.add();
+C.node = t;
+C.distance = cc.vmath.vec3.mag(v);
+s.push(C);
+}
+}
+}
+}));
+s.sort(e);
+return s;
+};
+})();
+e.exports = u;
+}), {
+"../../renderer/gfx": 349,
+"../../renderer/memop/recycle-pool": 364,
+"./aabb": 137,
+"./ray": 140,
+"./triangle": 141
+} ],
+140: [ (function(t, e, i) {
+"use strict";
+var n = cc.vmath.vec3;
+function r(t, e, i, r, s, o) {
+this.o = n.create(t, e, i);
+this.d = n.create(r, s, o);
+}
+r.create = function(t, e, i, n, s, o) {
+return new r(t, e, i, n, s, o);
+};
+r.clone = function(t) {
+return new r(t.o.x, t.o.y, t.o.z, t.d.x, t.d.y, t.d.z);
+};
+r.copy = function(t, e) {
+t.o.x = e.o.x;
+t.o.y = e.o.y;
+t.o.z = e.o.z;
+t.d.x = e.d.x;
+t.d.y = e.d.y;
+t.d.z = e.d.z;
+return t;
+};
+r.set = function(t, e, i, n, r, s, o) {
+t.o.x = e;
+t.o.y = i;
+t.o.z = n;
+t.d.x = r;
+t.d.y = s;
+t.d.z = o;
+return t;
+};
+r.fromPoints = function(t, e, i) {
+n.copy(t.o, e);
+n.normalize(t.d, n.sub(t.d, i, e));
+return t;
+};
+e.exports = r;
+}), {} ],
+141: [ (function(t, e, i) {
+"use strict";
+var n = cc.vmath.vec3;
+function r(t, e, i, r, s, o, a, c, l) {
+this.a = n.create(t, e, i);
+this.b = n.create(r, s, o);
+this.c = n.create(a, c, l);
+}
+r.create = function(t, e, i, n, s, o, a, c, l) {
+return new r(t, e, i, n, s, o, a, c, l);
+};
+r.clone = function(t) {
+return new r(t.a.x, t.a.y, t.a.z, t.b.x, t.b.y, t.b.z, t.c.x, t.c.y, t.c.z);
+};
+r.copy = function(t, e) {
+n.copy(t.a, e.a);
+n.copy(t.b, e.b);
+n.copy(t.c, e.c);
+return t;
+};
+r.fromPoints = function(t, e, i, r) {
+n.copy(t.a, e);
+n.copy(t.b, i);
+n.copy(t.c, r);
+return t;
+};
+r.set = function(t, e, i, n, r, s, o, a, c, l) {
+t.a.x = e;
+t.a.y = i;
+t.a.z = n;
+t.b.x = r;
+t.b.y = s;
+t.b.z = o;
+t.c.x = a;
+t.c.y = c;
+t.c.z = l;
+return t;
+};
+e.exports = r;
+}), {} ],
+142: [ (function(t, e, i) {
+"use strict";
+var n = t("../components/CCRenderComponent"), r = t("../assets/material/CCMaterial"), s = t("./types"), o = s.LineCap, a = s.LineJoin, c = cc.Class({
+name: "cc.Graphics",
+extends: n,
+editor: !1,
+ctor: function() {
+this._impl = c._assembler.createImpl(this);
+},
+properties: {
+_lineWidth: 1,
+_strokeColor: cc.Color.BLACK,
+_lineJoin: a.MITER,
+_lineCap: o.BUTT,
+_fillColor: cc.Color.WHITE,
+_miterLimit: 10,
+lineWidth: {
+get: function() {
+return this._lineWidth;
+},
+set: function(t) {
+this._lineWidth = t;
+this._impl.lineWidth = t;
+}
+},
+lineJoin: {
+get: function() {
+return this._lineJoin;
+},
+set: function(t) {
+this._lineJoin = t;
+this._impl.lineJoin = t;
+},
+type: a
+},
+lineCap: {
+get: function() {
+return this._lineCap;
+},
+set: function(t) {
+this._lineCap = t;
+this._impl.lineCap = t;
+},
+type: o
+},
+strokeColor: {
+get: function() {
+return this._strokeColor;
+},
+set: function(t) {
+this._impl.strokeColor = this._strokeColor = cc.color(t);
+}
+},
+fillColor: {
+get: function() {
+return this._fillColor;
+},
+set: function(t) {
+this._impl.fillColor = this._fillColor = cc.color(t);
+}
+},
+miterLimit: {
+get: function() {
+return this._miterLimit;
+},
+set: function(t) {
+this._miterLimit = t;
+this._impl.miterLimit = t;
+}
+}
+},
+statics: {
+LineJoin: a,
+LineCap: o
+},
+onRestore: function() {
+this._impl || (this._impl = c._assembler.createImpl());
+},
+onEnable: function() {
+this._super();
+this._activateMaterial();
+},
+onDestroy: function() {
+this._super();
+this._impl.clear(this, !0);
+this._impl = null;
+},
+_activateMaterial: function() {
+if (cc.game.renderType !== cc.game.RENDER_TYPE_CANVAS) {
+this.node._renderFlag &= ~cc.RenderFlow.FLAG_RENDER;
+this.node._renderFlag |= cc.RenderFlow.FLAG_CUSTOM_IA_RENDER;
+var t = this.sharedMaterials[0];
+(t = t ? r.getInstantiatedMaterial(t, this) : r.getInstantiatedBuiltinMaterial("2d-base", this)).define("_USE_MODEL", !0);
+this.setMaterial(0, t);
+} else this.disableRender();
+},
+moveTo: function(t, e) {
+0;
+this._impl.moveTo(t, e);
+},
+lineTo: function(t, e) {
+0;
+this._impl.lineTo(t, e);
+},
+bezierCurveTo: function(t, e, i, n, r, s) {
+this._impl.bezierCurveTo(t, e, i, n, r, s);
+},
+quadraticCurveTo: function(t, e, i, n) {
+this._impl.quadraticCurveTo(t, e, i, n);
+},
+arc: function(t, e, i, n, r, s) {
+this._impl.arc(t, e, i, n, r, s);
+},
+ellipse: function(t, e, i, n) {
+this._impl.ellipse(t, e, i, n);
+},
+circle: function(t, e, i) {
+this._impl.circle(t, e, i);
+},
+rect: function(t, e, i, n) {
+this._impl.rect(t, e, i, n);
+},
+roundRect: function(t, e, i, n, r) {
+this._impl.roundRect(t, e, i, n, r);
+},
+fillRect: function(t, e, i, n) {
+this.rect(t, e, i, n);
+this.fill();
+},
+clear: function(t) {
+this._impl.clear(this, t);
+},
+close: function() {
+this._impl.close();
+},
+stroke: function() {
+c._assembler.stroke(this);
+},
+fill: function() {
+c._assembler.fill(this);
+}
+});
+cc.Graphics = e.exports = c;
+}), {
+"../assets/material/CCMaterial": 75,
+"../components/CCRenderComponent": 106,
+"./types": 145
+} ],
+143: [ (function(t, e, i) {
+"use strict";
+var n = t("./types").PointFlags, r = Math.PI, s = Math.min, o = Math.max, a = Math.cos, c = Math.sin, l = Math.abs, h = Math.sign, u = .5522847493;
+e.exports = {
+arc: function(t, e, i, n, h, u, _) {
+var f, d, m, p = 0, v = 0, y = 0, g = 0, x = 0, C = 0, b = 0, A = 0, S = 0, w = 0, T = 0, E = 0, M = 0;
+v = u - h;
+if (_ = _ || !1) if (l(v) >= 2 * r) v = 2 * r; else for (;v < 0; ) v += 2 * r; else if (l(v) >= 2 * r) v = 2 * -r; else for (;v > 0; ) v -= 2 * r;
+m = 0 | o(1, s(l(v) / (.5 * r) + .5, 5));
+y = l(4 / 3 * (1 - a(f = v / m / 2)) / c(f));
+_ || (y = -y);
+for (d = 0; d <= m; d++) {
+g = a(p = h + v * (d / m));
+x = c(p);
+C = e + g * n;
+b = i + x * n;
+A = -x * n * y;
+S = g * n * y;
+0 === d ? t.moveTo(C, b) : t.bezierCurveTo(w + E, T + M, C - A, b - S, C, b);
+w = C;
+T = b;
+E = A;
+M = S;
+}
+},
+ellipse: function(t, e, i, n, r) {
+t.moveTo(e - n, i);
+t.bezierCurveTo(e - n, i + r * u, e - n * u, i + r, e, i + r);
+t.bezierCurveTo(e + n * u, i + r, e + n, i + r * u, e + n, i);
+t.bezierCurveTo(e + n, i - r * u, e + n * u, i - r, e, i - r);
+t.bezierCurveTo(e - n * u, i - r, e - n, i - r * u, e - n, i);
+t.close();
+},
+roundRect: function(t, e, i, n, r, o) {
+if (o < .1) t.rect(e, i, n, r); else {
+var a = s(o, .5 * l(n)) * h(n), c = s(o, .5 * l(r)) * h(r);
+t.moveTo(e, i + c);
+t.lineTo(e, i + r - c);
+t.bezierCurveTo(e, i + r - c * (1 - u), e + a * (1 - u), i + r, e + a, i + r);
+t.lineTo(e + n - a, i + r);
+t.bezierCurveTo(e + n - a * (1 - u), i + r, e + n, i + r - c * (1 - u), e + n, i + r - c);
+t.lineTo(e + n, i + c);
+t.bezierCurveTo(e + n, i + c * (1 - u), e + n - a * (1 - u), i, e + n - a, i);
+t.lineTo(e + a, i);
+t.bezierCurveTo(e + a * (1 - u), i, e, i + c * (1 - u), e, i + c);
+t.close();
+}
+},
+tesselateBezier: function t(e, i, r, s, o, a, c, h, u, _, f) {
+var d, m, p, v, y, g, x, C, b, A, S, w, T, E, M, B;
+if (!(_ > 10)) {
+y = .5 * (a + h);
+g = .5 * (c + u);
+x = .5 * ((d = .5 * (i + s)) + (p = .5 * (s + a)));
+C = .5 * ((m = .5 * (r + o)) + (v = .5 * (o + c)));
+if (((M = l((s - h) * (E = u - r) - (o - u) * (T = h - i))) + (B = l((a - h) * E - (c - u) * T))) * (M + B) < e._tessTol * (T * T + E * E)) e._addPoint(h, u, 0 === f ? f | n.PT_BEVEL : f); else {
+t(e, i, r, d, m, x, C, S = .5 * (x + (b = .5 * (p + y))), w = .5 * (C + (A = .5 * (v + g))), _ + 1, 0);
+t(e, S, w, b, A, y, g, h, u, _ + 1, f);
+}
+}
+}
+};
+}), {
+"./types": 145
+} ],
+144: [ (function(t, e, i) {
+"use strict";
+t("./graphics");
+}), {
+"./graphics": 142
+} ],
+145: [ (function(t, e, i) {
+"use strict";
+var n = cc.Enum({
+BUTT: 0,
+ROUND: 1,
+SQUARE: 2
+}), r = cc.Enum({
+BEVEL: 0,
+ROUND: 1,
+MITER: 2
+}), s = cc.Enum({
+PT_CORNER: 1,
+PT_LEFT: 2,
+PT_BEVEL: 4,
+PT_INNERBEVEL: 8
+});
+e.exports = {
+LineCap: n,
+LineJoin: r,
+PointFlags: s
+};
+}), {} ],
+146: [ (function(t, e, i) {
+"use strict";
+t("./platform");
+t("./assets");
+t("./CCNode");
+t("./CCPrivateNode");
+t("./CCScene");
+t("./components");
+t("./graphics");
+t("./collider");
+t("./collider/CCIntersection");
+t("./physics");
+t("./camera/CCCamera");
+t("./geom-utils");
+t("./mesh");
+t("./3d");
+t("./3d/polyfill-3d");
+t("./base-ui/CCWidgetManager");
+}), {
+"./3d": 29,
+"./3d/polyfill-3d": 30,
+"./CCNode": 52,
+"./CCPrivateNode": 53,
+"./CCScene": 54,
+"./assets": 74,
+"./base-ui/CCWidgetManager": 79,
+"./camera/CCCamera": 80,
+"./collider": 88,
+"./collider/CCIntersection": 86,
+"./components": 125,
+"./geom-utils": 138,
+"./graphics": 144,
+"./mesh": 169,
+"./physics": 184,
+"./platform": 218
+} ],
+147: [ (function(i, n, r) {
+"use strict";
+var s = i("../platform/js"), o = i("./pipeline"), a = i("./loading-items"), c = i("./asset-loader"), l = i("./downloader"), h = i("./loader"), u = i("./asset-table"), _ = i("../platform/utils").callInNextTick, f = i("./auto-release-utils"), d = Object.create(null);
+d.assets = new u();
+d.internal = new u();
+var m = {
+url: null,
+raw: !1
+};
+function p(i) {
+var n, r, s;
+if ("object" === ("object" === (e = typeof i) ? t(i) : e)) {
+r = i;
+if (i.url) return r;
+n = i.uuid;
+} else {
+r = {};
+n = i;
+}
+s = r.type ? "uuid" === r.type : cc.AssetLibrary._uuidInSettings(n);
+cc.AssetLibrary._getAssetInfoInRuntime(n, m);
+r.url = s ? m.url : n;
+if (m.url && "uuid" === r.type && m.raw) {
+r.type = null;
+r.isRawAsset = !0;
+} else s || (r.isRawAsset = !0);
+return r;
+}
+var v = [], y = [];
+function g() {
+var t = new c(), e = new l(), i = new h();
+o.call(this, [ t, e, i ]);
+this.assetLoader = t;
+this.md5Pipe = null;
+this.downloader = e;
+this.loader = i;
+this.onProgress = null;
+this._autoReleaseSetting = s.createMap(!0);
+0;
+}
+s.extend(g, o);
+var x = g.prototype;
+x.init = function(t) {};
+x.getXMLHttpRequest = function() {
+return window.XMLHttpRequest ? new window.XMLHttpRequest() : new ActiveXObject("MSXML2.XMLHTTP");
+};
+x.addDownloadHandlers = function(t) {
+this.downloader.addHandlers(t);
+};
+x.addLoadHandlers = function(t) {
+this.loader.addHandlers(t);
+};
+x.load = function(t, e, i) {
+0;
+if (void 0 === i) {
+i = e;
+e = this.onProgress || null;
+}
+var n, r = this, s = !1;
+if (!(t instanceof Array)) if (t) {
+s = !0;
+t = [ t ];
+} else t = [];
+v.length = 0;
+for (var o = 0; o < t.length; ++o) {
+var c = t[o];
+if (c && c.id) {
+cc.warnID(4920, c.id);
+c.uuid || c.url || (c.url = c.id);
+}
+if ((n = p(c)).url || n.uuid) {
+var l = this._cache[n.url];
+v.push(l || n);
+}
+}
+var h = a.create(this, e, (function(t, e) {
+_((function() {
+if (i) {
+if (s) {
+var o = n.url;
+i.call(r, t, e.getContent(o));
+} else i.call(r, t, e);
+i = null;
+}
+e.destroy();
+}));
+}));
+a.initQueueDeps(h);
+h.append(v);
+v.length = 0;
+};
+x.flowInDeps = function(t, e, i) {
+y.length = 0;
+for (var n = 0; n < e.length; ++n) {
+var r = p(e[n]);
+if (r.url || r.uuid) {
+var s = this._cache[r.url];
+s ? y.push(s) : y.push(r);
+}
+}
+var o = a.create(this, t ? function(t, e, i) {
+this._ownerQueue && this._ownerQueue.onProgress && this._ownerQueue._childOnProgress(i);
+} : null, (function(e, n) {
+i(e, n);
+t && t.deps && (t.deps.length = 0);
+n.destroy();
+}));
+if (t) {
+var c = a.getQueue(t);
+o._ownerQueue = c._ownerQueue || c;
+}
+var l = o.append(y, t);
+y.length = 0;
+return l;
+};
+x._assetTables = d;
+x._getResUuid = function(t, e, i, n) {
+var r = d[i = i || "assets"];
+if (!t || !r) return null;
+var s = t.indexOf("?");
+-1 !== s && (t = t.substr(0, s));
+var o = r.getUuid(t, e);
+if (!o) {
+var a = cc.path.extname(t);
+if (a) {
+t = t.slice(0, -a.length);
+(o = r.getUuid(t, e)) && !n && cc.warnID(4901, t, a);
+}
+}
+return o;
+};
+x._getReferenceKey = function(i) {
+var n;
+"object" === ("object" === (e = typeof i) ? t(i) : e) ? n = i._uuid || null : "string" === ("object" === (e = typeof i) ? t(i) : e) && (n = this._getResUuid(i, null, null, !0) || i);
+if (!n) {
+cc.warnID(4800, i);
+return n;
+}
+cc.AssetLibrary._getAssetInfoInRuntime(n, m);
+return this._cache[m.url] ? m.url : n;
+};
+x._urlNotFound = function(t, e, i) {
+_((function() {
+t = cc.url.normalize(t);
+var n = (e ? s.getClassName(e) : "Asset") + ' in "resources/' + t + '" does not exist.';
+i && i(new Error(n), []);
+}));
+};
+x._parseLoadResArgs = function(t, e, i) {
+if (void 0 === i) {
+var n = t instanceof Array || s.isChildClassOf(t, cc.RawAsset);
+if (e) {
+i = e;
+n && (e = this.onProgress || null);
+} else if (void 0 === e && !n) {
+i = t;
+e = this.onProgress || null;
+t = null;
+}
+if (void 0 !== e && !n) {
+e = t;
+t = null;
+}
+}
+return {
+type: t,
+onProgress: e,
+onComplete: i
+};
+};
+x.loadRes = function(t, e, i, n, r) {
+if (5 !== arguments.length) {
+r = n;
+n = i;
+i = "assets";
+}
+var s = this._parseLoadResArgs(e, n, r);
+e = s.type;
+n = s.onProgress;
+r = s.onComplete;
+var o = this, a = o._getResUuid(t, e, i);
+a ? this.load({
+type: "uuid",
+uuid: a
+}, n, (function(t, e) {
+e && o.setAutoReleaseRecursively(a, !1);
+r && r(t, e);
+})) : o._urlNotFound(t, e, r);
+};
+x._loadResUuids = function(t, e, i, n) {
+if (t.length > 0) {
+var r = this, s = t.map((function(t) {
+return {
+type: "uuid",
+uuid: t
+};
+}));
+this.load(s, e, (function(t, e) {
+if (i) {
+for (var o = [], a = n && [], c = 0; c < s.length; ++c) {
+var l = s[c].uuid, h = this._getReferenceKey(l), u = e.getContent(h);
+if (u) {
+r.setAutoReleaseRecursively(l, !1);
+o.push(u);
+a && a.push(n[c]);
+}
+}
+n ? i(t, o, a) : i(t, o);
+}
+}));
+} else i && _((function() {
+n ? i(null, [], []) : i(null, []);
+}));
+};
+x.loadResArray = function(t, e, i, n, r) {
+if (5 !== arguments.length) {
+r = n;
+n = i;
+i = "assets";
+}
+var s = this._parseLoadResArgs(e, n, r);
+e = s.type;
+n = s.onProgress;
+r = s.onComplete;
+for (var o = [], a = e instanceof Array, c = 0; c < t.length; c++) {
+var l = t[c], h = a ? e[c] : e, u = this._getResUuid(l, h, i);
+if (!u) {
+this._urlNotFound(l, h, r);
+return;
+}
+o.push(u);
+}
+this._loadResUuids(o, n, r);
+};
+x.loadResDir = function(t, e, i, n, r) {
+if (5 !== arguments.length) {
+r = n;
+n = i;
+i = "assets";
+}
+if (d[i]) {
+var s = this._parseLoadResArgs(e, n, r);
+e = s.type;
+n = s.onProgress;
+r = s.onComplete;
+var o = [], a = d[i].getUuidArray(t, e, o);
+this._loadResUuids(a, n, r, o);
+}
+};
+x.getRes = function(t, e) {
+var i = this._cache[t];
+if (!i) {
+var n = this._getResUuid(t, e, null, !0);
+if (!n) return null;
+var r = this._getReferenceKey(n);
+i = this._cache[r];
+}
+i && i.alias && (i = i.alias);
+return i && i.complete ? i.content : null;
+};
+x.getResCount = function() {
+return Object.keys(this._cache).length;
+};
+x.getDependsRecursively = function(t) {
+if (t) {
+var e = this._getReferenceKey(t), i = f.getDependsRecursively(e);
+i.push(e);
+return i;
+}
+return [];
+};
+x.release = function(t) {
+if (Array.isArray(t)) for (var e = 0; e < t.length; e++) {
+var i = t[e];
+this.release(i);
+} else if (t) {
+var n = this._getReferenceKey(t);
+if (n && n in cc.AssetLibrary.getBuiltinDeps()) return;
+var r = this.getItem(n);
+if (r) {
+this.removeItem(n);
+t = r.content;
+0;
+}
+if (t instanceof cc.Asset) {
+var s = t.nativeUrl;
+s && this.release(s);
+t.destroy();
+}
+}
+};
+x.releaseAsset = function(t) {
+var e = t._uuid;
+e && this.release(e);
+};
+x.releaseRes = function(t, e, i) {
+var n = this._getResUuid(t, e, i);
+n ? this.release(n) : cc.errorID(4914, t);
+};
+x.releaseResDir = function(t, e, i) {
+if (d[i = i || "assets"]) for (var n = d[i].getUuidArray(t, e), r = 0; r < n.length; r++) {
+var s = n[r];
+this.release(s);
+}
+};
+x.releaseAll = function() {
+for (var t in this._cache) this.release(t);
+};
+x.removeItem = function(t) {
+var e = o.prototype.removeItem.call(this, t);
+delete this._autoReleaseSetting[t];
+return e;
+};
+x.setAutoRelease = function(t, e) {
+var i = this._getReferenceKey(t);
+i && (this._autoReleaseSetting[i] = !!e);
+};
+x.setAutoReleaseRecursively = function(t, e) {
+e = !!e;
+var i = this._getReferenceKey(t);
+if (i) {
+this._autoReleaseSetting[i] = e;
+for (var n = f.getDependsRecursively(i), r = 0; r < n.length; r++) {
+var s = n[r];
+this._autoReleaseSetting[s] = e;
+}
+} else 0;
+};
+x.isAutoRelease = function(t) {
+var e = this._getReferenceKey(t);
+return !!e && !!this._autoReleaseSetting[e];
+};
+cc.loader = new g();
+0;
+n.exports = cc.loader;
+}), {
+"../platform/js": 221,
+"../platform/utils": 225,
+"./asset-loader": 148,
+"./asset-table": 149,
+"./auto-release-utils": 151,
+"./downloader": 153,
+"./loader": 156,
+"./loading-items": 157,
+"./pipeline": 160,
+"./released-asset-checker": 161
+} ],
+148: [ (function(t, e, i) {
+"use strict";
+t("../utils/CCPath");
+var n = t("../CCDebug"), r = t("./pipeline"), s = t("./loading-items"), o = "AssetLoader", a = function(t) {
+this.id = o;
+this.async = !0;
+this.pipeline = null;
+};
+a.ID = o;
+var c = [];
+a.prototype.handle = function(t, e) {
+var i = t.uuid;
+if (!i) return t.content || null;
+cc.AssetLibrary.queryAssetInfo(i, (function(r, o, a) {
+if (r) e(r); else {
+t.url = t.rawUrl = o;
+t.isRawAsset = a;
+if (a) {
+var l = cc.path.extname(o).toLowerCase();
+if (!l) {
+e(new Error(n.getError(4931, i, o)));
+return;
+}
+l = l.substr(1);
+var h = s.getQueue(t);
+c[0] = {
+queueId: t.queueId,
+id: o,
+url: o,
+type: l,
+error: null,
+alias: t,
+complete: !0
+};
+0;
+h.append(c);
+t.type = l;
+e(null, t.content);
+} else {
+t.type = "uuid";
+e(null, t.content);
+}
+}
+}));
+};
+r.AssetLoader = e.exports = a;
+}), {
+"../CCDebug": 49,
+"../utils/CCPath": 285,
+"./loading-items": 157,
+"./pipeline": 160
+} ],
+149: [ (function(t, e, i) {
+"use strict";
+var n = t("../utils/misc").pushToMap, r = t("../platform/js");
+function s(t, e) {
+this.uuid = t;
+this.type = e;
+}
+function o() {
+this._pathToUuid = r.createMap(!0);
+}
+function a(t, e) {
+if (t.length > e.length) {
+var i = t.charCodeAt(e.length);
+return 46 === i || 47 === i;
+}
+return !0;
+}
+var c = o.prototype;
+c.getUuid = function(t, e) {
+t = cc.url.normalize(t);
+var i = this._pathToUuid[t];
+if (i) if (Array.isArray(i)) {
+if (!e) return i[0].uuid;
+for (var n = 0; n < i.length; n++) {
+var s = i[n];
+if (r.isChildClassOf(s.type, e)) return s.uuid;
+}
+} else {
+if (!e || r.isChildClassOf(i.type, e)) return i.uuid;
+0;
+}
+return "";
+};
+c.getUuidArray = function(t, e, i) {
+"/" === (t = cc.url.normalize(t))[t.length - 1] && (t = t.slice(0, -1));
+var n = this._pathToUuid, s = [], o = r.isChildClassOf;
+for (var c in n) if (c.startsWith(t) && a(c, t) || !t) {
+var l = n[c];
+if (Array.isArray(l)) for (var h = 0; h < l.length; h++) {
+var u = l[h];
+if (!e || o(u.type, e)) {
+s.push(u.uuid);
+i && i.push(c);
+} else 0;
+} else if (!e || o(l.type, e)) {
+s.push(l.uuid);
+i && i.push(c);
+} else 0;
+}
+0;
+return s;
+};
+c.add = function(t, e, i, r) {
+t = t.substring(0, t.length - cc.path.extname(t).length);
+var o = new s(e, i);
+n(this._pathToUuid, t, o, r);
+};
+c._getInfo_DEBUG = !1;
+c.reset = function() {
+this._pathToUuid = r.createMap(!0);
+};
+e.exports = o;
+}), {
+"../platform/js": 221,
+"../utils/misc": 297
+} ],
+150: [ (function(t, e, i) {
+"use strict";
+var n = t("../platform/CCSys"), r = t("../CCDebug"), s = n.__audioSupport, o = s.format, a = s.context;
+function c(t, e) {
+var i = document.createElement("audio");
+i.src = t.url;
+var n = cc.sys.platform === cc.sys.XIAOMI_GAME, r = cc.sys.platform === cc.sys.BAIDU_GAME, o = cc.sys.platform === cc.sys.ALIPAY_GAME;
+if (r || n || o) e(null, i); else {
+var a = function() {
+clearTimeout(c);
+i.removeEventListener("canplaythrough", l, !1);
+i.removeEventListener("error", h, !1);
+s.USE_LOADER_EVENT && i.removeEventListener(s.USE_LOADER_EVENT, l, !1);
+}, c = setTimeout((function() {
+0 === i.readyState ? h() : l();
+}), 8e3), l = function() {
+a();
+e(null, i);
+}, h = function() {
+a();
+var i = "load audio failure - " + t.url;
+cc.log(i);
+e(i);
+};
+i.addEventListener("canplaythrough", l, !1);
+i.addEventListener("error", h, !1);
+s.USE_LOADER_EVENT && i.addEventListener(s.USE_LOADER_EVENT, l, !1);
+}
+}
+function l(t, e) {
+a || e(new Error(r.getError(4926)));
+var i = cc.loader.getXMLHttpRequest();
+i.open("GET", t.url, !0);
+i.responseType = "arraybuffer";
+i.onload = function() {
+a.decodeAudioData(i.response, (function(t) {
+e(null, t);
+}), (function() {
+e("decode error - " + t.id, null);
+}));
+};
+i.onerror = function() {
+e("request error - " + t.id, null);
+};
+i.send();
+}
+e.exports = function(t, e) {
+if (0 === o.length) return new Error(r.getError(4927));
+var i;
+i = s.WEB_AUDIO ? t._owner instanceof cc.AudioClip ? t._owner.loadMode === cc.AudioClip.LoadMode.WEB_AUDIO ? l : c : t.urlParam && t.urlParam.useDom ? c : l : c;
+i(t, e);
+};
+}), {
+"../CCDebug": 49,
+"../platform/CCSys": 210
+} ],
+151: [ (function(i, n, r) {
+"use strict";
+var s = i("../platform/js");
+function o(t, e) {
+var i = cc.loader.getItem(t);
+if (i) {
+var n = i.dependKeys;
+if (n) for (var r = 0; r < n.length; r++) {
+var s = n[r];
+if (!e[s]) {
+e[s] = !0;
+o(s, e);
+}
+}
+}
+}
+function a(t, e) {
+if (t._uuid) {
+var i = cc.loader._getReferenceKey(t);
+if (!e[i]) {
+e[i] = !0;
+o(i, e);
+}
+}
+}
+function c(i, n) {
+for (var r = Object.getOwnPropertyNames(i), s = 0; s < r.length; s++) {
+var o = i[r[s]];
+if ("object" === ("object" === (e = typeof o) ? t(o) : e) && o) if (Array.isArray(o)) for (var c = 0; c < o.length; c++) {
+var l = o[c];
+l instanceof cc.RawAsset && a(l, n);
+} else if (o.constructor && o.constructor !== Object) o instanceof cc.RawAsset && a(o, n); else for (var h = Object.getOwnPropertyNames(o), u = 0; u < h.length; u++) {
+var _ = o[h[u]];
+_ instanceof cc.RawAsset && a(_, n);
+}
+}
+}
+function l(t, e) {
+for (var i = 0; i < t._components.length; i++) c(t._components[i], e);
+for (var n = 0; n < t._children.length; n++) l(t._children[n], e);
+}
+n.exports = {
+autoRelease: function(t, e, i) {
+var n = cc.loader._autoReleaseSetting, r = s.createMap();
+if (e) for (var o = 0; o < e.length; o++) r[e[o]] = !0;
+for (var a = 0; a < i.length; a++) l(i[a], r);
+if (t) for (var c = 0; c < t.length; c++) {
+var h = t[c];
+!1 === n[h] || r[h] || cc.loader.release(h);
+}
+for (var u = Object.keys(n), _ = 0; _ < u.length; _++) {
+var f = u[_];
+!0 !== n[f] || r[f] || cc.loader.release(f);
+}
+},
+getDependsRecursively: function(t) {
+var e = {};
+o(t, e);
+return Object.keys(e);
+}
+};
+}), {
+"../platform/js": 221
+} ],
+152: [ (function(t, e, i) {
+"use strict";
+e.exports = function(t, e) {
+var i = t.url, n = cc.loader.getXMLHttpRequest(), r = "Load binary data failed: " + i;
+n.open("GET", i, !0);
+n.responseType = "arraybuffer";
+n.onload = function() {
+var t = n.response;
+if (t) {
+var i = new Uint8Array(t);
+e(null, i);
+} else e({
+status: n.status,
+errorMessage: r + "(no response)"
+});
+};
+n.onerror = function() {
+e({
+status: n.status,
+errorMessage: r + "(error)"
+});
+};
+n.ontimeout = function() {
+e({
+status: n.status,
+errorMessage: r + "(time out)"
+});
+};
+n.send(null);
+};
+}), {} ],
+153: [ (function(t, e, i) {
+"use strict";
+var n = t("../platform/js"), r = t("../CCDebug");
+t("../utils/CCPath");
+var s, o = t("./pipeline"), a = t("./pack-downloader"), c = t("./binary-downloader"), l = t("./text-downloader"), h = t("./utils").urlAppendTimestamp;
+function u() {
+return null;
+}
+function _(t, e, i) {
+var n = t.url, s = document, o = document.createElement("script");
+"file:" !== window.location.protocol && (o.crossOrigin = "anonymous");
+o.async = i;
+o.src = h(n);
+function a() {
+o.parentNode.removeChild(o);
+o.removeEventListener("load", a, !1);
+o.removeEventListener("error", c, !1);
+e(null, n);
+}
+function c() {
+o.parentNode.removeChild(o);
+o.removeEventListener("load", a, !1);
+o.removeEventListener("error", c, !1);
+e(new Error(r.getError(4928, n)));
+}
+o.addEventListener("load", a, !1);
+o.addEventListener("error", c, !1);
+s.body.appendChild(o);
+}
+function f(t, e, i, n) {
+void 0 === i && (i = !0);
+var s = h(t.url);
+n = n || new Image();
+i && "file:" !== window.location.protocol ? n.crossOrigin = "anonymous" : n.crossOrigin = null;
+if (n.complete && n.naturalWidth > 0 && n.src === s) return n;
+var o = function i() {
+n.removeEventListener("load", i);
+n.removeEventListener("error", a);
+n.id = t.id;
+e(null, n);
+}, a = function i() {
+n.removeEventListener("load", o);
+n.removeEventListener("error", i);
+"https:" !== window.location.protocol && n.crossOrigin && "anonymous" === n.crossOrigin.toLowerCase() ? f(t, e, !1, n) : e(new Error(r.getError(4930, s)));
+};
+n.addEventListener("load", o);
+n.addEventListener("error", a);
+n.src = s;
+}
+var d = {
+js: _,
+png: f,
+jpg: f,
+bmp: f,
+jpeg: f,
+gif: f,
+ico: f,
+tiff: f,
+webp: function(t, e, i, n) {
+return cc.sys.capabilities.webp ? f(t, e, i, n) : new Error(r.getError(4929, t.url));
+},
+image: f,
+pvr: c,
+pkm: c,
+mp3: s = t("./audio-downloader"),
+ogg: s,
+wav: s,
+m4a: s,
+txt: l,
+xml: l,
+vsh: l,
+fsh: l,
+atlas: l,
+tmx: l,
+tsx: l,
+json: l,
+ExportJson: l,
+plist: l,
+fnt: l,
+font: u,
+eot: u,
+ttf: u,
+woff: u,
+svg: u,
+ttc: u,
+uuid: function(t, e) {
+var i = a.load(t, e);
+return void 0 === i ? this.extMap.json(t, e) : i || void 0;
+},
+binary: c,
+bin: c,
+dbbin: c,
+default: l
+}, m = "Downloader", p = function(t) {
+this.id = m;
+this.async = !0;
+this.pipeline = null;
+this._curConcurrent = 0;
+this._loadQueue = [];
+this._subpackages = {};
+this.extMap = n.mixin(t, d);
+};
+p.ID = m;
+p.PackDownloader = a;
+p.prototype.addHandlers = function(t) {
+n.mixin(this.extMap, t);
+};
+p.prototype._handleLoadQueue = function() {
+for (;this._curConcurrent < cc.macro.DOWNLOAD_MAX_CONCURRENT; ) {
+var t = this._loadQueue.shift();
+if (!t) break;
+var e = this.handle(t.item, t.callback);
+void 0 !== e && (e instanceof Error ? t.callback(e) : t.callback(null, e));
+}
+};
+p.prototype.handle = function(t, e) {
+var i = this, n = this.extMap[t.type] || this.extMap.default, r = void 0;
+if (this._curConcurrent < cc.macro.DOWNLOAD_MAX_CONCURRENT) {
+this._curConcurrent++;
+if (void 0 !== (r = n.call(this, t, (function(t, n) {
+i._curConcurrent = Math.max(0, i._curConcurrent - 1);
+i._handleLoadQueue();
+e && e(t, n);
+})))) {
+this._curConcurrent = Math.max(0, this._curConcurrent - 1);
+this._handleLoadQueue();
+return r;
+}
+} else if (t.ignoreMaxConcurrency) {
+if (void 0 !== (r = n.call(this, t, e))) return r;
+} else this._loadQueue.push({
+item: t,
+callback: e
+});
+};
+p.prototype.loadSubpackage = function(t, e) {
+var i = this._subpackages[t];
+i ? i.loaded ? e && e() : _({
+url: i.path + "index.js"
+}, (function(t) {
+t || (i.loaded = !0);
+e && e(t);
+})) : e && e(new Error("Can't find subpackage " + t));
+};
+o.Downloader = e.exports = p;
+}), {
+"../CCDebug": 49,
+"../platform/js": 221,
+"../utils/CCPath": 285,
+"./audio-downloader": 150,
+"./binary-downloader": 152,
+"./pack-downloader": 159,
+"./pipeline": 160,
+"./text-downloader": 163,
+"./utils": 165
+} ],
+154: [ (function(t, e, i) {
+"use strict";
+var n = t("../utils/text-utils"), r = null, s = "BES bswy:->@123丁ぁᄁ", o = {}, a = -1, c = [], l = 3e3, h = (function() {
+var t = void 0;
+return function() {
+if (void 0 === t) if (window.FontFace) {
+var e = /Gecko.*Firefox\/(\d+)/.exec(window.navigator.userAgent), i = /OS X.*Version\/10\..*Safari/.exec(window.navigator.userAgent) && /Apple/.exec(window.navigator.vendor);
+t = e ? parseInt(e[1], 10) > 42 : !i;
+} else t = !1;
+return t;
+};
+})();
+function u() {
+for (var t = !0, e = Date.now(), i = c.length - 1; i >= 0; i--) {
+var o = c[i], h = o.fontFamilyName;
+if (e - o.startTime > l) {
+cc.warnID(4933, h);
+o.callback(null, h);
+c.splice(i, 1);
+} else {
+var u = o.refWidth;
+r.font = "40px " + h;
+if (u !== n.safeMeasureText(r, s)) {
+c.splice(i, 1);
+o.callback(null, h);
+} else t = !1;
+}
+}
+if (t) {
+clearInterval(a);
+a = -1;
+}
+}
+function _(t, e, i) {
+var n = new Promise(function(i, n) {
+(function r() {
+Date.now() - t >= l ? n() : document.fonts.load("40px " + e).then((function(t) {
+t.length >= 1 ? i() : setTimeout(r, 100);
+}), (function() {
+n();
+}));
+})();
+}), r = null, s = new Promise(function(t, e) {
+r = setTimeout(e, l);
+});
+Promise.race([ s, n ]).then((function() {
+if (r) {
+clearTimeout(r);
+r = null;
+}
+i(null, e);
+}), (function() {
+cc.warnID(4933, e);
+i(null, e);
+}));
+}
+var f = {
+loadFont: function(t, e) {
+var i = t.url, l = f._getFontFamily(i);
+if (o[l]) return l;
+if (!r) {
+var d = document.createElement("canvas");
+d.width = 100;
+d.height = 100;
+r = d.getContext("2d");
+}
+var m = "40px " + l;
+r.font = m;
+var p = n.safeMeasureText(r, s), v = document.createElement("style");
+v.type = "text/css";
+var y = "";
+isNaN(l - 0) ? y += "@font-face { font-family:" + l + "; src:" : y += "@font-face { font-family:'" + l + "'; src:";
+y += "url('" + i + "');";
+v.textContent = y + "}";
+document.body.appendChild(v);
+var g = document.createElement("div"), x = g.style;
+x.fontFamily = l;
+g.innerHTML = ".";
+x.position = "absolute";
+x.left = "-100px";
+x.top = "-100px";
+document.body.appendChild(g);
+if (h()) _(Date.now(), l, e); else {
+var C = {
+fontFamilyName: l,
+refWidth: p,
+callback: e,
+startTime: Date.now()
+};
+c.push(C);
+-1 === a && (a = setInterval(u, 100));
+}
+o[l] = v;
+},
+_getFontFamily: function(t) {
+var e = t.lastIndexOf(".ttf");
+if (-1 === e) return t;
+var i, n = t.lastIndexOf("/");
+-1 !== (i = -1 === n ? t.substring(0, e) + "_LABEL" : t.substring(n + 1, e) + "_LABEL").indexOf(" ") && (i = '"' + i + '"');
+return i;
+}
+};
+e.exports = f;
+}), {
+"../utils/text-utils": 303
+} ],
+155: [ (function(t, e, i) {
+"use strict";
+t("./downloader");
+t("./loader");
+t("./loading-items");
+t("./pipeline");
+t("./CCLoader");
+}), {
+"./CCLoader": 147,
+"./downloader": 153,
+"./loader": 156,
+"./loading-items": 157,
+"./pipeline": 160
+} ],
+156: [ (function(i, n, r) {
+"use strict";
+var s = i("../platform/js"), o = i("../platform/CCSAXParser").plistParser, a = i("./pipeline"), c = i("../assets/CCTexture2D"), l = i("./uuid-loader"), h = i("./font-loader");
+function u(i) {
+if ("string" !== ("object" === (e = typeof i.content) ? t(i.content) : e)) return new Error("JSON Loader: Input item doesn't contain string content");
+try {
+return JSON.parse(i.content);
+} catch (t) {
+return new Error("JSON Loader: Parse json [" + i.id + "] failed : " + t);
+}
+}
+function _(t) {
+if (t._owner instanceof cc.Asset) return null;
+var e = t.content;
+if (cc.sys.platform !== cc.sys.FB_PLAYABLE_ADS && !(e instanceof Image)) return new Error("Image Loader: Input item doesn't contain Image content");
+var i = t.texture || new c();
+i._uuid = t.uuid;
+i.url = t.url;
+i._setRawAsset(t.rawUrl, !1);
+i._nativeAsset = e;
+return i;
+}
+function f(t, e) {
+if (t._owner instanceof cc.Asset) return null;
+var i = new cc.AudioClip();
+i._setRawAsset(t.rawUrl, !1);
+i._nativeAsset = t.content;
+i.url = t.url;
+return i;
+}
+function d(t) {
+return t.load ? t.load(t.content) : null;
+}
+var m = 13, p = 55727696, v = 0, y = 6, g = 7, x = 12;
+var C = 16, b = 6, A = 8, S = 10, w = 12, T = 14, E = 0, M = 1, B = 3;
+function D(t, e) {
+return t[e] << 8 | t[e + 1];
+}
+var I = {
+png: _,
+jpg: _,
+bmp: _,
+jpeg: _,
+gif: _,
+ico: _,
+tiff: _,
+webp: _,
+image: _,
+pvr: function(t) {
+var e = t.content instanceof ArrayBuffer ? t.content : t.content.buffer, i = new Int32Array(e, 0, m);
+if (i[v] != p) return new Error("Invalid magic number in PVR header");
+var n = i[g], r = i[y], s = i[x] + 52;
+return {
+_data: new Uint8Array(e, s),
+_compressed: !0,
+width: n,
+height: r
+};
+},
+pkm: function(t) {
+var e = t.content instanceof ArrayBuffer ? t.content : t.content.buffer, i = new Uint8Array(e), n = D(i, b);
+if (n !== E && n !== M && n !== B) return new Error("Invalid magic number in ETC header");
+var r = D(i, w), s = D(i, T);
+D(i, A), D(i, S);
+return {
+_data: new Uint8Array(e, C),
+_compressed: !0,
+width: r,
+height: s
+};
+},
+mp3: f,
+ogg: f,
+wav: f,
+m4a: f,
+json: u,
+ExportJson: u,
+plist: function(i) {
+if ("string" !== ("object" == (e = typeof i.content) ? t(i.content) : e)) return new Error("Plist Loader: Input item doesn't contain string content");
+var n = o.parse(i.content);
+return n || new Error("Plist Loader: Parse [" + i.id + "] failed");
+},
+uuid: l,
+prefab: l,
+fire: l,
+scene: l,
+binary: d,
+dbbin: d,
+bin: d,
+font: h.loadFont,
+eot: h.loadFont,
+ttf: h.loadFont,
+woff: h.loadFont,
+svg: h.loadFont,
+ttc: h.loadFont,
+default: function() {
+return null;
+}
+}, P = function(t) {
+this.id = "Loader";
+this.async = !0;
+this.pipeline = null;
+this.extMap = s.mixin(t, I);
+};
+P.ID = "Loader";
+P.prototype.addHandlers = function(t) {
+this.extMap = s.mixin(this.extMap, t);
+};
+P.prototype.handle = function(t, e) {
+return (this.extMap[t.type] || this.extMap.default).call(this, t, e);
+};
+a.Loader = n.exports = P;
+}), {
+"../assets/CCTexture2D": 73,
+"../platform/CCSAXParser": 208,
+"../platform/js": 221,
+"./font-loader": 154,
+"./pipeline": 160,
+"./uuid-loader": 166
+} ],
+157: [ (function(i, n, r) {
+"use strict";
+var s = i("../platform/callbacks-invoker");
+i("../utils/CCPath");
+var o = i("../platform/js"), a = 0 | 998 * Math.random(), c = o.createMap(!0), l = [], h = {
+WORKING: 1,
+COMPLETE: 2,
+ERROR: 3
+}, u = o.createMap(!0);
+function _(i) {
+var n = i.url || i;
+return "string" === ("object" === (e = typeof n) ? t(n) : e);
+}
+function f(t) {
+if (t) {
+var e = t.split("?");
+if (e && e[0] && e[1]) {
+var i = {};
+e[1].split("&").forEach((function(t) {
+var e = t.split("=");
+i[e[0]] = e[1];
+}));
+return i;
+}
+}
+}
+function d(i, n) {
+var r = "object" === ("object" === (e = typeof i) ? t(i) : e) ? i.url : i, s = {
+queueId: n,
+id: r,
+url: r,
+rawUrl: void 0,
+urlParam: f(r),
+type: "",
+error: null,
+content: null,
+complete: !1,
+states: {},
+deps: null
+};
+if ("object" === ("object" === (e = typeof i) ? t(i) : e)) {
+o.mixin(s, i);
+if (i.skips) for (var a = 0; a < i.skips.length; a++) {
+var c = i.skips[a];
+s.states[c] = h.COMPLETE;
+}
+}
+s.rawUrl = s.url;
+r && !s.type && (s.type = cc.path.extname(r).toLowerCase().substr(1));
+return s;
+}
+var m = [];
+function p(t, e, i) {
+if (!t || !e) return !1;
+var n = !1;
+m.push(e.id);
+if (e.deps) {
+var r, s, o = e.deps;
+for (r = 0; r < o.length; r++) {
+if ((s = o[r]).id === t.id) {
+n = !0;
+break;
+}
+if (!(m.indexOf(s.id) >= 0) && (s.deps && p(t, s, !0))) {
+n = !0;
+break;
+}
+}
+}
+i || (m.length = 0);
+return n;
+}
+var v = function(t, e, i, n) {
+s.call(this);
+this._id = ++a;
+c[this._id] = this;
+this._pipeline = t;
+this._errorUrls = o.createMap(!0);
+this._appending = !1;
+this._ownerQueue = null;
+this.onProgress = i;
+this.onComplete = n;
+this.map = o.createMap(!0);
+this.completed = {};
+this.totalCount = 0;
+this.completedCount = 0;
+this._pipeline ? this.active = !0 : this.active = !1;
+e && (e.length > 0 ? this.append(e) : this.allComplete());
+};
+v.ItemState = new cc.Enum(h);
+v.create = function(i, n, r, s) {
+if (void 0 === r) {
+if ("function" === ("object" === (e = typeof n) ? t(n) : e)) {
+s = n;
+n = r = null;
+}
+} else if (void 0 === s) if ("function" === ("object" === (e = typeof n) ? t(n) : e)) {
+s = r;
+r = n;
+n = null;
+} else {
+s = r;
+r = null;
+}
+var o = l.pop();
+if (o) {
+o._pipeline = i;
+o.onProgress = r;
+o.onComplete = s;
+c[o._id] = o;
+o._pipeline && (o.active = !0);
+n && o.append(n);
+} else o = new v(i, n, r, s);
+return o;
+};
+v.getQueue = function(t) {
+return t.queueId ? c[t.queueId] : null;
+};
+v.itemComplete = function(t) {
+var e = c[t.queueId];
+e && e.itemComplete(t.id);
+};
+v.initQueueDeps = function(t) {
+var e = u[t._id];
+if (e) {
+e.completed.length = 0;
+e.deps.length = 0;
+} else e = u[t._id] = {
+completed: [],
+deps: []
+};
+};
+v.registerQueueDep = function(t, e) {
+var i = t.queueId || t;
+if (!i) return !1;
+var n = u[i];
+if (n) -1 === n.deps.indexOf(e) && n.deps.push(e); else if (t.id) for (var r in u) {
+var s = u[r];
+-1 !== s.deps.indexOf(t.id) && -1 === s.deps.indexOf(e) && s.deps.push(e);
+}
+};
+v.finishDep = function(t) {
+for (var e in u) {
+var i = u[e];
+-1 !== i.deps.indexOf(t) && -1 === i.completed.indexOf(t) && i.completed.push(t);
+}
+};
+var y = v.prototype;
+o.mixin(y, s.prototype);
+y.append = function(t, e) {
+if (!this.active) return [];
+e && !e.deps && (e.deps = []);
+this._appending = !0;
+var i, n, r, s = [];
+for (i = 0; i < t.length; ++i) if (!(n = t[i]).queueId || this.map[n.id]) {
+if (_(n)) {
+var o = (r = d(n, this._id)).id;
+if (!this.map[o]) {
+this.map[o] = r;
+this.totalCount++;
+e && e.deps.push(r);
+v.registerQueueDep(e || this._id, o);
+s.push(r);
+}
+}
+} else {
+this.map[n.id] = n;
+e && e.deps.push(n);
+if (n.complete || p(e, n)) {
+this.totalCount++;
+this.itemComplete(n.id);
+continue;
+}
+var a = this, l = c[n.queueId];
+if (l) {
+this.totalCount++;
+v.registerQueueDep(e || this._id, n.id);
+l.addListener(n.id, (function(t) {
+a.itemComplete(t.id);
+}));
+}
+}
+this._appending = !1;
+this.completedCount === this.totalCount ? this.allComplete() : this._pipeline.flowIn(s);
+return s;
+};
+y._childOnProgress = function(t) {
+if (this.onProgress) {
+var e = u[this._id];
+this.onProgress(e ? e.completed.length : this.completedCount, e ? e.deps.length : this.totalCount, t);
+}
+};
+y.allComplete = function() {
+var t = o.isEmptyObject(this._errorUrls) ? null : this._errorUrls;
+this.onComplete && this.onComplete(t, this);
+};
+y.isCompleted = function() {
+return this.completedCount >= this.totalCount;
+};
+y.isItemCompleted = function(t) {
+return !!this.completed[t];
+};
+y.exists = function(t) {
+return !!this.map[t];
+};
+y.getContent = function(t) {
+var e = this.map[t], i = null;
+e && (e.content ? i = e.content : e.alias && (i = e.alias.content));
+return i;
+};
+y.getError = function(t) {
+var e = this.map[t], i = null;
+e && (e.error ? i = e.error : e.alias && (i = e.alias.error));
+return i;
+};
+y.addListener = s.prototype.add;
+y.hasListener = s.prototype.has;
+y.removeListener = s.prototype.remove;
+y.removeAllListeners = s.prototype.removeAll;
+y.removeItem = function(t) {
+var e = this.map[t];
+if (e && this.completed[e.alias || t]) {
+delete this.completed[t];
+delete this.map[t];
+if (e.alias) {
+delete this.completed[e.alias.id];
+delete this.map[e.alias.id];
+}
+this.completedCount--;
+this.totalCount--;
+}
+};
+y.itemComplete = function(t) {
+var e = this.map[t];
+if (e) {
+var i = t in this._errorUrls;
+e.error instanceof Error || o.isString(e.error) ? this._errorUrls[t] = e.error : e.error ? o.mixin(this._errorUrls, e.error) : !e.error && i && delete this._errorUrls[t];
+this.completed[t] = e;
+this.completedCount++;
+v.finishDep(e.id);
+if (this.onProgress) {
+var n = u[this._id];
+this.onProgress(n ? n.completed.length : this.completedCount, n ? n.deps.length : this.totalCount, e);
+}
+this.invoke(t, e);
+this.removeAll(t);
+!this._appending && this.completedCount >= this.totalCount && this.allComplete();
+}
+};
+y.destroy = function() {
+this.active = !1;
+this._appending = !1;
+this._pipeline = null;
+this._ownerQueue = null;
+o.clear(this._errorUrls);
+this.onProgress = null;
+this.onComplete = null;
+this.map = o.createMap(!0);
+this.completed = {};
+this.totalCount = 0;
+this.completedCount = 0;
+s.call(this);
+if (u[this._id]) {
+u[this._id].completed.length = 0;
+u[this._id].deps.length = 0;
+}
+delete c[this._id];
+delete u[this._id];
+-1 === l.indexOf(this) && l.length < 10 && l.push(this);
+};
+cc.LoadingItems = n.exports = v;
+}), {
+"../platform/callbacks-invoker": 214,
+"../platform/js": 221,
+"../utils/CCPath": 285
+} ],
+158: [ (function(t, e, i) {
+"use strict";
+var n = t("./pipeline"), r = "MD5Pipe", s = /.*[/\\][0-9a-fA-F]{2}[/\\]([0-9a-fA-F-]{8,})/, o = function(t, e, i) {
+this.id = r;
+this.async = !1;
+this.pipeline = null;
+this.md5AssetsMap = t;
+this.md5NativeAssetsMap = e;
+this.libraryBase = i;
+};
+o.ID = r;
+o.prototype.handle = function(t) {
+t.url = this.transformURL(t.url);
+return null;
+};
+o.prototype.transformURL = function(t) {
+var e = !t.startsWith(this.libraryBase) ? this.md5NativeAssetsMap : this.md5AssetsMap;
+return t = t.replace(s, (function(t, i) {
+var n = e[i];
+return n ? t + "." + n : t;
+}));
+};
+n.MD5Pipe = e.exports = o;
+}), {
+"./pipeline": 160
+} ],
+159: [ (function(i, n, r) {
+"use strict";
+var s = i("./unpackers"), o = i("../utils/misc").pushToMap, a = {
+Invalid: 0,
+Removed: 1,
+Downloading: 2,
+Loaded: 3
+};
+function c() {
+this.unpacker = null;
+this.state = a.Invalid;
+}
+var l = {}, h = {}, u = {};
+function _(t, e) {
+return new Error("Can not retrieve " + t + " from packer " + e);
+}
+n.exports = {
+initPacks: function(t) {
+h = t;
+l = {};
+for (var e in t) for (var i = t[e], n = 0; n < i.length; n++) {
+var r = i[n], s = 1 === i.length;
+o(l, r, e, s);
+}
+},
+_loadNewPack: function(t, e, i) {
+var n = this, r = cc.AssetLibrary.getLibUrlNoExt(e) + ".json";
+cc.loader.load({
+url: r,
+ignoreMaxConcurrency: !0
+}, (function(r, s) {
+if (r) {
+cc.errorID(4916, t);
+return i(r);
+}
+var o = n._doLoadNewPack(t, e, s);
+o ? i(null, o) : i(_(t, e));
+}));
+},
+_doPreload: function(t, e) {
+var i = u[t];
+i || ((i = u[t] = new c()).state = a.Downloading);
+if (i.state !== a.Loaded) {
+i.unpacker = new s.JsonUnpacker();
+i.unpacker.load(h[t], e);
+i.state = a.Loaded;
+}
+},
+_doLoadNewPack: function(i, n, r) {
+var o = u[n];
+if (o.state !== a.Loaded) {
+"string" === ("object" === (e = typeof r) ? t(r) : e) && (r = JSON.parse(r));
+Array.isArray(r) ? o.unpacker = new s.JsonUnpacker() : r.type === s.TextureUnpacker.ID && (o.unpacker = new s.TextureUnpacker());
+o.unpacker.load(h[n], r);
+o.state = a.Loaded;
+}
+return o.unpacker.retrieve(i);
+},
+_selectLoadedPack: function(t) {
+for (var e = a.Invalid, i = "", n = 0; n < t.length; n++) {
+var r = t[n], s = u[r];
+if (s) {
+var o = s.state;
+if (o === a.Loaded) return r;
+if (o > e) {
+e = o;
+i = r;
+}
+}
+}
+return e !== a.Invalid ? i : t[0];
+},
+load: function(t, e) {
+var i = t.uuid, n = l[i];
+if (n) {
+Array.isArray(n) && (n = this._selectLoadedPack(n));
+var r = u[n];
+if (r && r.state === a.Loaded) {
+var s = r.unpacker.retrieve(i);
+return s || _(i, n);
+}
+if (!r) {
+console.log("Create unpacker %s for %s", n, i);
+(r = u[n] = new c()).state = a.Downloading;
+}
+this._loadNewPack(i, n, e);
+return null;
+}
+}
+};
+0;
+}), {
+"../utils/misc": 297,
+"./unpackers": 164
+} ],
+160: [ (function(t, e, i) {
+"use strict";
+var n = t("../platform/js"), r = t("./loading-items"), s = r.ItemState;
+function o(t, e) {
+var i = t.id, n = e.states[i], r = t.next, a = t.pipeline;
+if (!e.error && n !== s.WORKING && n !== s.ERROR) if (n === s.COMPLETE) r ? o(r, e) : a.flowOut(e); else {
+e.states[i] = s.WORKING;
+var c = t.handle(e, (function(t, n) {
+if (t) {
+e.error = t;
+e.states[i] = s.ERROR;
+a.flowOut(e);
+} else {
+n && (e.content = n);
+e.states[i] = s.COMPLETE;
+r ? o(r, e) : a.flowOut(e);
+}
+}));
+if (c instanceof Error) {
+e.error = c;
+e.states[i] = s.ERROR;
+a.flowOut(e);
+} else if (void 0 !== c) {
+null !== c && (e.content = c);
+e.states[i] = s.COMPLETE;
+r ? o(r, e) : a.flowOut(e);
+}
+}
+}
+var a = function(t) {
+this._pipes = t;
+this._cache = n.createMap(!0);
+for (var e = 0; e < t.length; ++e) {
+var i = t[e];
+if (i.handle && i.id) {
+i.pipeline = this;
+i.next = e < t.length - 1 ? t[e + 1] : null;
+}
+}
+};
+a.ItemState = s;
+var c = a.prototype;
+c.insertPipe = function(t, e) {
+if (!t.handle || !t.id || e > this._pipes.length) cc.warnID(4921); else if (this._pipes.indexOf(t) > 0) cc.warnID(4922); else {
+t.pipeline = this;
+var i = null;
+e < this._pipes.length && (i = this._pipes[e]);
+var n = null;
+e > 0 && (n = this._pipes[e - 1]);
+n && (n.next = t);
+t.next = i;
+this._pipes.splice(e, 0, t);
+}
+};
+c.insertPipeAfter = function(t, e) {
+var i = this._pipes.indexOf(t);
+i < 0 || this.insertPipe(e, i + 1);
+};
+c.appendPipe = function(t) {
+if (t.handle && t.id) {
+t.pipeline = this;
+t.next = null;
+this._pipes.length > 0 && (this._pipes[this._pipes.length - 1].next = t);
+this._pipes.push(t);
+}
+};
+c.flowIn = function(t) {
+var e, i, n = this._pipes[0];
+if (n) {
+for (e = 0; e < t.length; e++) {
+i = t[e];
+this._cache[i.id] = i;
+}
+for (e = 0; e < t.length; e++) o(n, i = t[e]);
+} else for (e = 0; e < t.length; e++) this.flowOut(t[e]);
+};
+c.flowInDeps = function(t, e, i) {
+return r.create(this, (function(t, e) {
+i(t, e);
+e.destroy();
+})).append(e, t);
+};
+c.flowOut = function(t) {
+t.error ? delete this._cache[t.id] : this._cache[t.id] || (this._cache[t.id] = t);
+t.complete = !0;
+r.itemComplete(t);
+};
+c.copyItemStates = function(t, e) {
+if (e instanceof Array) for (var i = 0; i < e.length; ++i) e[i].states = t.states; else e.states = t.states;
+};
+c.getItem = function(t) {
+var e = this._cache[t];
+if (!e) return e;
+e.alias && (e = e.alias);
+return e;
+};
+c.removeItem = function(t) {
+var e = this._cache[t];
+e && e.complete && delete this._cache[t];
+return e;
+};
+c.clear = function() {
+for (var t in this._cache) {
+var e = this._cache[t];
+delete this._cache[t];
+if (!e.complete) {
+e.error = new Error("Canceled manually");
+this.flowOut(e);
+}
+}
+};
+cc.Pipeline = e.exports = a;
+}), {
+"../platform/js": 221,
+"./loading-items": 157
+} ],
+161: [ (function(t, e, i) {
+"use strict";
+}), {
+"../platform/js": 221
+} ],
+162: [ (function(t, e, i) {
+"use strict";
+var n = t("./pipeline"), r = "SubPackPipe", s = /.*[/\\][0-9a-fA-F]{2}[/\\]([0-9a-fA-F-]{8,})/;
+function o(t) {
+var e = t.match(s);
+return e ? e[1] : "";
+}
+var a = Object.create(null), c = function(t) {
+this.id = r;
+this.async = !1;
+this.pipeline = null;
+for (var e in t) {
+var i = t[e];
+i.uuids && i.uuids.forEach((function(t) {
+a[t] = i.path;
+}));
+}
+};
+c.ID = r;
+c.prototype.handle = function(t) {
+t.url = this.transformURL(t.url);
+return null;
+};
+c.prototype.transformURL = function(t) {
+var e = o(t);
+if (e) {
+var i = a[e];
+if (i) return t.replace("res/raw-assets/", i + "raw-assets/");
+}
+return t;
+};
+n.SubPackPipe = e.exports = c;
+}), {
+"./pipeline": 160
+} ],
+163: [ (function(t, e, i) {
+"use strict";
+var n = t("./utils").urlAppendTimestamp;
+e.exports = function(t, e) {
+var i = t.url;
+i = n(i);
+var r = cc.loader.getXMLHttpRequest(), s = "Load text file failed: " + i;
+r.open("GET", i, !0);
+r.overrideMimeType && r.overrideMimeType("text/plain; charset=utf-8");
+r.onload = function() {
+4 === r.readyState ? 200 === r.status || 0 === r.status ? e(null, r.responseText) : e({
+status: r.status,
+errorMessage: s + "(wrong status)"
+}) : e({
+status: r.status,
+errorMessage: s + "(wrong readyState)"
+});
+};
+r.onerror = function() {
+e({
+status: r.status,
+errorMessage: s + "(error)"
+});
+};
+r.ontimeout = function() {
+e({
+status: r.status,
+errorMessage: s + "(time out)"
+});
+};
+r.send(null);
+};
+}), {
+"./utils": 165
+} ],
+164: [ (function(t, e, i) {
+"use strict";
+var n = t("../assets/CCTexture2D"), r = t("../platform/js");
+function s() {
+this.jsons = {};
+}
+s.prototype.load = function(t, e) {
+e.length !== t.length && cc.errorID(4915);
+for (var i = 0; i < t.length; i++) {
+var n = t[i], r = e[i];
+this.jsons[n] = r;
+}
+};
+s.prototype.retrieve = function(t) {
+return this.jsons[t] || null;
+};
+function o() {
+this.contents = {};
+}
+o.ID = r._getClassId(n);
+o.prototype.load = function(t, e) {
+var i = e.data.split("|");
+i.length !== t.length && cc.errorID(4915);
+for (var n = 0; n < t.length; n++) this.contents[t[n]] = i[n];
+};
+o.prototype.retrieve = function(t) {
+var e = this.contents[t];
+return e ? {
+__type__: o.ID,
+content: e
+} : null;
+};
+0;
+e.exports = {
+JsonUnpacker: s,
+TextureUnpacker: o
+};
+}), {
+"../assets/CCTexture2D": 73,
+"../platform/js": 221
+} ],
+165: [ (function(i, n, r) {
+"use strict";
+var s = /\?/;
+n.exports = {
+urlAppendTimestamp: function(i) {
+cc.game.config.noCache && "string" === ("object" === (e = typeof i) ? t(i) : e) && (s.test(i) ? i += "&_t=" + (new Date() - 0) : i += "?_t=" + (new Date() - 0));
+return i;
+}
+};
+}), {} ],
+166: [ (function(i, n, r) {
+"use strict";
+var s = i("../platform/js"), o = i("../CCDebug");
+i("../platform/deserialize");
+var a = i("./loading-items");
+function c(t) {
+return t && (t[0] && "cc.Scene" === t[0].__type__ || t[1] && "cc.Scene" === t[1].__type__ || t[0] && "cc.Prefab" === t[0].__type__);
+}
+function l(t, e, i, n) {
+var r, s, o, a = i.uuidList, c = i.uuidObjList, l = i.uuidPropList, h = i._stillUseUrl, u = t.dependKeys = [];
+if (n) {
+r = [];
+for (s = 0; s < a.length; s++) {
+o = a[s];
+var _ = c[s], f = l[s], d = cc.AssetLibrary._getAssetInfoInRuntime(o);
+if (d.raw) {
+var m = d.url;
+_[f] = m;
+u.push(m);
+} else r.push({
+type: "uuid",
+uuid: o,
+deferredLoadRaw: !0,
+_owner: _,
+_ownerProp: f,
+_stillUseUrl: h[s]
+});
+}
+} else {
+r = new Array(a.length);
+for (s = 0; s < a.length; s++) {
+o = a[s];
+r[s] = {
+type: "uuid",
+uuid: o,
+_owner: c[s],
+_ownerProp: l[s],
+_stillUseUrl: h[s]
+};
+}
+e._native && !e.constructor.preventPreloadNativeObject && r.push({
+url: e.nativeUrl,
+_owner: e,
+_ownerProp: "_nativeAsset"
+});
+}
+return r;
+}
+function h(t, e, i, n, r) {
+e.content = i;
+var s = e.dependKeys;
+t.flowInDeps(e, n, (function(t, e) {
+var o, c = e.map;
+for (var l in c) (o = c[l]).uuid && o.content && (o.content._uuid = o.uuid);
+for (var h = 0; h < n.length; h++) {
+var u = function(t) {
+var e = t.content;
+this._stillUseUrl && (e = e && cc.RawAsset.wasRawAssetType(e.constructor) ? e.nativeUrl : t.rawUrl);
+"_nativeAsset" === this._ownerProp && (this._owner.url = t.url);
+this._owner[this._ownerProp] = e;
+t.uuid !== i._uuid && s.indexOf(t.id) < 0 && s.push(t.id);
+}, _ = n[h], f = _.uuid, d = _.url;
+_._owner, _._ownerProp;
+if (o = c[d]) {
+var m = _;
+if (o.complete || o.content) if (o.error) {
+cc._throw(o.error.message || o.error.errorMessage || o.error);
+} else u.call(m, o); else {
+var p = a.getQueue(o), v = p._callbackTable[f];
+v ? v.unshift(u, m) : p.addListener(f, u, m);
+}
+}
+}
+if (!t && i.onLoad) try {
+i.onLoad();
+} catch (t) {
+cc._throw(t);
+}
+r(t, i);
+}));
+}
+function u(t, e, i) {
+0;
+var n = e.deferredLoadRaw;
+n ? t instanceof cc.Asset && t.constructor.preventDeferredLoadDependents && (n = !1) : i && (t instanceof cc.SceneAsset || t instanceof cc.Prefab) && (n = t.asyncLoadAssets);
+return n;
+}
+function _(i, n) {
+0;
+var r, a;
+if ("string" === ("object" === (e = typeof i.content) ? t(i.content) : e)) try {
+r = JSON.parse(i.content);
+} catch (t) {
+return new Error(o.getError(4923, i.id, t.stack));
+} else {
+if ("object" !== ("object" === (e = typeof i.content) ? t(i.content) : e)) return new Error(o.getError(4924));
+r = i.content;
+}
+var _ = c(r);
+a = _ ? cc._MissingScript.safeFindClass : function(t) {
+var e = s._getClassById(t);
+if (e) return e;
+cc.warnID(4903, t);
+return Object;
+};
+var f, d = cc.deserialize.Details.pool.get();
+try {
+f = cc.deserialize(r, d, {
+classFinder: a,
+target: i.existingAsset,
+customEnv: i
+});
+} catch (t) {
+cc.deserialize.Details.pool.put(d);
+var m = t + "\n" + t.stack;
+return new Error(o.getError(4925, i.id, m));
+}
+f._uuid = i.uuid;
+f.url = f.nativeUrl;
+0;
+var p = l(i, f, d, u(f, i, _));
+cc.deserialize.Details.pool.put(d);
+if (0 === p.length) {
+f.onLoad && f.onLoad();
+return n(null, f);
+}
+h(this.pipeline, i, f, p, n);
+}
+n.exports = _;
+_.isSceneObj = c;
+}), {
+"../CCDebug": 49,
+"../platform/deserialize": 216,
+"../platform/js": 221,
+"./loading-items": 157
+} ],
+167: [ (function(i, n, r) {
+"use strict";
+var s = c(i("../../renderer/core/input-assembler")), o = c(i("../../renderer/gfx")), a = i("./mesh-data");
+function c(t) {
+return t && t.__esModule ? t : {
+default: t
+};
+}
+var l = i("../renderer"), h = i("../event/event-target");
+function u(t, e, i) {
+t[e] = i._val;
+}
+function _(t, e, i) {
+t[e] = i.x;
+t[e + 1] = i.y;
+}
+function f(t, e, i) {
+t[e] = i.x;
+t[e + 1] = i.y;
+t[e + 2] = i.z;
+}
+var d = cc.Class({
+name: "cc.Mesh",
+extends: cc.Asset,
+mixins: [ h ],
+properties: {
+_nativeAsset: {
+override: !0,
+get: function() {
+return this._buffer;
+},
+set: function(t) {
+this._buffer = ArrayBuffer.isView(t) ? t.buffer : t;
+this.initWithBuffer();
+}
+},
+_vertexBundles: {
+default: null,
+type: a.VertexBundle
+},
+_primitives: {
+default: null,
+Primitive: a.Primitive
+},
+_minPos: cc.v3(),
+_maxPos: cc.v3(),
+subMeshes: {
+get: function() {
+return this._subMeshes;
+},
+set: function(t) {
+this._subMeshes = t;
+}
+}
+},
+ctor: function() {
+this._subMeshes = [];
+this.loaded = !1;
+this._ibs = [];
+this._vbs = [];
+},
+initWithBuffer: function() {
+this._subMeshes.length = 0;
+for (var t = this._primitives, e = 0; e < t.length; e++) {
+var i = t[e], n = i.data, r = new Uint16Array(this._buffer, n.offset, n.length / 2), a = new o.default.IndexBuffer(l.device, i.indexUnit, o.default.USAGE_STATIC, r, r.length), c = this._vertexBundles[i.vertexBundleIndices[0]], h = c.data, u = new o.default.VertexFormat(c.formats), _ = new Uint8Array(this._buffer, h.offset, h.length), f = new o.default.VertexBuffer(l.device, u, o.default.USAGE_STATIC, _, c.verticesCount);
+this._subMeshes.push(new s.default(f, a));
+this._ibs.push({
+buffer: a,
+data: r
+});
+this._vbs.push({
+buffer: f,
+data: _
+});
+}
+this.loaded = !0;
+this.emit("load");
+},
+init: function(t, e, i) {
+this.clear();
+var n = new Uint8Array(t._bytes * e), r = new o.default.VertexBuffer(l.device, t, i ? o.default.USAGE_DYNAMIC : o.default.USAGE_STATIC, n, e);
+this._vbs[0] = {
+buffer: r,
+data: n,
+dirty: !0
+};
+this.loaded = !0;
+this.emit("load");
+this.emit("init-format");
+},
+setVertices: function(i, n, r) {
+r = r || 0;
+var s = this._vbs[r], a = s.buffer._format._attr2el[i];
+if (!a) return cc.warn("Cannot find " + i + " attribute in vertex defines.");
+var c = "number" === ("object" === (e = typeof n[0]) ? t(n[0]) : e), l = a.num, h = Float32Array, d = 4;
+if (i === o.default.ATTR_COLOR) if (c) {
+h = Uint8Array;
+d = 1;
+} else h = Uint32Array;
+var m = s[h.name];
+if (!m) {
+var p = s.data;
+m = s[h.name] = new h(p.buffer, p.byteOffset, p.byteLength / d);
+}
+var v = a.stride / d, y = a.offset / d;
+if (c) for (var g = 0, x = n.length / l; g < x; g++) for (var C = g * l, b = g * v + y, A = 0; A < l; A++) m[b + A] = n[C + A]; else {
+var S = void 0;
+S = i === o.default.ATTR_COLOR ? u : 2 === l ? _ : f;
+for (var w = 0, T = n.length; w < T; w++) {
+S(m, w * v + y, n[w]);
+}
+}
+s.dirty = !0;
+},
+setIndices: function(t, e, i) {
+e = e || 0;
+var n = new Uint16Array(t), r = i ? o.default.USAGE_DYNAMIC : o.default.USAGE_STATIC, a = this._ibs[e];
+if (a) {
+a.buffer._usage = r;
+a.data = n;
+a.dirty = !0;
+} else {
+var c = new o.default.IndexBuffer(l.device, o.default.INDEX_FMT_UINT16, r, n, n.length);
+this._ibs[e] = {
+buffer: c,
+data: n,
+dirty: !1
+};
+var h = this._vbs[0];
+this._subMeshes[e] = new s.default(h.buffer, c);
+}
+},
+setPrimitiveType: function(t, e) {
+e = e || 0;
+this._subMeshes[e] ? this._subMeshes[e]._primitiveType = t : cc.warn("Do not have sub mesh at index " + e);
+},
+clear: function() {
+this._subMeshes.length = 0;
+for (var t = this._ibs, e = 0; e < t.length; e++) t[e].buffer.destroy();
+t.length = 0;
+for (var i = this._vbs, n = 0; n < i.length; n++) i[n].buffer.destroy();
+i.length = 0;
+},
+setBoundingBox: function(t, e) {
+this._minPos = t;
+this._maxPos = e;
+},
+destroy: function() {
+this.clear();
+},
+_uploadData: function() {
+for (var t = this._vbs, e = 0; e < t.length; e++) {
+var i = t[e];
+if (i.dirty) {
+var n = i.buffer, r = i.data;
+n._numVertices = r.byteLength / n._format._bytes;
+n._bytes = r.byteLength;
+n.update(0, r);
+i.dirty = !1;
+}
+}
+for (var s = this._ibs, o = 0; o < s.length; o++) {
+var a = s[o];
+if (a.dirty) {
+var c = a.buffer, l = a.data;
+c._numIndices = l.length;
+c._bytes = l.byteLength;
+c.update(0, l);
+a.dirty = !1;
+}
+}
+}
+});
+cc.Mesh = n.exports = d;
+}), {
+"../../renderer/core/input-assembler": 339,
+"../../renderer/gfx": 349,
+"../event/event-target": 133,
+"../renderer": 244,
+"./mesh-data": 170
+} ],
+168: [ (function(t, e, i) {
+"use strict";
+var n = a(t("../geom-utils")), r = a(t("../../renderer/gfx")), s = a(t("../assets/material/custom-properties")), o = t("../utils/mesh-util");
+function a(t) {
+return t && t.__esModule ? t : {
+default: t
+};
+}
+var c = t("../components/CCRenderComponent"), l = t("./CCMesh"), h = t("../renderer/render-flow"), u = t("../assets/material/CCMaterial"), _ = cc.Enum({
+OFF: 0,
+ON: 1
+}), f = cc.Class({
+name: "cc.MeshRenderer",
+extends: c,
+editor: !1,
+properties: {
+_mesh: {
+default: null,
+type: l
+},
+_receiveShadows: !1,
+_shadowCastingMode: _.OFF,
+mesh: {
+get: function() {
+return this._mesh;
+},
+set: function(t) {
+if (this._mesh !== t) {
+this._setMesh(t);
+if (t) {
+this.markForRender(!0);
+this._activateMaterial(!0);
+this.markForUpdateRenderData(!0);
+this.node._renderFlag |= h.FLAG_TRANSFORM;
+} else this.markForRender(!1);
+}
+},
+type: l,
+animatable: !1
+},
+textures: {
+default: [],
+type: cc.Texture2D,
+visible: !1
+},
+receiveShadows: {
+get: function() {
+return this._receiveShadows;
+},
+set: function(t) {
+this._receiveShadows = t;
+this._updateReceiveShadow();
+},
+animatable: !1
+},
+shadowCastingMode: {
+get: function() {
+return this._shadowCastingMode;
+},
+set: function(t) {
+this._shadowCastingMode = t;
+this._updateCastShadow();
+},
+type: _,
+animatable: !1
+}
+},
+statics: {
+ShadowCastingMode: _
+},
+ctor: function() {
+this._renderDatas = [];
+this._boundingBox = null;
+this._customProperties = new s.default();
+},
+onEnable: function() {
+this._super();
+if (this._mesh && !this._mesh.loaded) {
+this.disableRender();
+var t = this;
+this._mesh.once("load", (function() {
+t._setMesh(t._mesh);
+t._activateMaterial();
+}));
+(0, o.postLoadMesh)(this._mesh);
+} else {
+this._setMesh(this._mesh);
+this._activateMaterial();
+}
+},
+onDestroy: function() {
+this._setMesh(null);
+},
+getRenderNode: function() {
+return this.node;
+},
+_setMesh: function(t) {
+this._mesh && this._mesh.off("init-format", this._updateMeshAttribute, this);
+t && t.on("init-format", this._updateMeshAttribute, this);
+this._mesh = t;
+},
+_getDefaultMaterial: function() {
+return u.getBuiltinMaterial("unlit");
+},
+_activateMaterial: function(t) {
+var e = this._mesh;
+if (e && 0 !== e.subMeshes.length) {
+n.default && (this._boundingBox = n.default.Aabb.fromPoints(n.default.Aabb.create(), e._minPos, e._maxPos));
+var i = this.textures;
+if (i && i.length > 0) for (var r = 0; r < i.length; r++) {
+var s = this.sharedMaterials[r];
+if (!s) {
+(s = cc.Material.getInstantiatedMaterial(this._getDefaultMaterial(), this)).setProperty("diffuseTexture", i[r]);
+this.setMaterial(r, s);
+}
+}
+var o = this.sharedMaterials;
+if (!o[0]) {
+var a = this._getDefaultMaterial();
+o[0] = a;
+}
+this._updateMeshAttribute();
+this._updateReceiveShadow();
+this._updateCastShadow();
+this.markForUpdateRenderData(!0);
+this.markForRender(!0);
+} else this.disableRender();
+},
+_updateReceiveShadow: function() {
+this._customProperties.define("_USE_SHADOW_MAP", this._receiveShadows);
+},
+_updateCastShadow: function() {
+this._customProperties.define("_SHADOW_CASTING", this._shadowCastingMode === _.ON);
+},
+_updateMeshAttribute: function() {
+var t = this._mesh && this._mesh.subMeshes;
+if (t) {
+var e = t[0]._vertexBuffer._format._attr2el;
+this._customProperties.define("_USE_ATTRIBUTE_COLOR", !!e[r.default.ATTR_COLOR]);
+this._customProperties.define("_USE_ATTRIBUTE_UV0", !!e[r.default.ATTR_UV0]);
+this._customProperties.define("_USE_ATTRIBUTE_NORMAL", !!e[r.default.ATTR_NORMAL]);
+}
+}
+});
+cc.MeshRenderer = e.exports = f;
+}), {
+"../../renderer/gfx": 349,
+"../assets/material/CCMaterial": 75,
+"../assets/material/custom-properties": 76,
+"../components/CCRenderComponent": 106,
+"../geom-utils": 138,
+"../renderer/render-flow": 245,
+"../utils/mesh-util": 296,
+"./CCMesh": 167
+} ],
+169: [ (function(t, e, i) {
+"use strict";
+t("./CCMesh");
+t("./CCMeshRenderer");
+t("./mesh-renderer");
+}), {
+"./CCMesh": 167,
+"./CCMeshRenderer": 168,
+"./mesh-renderer": 171
+} ],
+170: [ (function(t, e, i) {
+"use strict";
+i.__esModule = !0;
+i.Primitive = i.VertexBundle = i.VertexFormat = i.BufferRange = void 0;
+var n = (function(t) {
+return t && t.__esModule ? t : {
+default: t
+};
+})(t("../../renderer/gfx"));
+var r = i.BufferRange = cc.Class({
+name: "cc.BufferRange",
+properties: {
+offset: 0,
+length: 0
+}
+}), s = i.VertexFormat = cc.Class({
+name: "cc.mesh.VertexFormat",
+properties: {
+name: "",
+type: -1,
+num: -1,
+normalize: !1
+}
+});
+i.VertexBundle = cc.Class({
+name: "cc.mesh.VertexBundle",
+properties: {
+data: {
+default: null,
+type: r
+},
+formats: {
+default: [],
+type: s
+},
+verticesCount: 0
+}
+}), i.Primitive = cc.Class({
+name: "cc.mesh.Primitive",
+properties: {
+vertexBundleIndices: {
+default: [],
+type: Number
+},
+data: {
+default: null,
+type: r
+},
+indexUnit: n.default.INDEX_FMT_UINT16,
+topology: n.default.PT_TRIANGLES
+}
+});
+}), {
+"../../renderer/gfx": 349
+} ],
+171: [ (function(t, e, i) {
+"use strict";
+var n = o(t("../../renderer/gfx")), r = o(t("../../renderer/core/input-assembler")), s = o(t("../../renderer/render-data/ia-render-data"));
+function o(t) {
+return t && t.__esModule ? t : {
+default: t
+};
+}
+var a = t("../assets/material/CCMaterial"), c = t("./CCMeshRenderer"), l = cc.Color.BLACK, h = {
+updateRenderData: function(t) {
+var e = t._renderDatas;
+e.length = 0;
+if (t.mesh) for (var i = t.mesh._subMeshes, n = 0; n < i.length; n++) {
+var r = new s.default();
+r.material = t.sharedMaterials[n] || t.sharedMaterials[0];
+r.ia = i[n];
+e.push(r);
+}
+},
+createWireFrameData: function(t, e, i, o) {
+var c = new s.default(), h = new a();
+h.copy(a.getBuiltinMaterial("unlit"));
+h.setProperty("diffuseColor", l);
+h.define("USE_DIFFUSE_TEXTURE", !1);
+c.material = h;
+for (var u = [], _ = 0; _ < e.length; _ += 3) {
+var f = e[_ + 0], d = e[_ + 1], m = e[_ + 2];
+u.push(f, d, d, m, m, f);
+}
+var p = new Uint16Array(u), v = new n.default.IndexBuffer(o._device, n.default.INDEX_FMT_UINT16, n.default.USAGE_STATIC, p, p.length);
+c.ia = new r.default(t._vertexBuffer, v, n.default.PT_LINES);
+return c;
+},
+fillBuffers: function(t, e) {
+e._flush();
+var i = t._renderDatas, n = t.mesh._subMeshes;
+if (cc.macro.SHOW_MESH_WIREFRAME) {
+if (i.length === n.length) for (var r = t.mesh._ibs, s = 0; s < n.length; s++) {
+var o = i[s];
+i.push(this.createWireFrameData(o.ia, r[s].data, o.material, e));
+}
+} else i.length = n.length;
+var a = e.material, c = e.node;
+e.node = t.getRenderNode();
+e.customProperties = t._customProperties;
+var l = e.customProperties;
+t.mesh._uploadData();
+for (var h = 0; h < i.length; h++) {
+var u = i[h], _ = u.material;
+e.material = _;
+e._flushIA(u);
+}
+e.customProperties = l;
+e.node = c;
+e.material = a;
+}
+};
+e.exports = c._assembler = h;
+}), {
+"../../renderer/core/input-assembler": 339,
+"../../renderer/gfx": 349,
+"../../renderer/render-data/ia-render-data": 368,
+"../assets/material/CCMaterial": 75,
+"./CCMeshRenderer": 168
+} ],
+172: [ (function(t, e, i) {
+"use strict";
+var n = t("./component-scheduler"), r = t("./platform/CCObject").Flags, s = t("./platform/js"), o = r.IsPreloadStarted, a = r.IsOnLoadStarted, c = r.IsOnLoadCalled, l = r.Deactivating, h = cc.Class({
+extends: n.LifeCycleInvoker,
+add: function(t) {
+this._zero.array.push(t);
+},
+remove: function(t) {
+this._zero.fastRemove(t);
+},
+cancelInactive: function(t) {
+n.LifeCycleInvoker.stableRemoveInactive(this._zero, t);
+},
+invoke: function() {
+this._invoke(this._zero);
+this._zero.array.length = 0;
+}
+}), u = n.createInvokeImpl("c.__preload();"), _ = n.createInvokeImpl("c.onLoad();c._objFlags|=" + c, !1, c), f = new s.Pool(4);
+f.get = function() {
+var t = this._get() || {
+preload: new h(u),
+onLoad: new n.OneOffInvoker(_),
+onEnable: new n.OneOffInvoker(n.invokeOnEnable)
+};
+t.preload._zero.i = -1;
+var e = t.onLoad;
+e._zero.i = -1;
+e._neg.i = -1;
+e._pos.i = -1;
+(e = t.onEnable)._zero.i = -1;
+e._neg.i = -1;
+e._pos.i = -1;
+return t;
+};
+function d(t, e, i) {
+0;
+e ? t._removeComponent(e) : s.array.removeAt(t._components, i);
+}
+function m() {
+this._activatingStack = [];
+}
+var p = cc.Class({
+ctor: m,
+reset: m,
+_activateNodeRecursively: function(t, e, i, n) {
+if (t._objFlags & l) cc.errorID(3816, t.name); else {
+t._activeInHierarchy = !0;
+for (var r = t._components.length, s = 0; s < r; ++s) {
+var o = t._components[s];
+if (o instanceof cc.Component) this.activateComp(o, e, i, n); else {
+d(t, o, s);
+--s;
+--r;
+}
+}
+t._childArrivalOrder = t._children.length;
+for (var a = 0, c = t._children.length; a < c; ++a) {
+var h = t._children[a];
+h._localZOrder = 4294901760 & h._localZOrder | a + 1;
+h._active && this._activateNodeRecursively(h, e, i, n);
+}
+t._onPostActivated(!0);
+}
+},
+_deactivateNodeRecursively: function(t) {
+0;
+t._objFlags |= l;
+t._activeInHierarchy = !1;
+for (var e = t._components.length, i = 0; i < e; ++i) {
+var n = t._components[i];
+if (n._enabled) {
+cc.director._compScheduler.disableComp(n);
+if (t._activeInHierarchy) {
+t._objFlags &= ~l;
+return;
+}
+}
+}
+for (var r = 0, s = t._children.length; r < s; ++r) {
+var o = t._children[r];
+if (o._activeInHierarchy) {
+this._deactivateNodeRecursively(o);
+if (t._activeInHierarchy) {
+t._objFlags &= ~l;
+return;
+}
+}
+}
+t._onPostActivated(!1);
+t._objFlags &= ~l;
+},
+activateNode: function(t, e) {
+if (e) {
+var i = f.get();
+this._activatingStack.push(i);
+this._activateNodeRecursively(t, i.preload, i.onLoad, i.onEnable);
+i.preload.invoke();
+i.onLoad.invoke();
+i.onEnable.invoke();
+this._activatingStack.pop();
+f.put(i);
+} else {
+this._deactivateNodeRecursively(t);
+for (var n = this._activatingStack, r = 0; r < n.length; r++) {
+var s = n[r];
+s.preload.cancelInactive(o);
+s.onLoad.cancelInactive(a);
+s.onEnable.cancelInactive();
+}
+}
+t.emit("active-in-hierarchy-changed", t);
+},
+activateComp: function(t, e, i, n) {
+if (cc.isValid(t, !0)) {
+if (!(t._objFlags & o)) {
+t._objFlags |= o;
+t.__preload && (e ? e.add(t) : t.__preload());
+}
+if (!(t._objFlags & a)) {
+t._objFlags |= a;
+if (t.onLoad) if (i) i.add(t); else {
+t.onLoad();
+t._objFlags |= c;
+} else t._objFlags |= c;
+}
+if (t._enabled) {
+if (!t.node._activeInHierarchy) return;
+cc.director._compScheduler.enableComp(t, n);
+}
+}
+},
+destroyComp: function(t) {
+cc.director._compScheduler.disableComp(t);
+t.onDestroy && t._objFlags & c && t.onDestroy();
+},
+resetComp: !1
+});
+e.exports = p;
+}), {
+"./component-scheduler": 89,
+"./platform/CCObject": 207,
+"./platform/js": 221,
+"./utils/misc": 297
+} ],
+173: [ (function(t, e, i) {
+"use strict";
+var n = t("./CCPhysicsTypes").PTM_RATIO, r = t("./CCPhysicsTypes").ContactType, s = [], o = [ cc.v2(), cc.v2() ], a = new b2.WorldManifold(), c = {
+points: [],
+separations: [],
+normal: cc.v2()
+};
+function l() {
+this.localPoint = cc.v2();
+this.normalImpulse = 0;
+this.tangentImpulse = 0;
+}
+var h = [ new l(), new l() ], u = (new b2.Manifold(), {
+type: 0,
+localPoint: cc.v2(),
+localNormal: cc.v2(),
+points: []
+}), _ = {
+normalImpulses: [],
+tangentImpulses: []
+};
+function f() {}
+f.prototype.init = function(t) {
+this.colliderA = t.GetFixtureA().collider;
+this.colliderB = t.GetFixtureB().collider;
+this.disabled = !1;
+this.disabledOnce = !1;
+this._impulse = null;
+this._inverted = !1;
+this._b2contact = t;
+t._contact = this;
+};
+f.prototype.reset = function() {
+this.setTangentSpeed(0);
+this.resetFriction();
+this.resetRestitution();
+this.colliderA = null;
+this.colliderB = null;
+this.disabled = !1;
+this._impulse = null;
+this._b2contact._contact = null;
+this._b2contact = null;
+};
+f.prototype.getWorldManifold = function() {
+var t = c.points, e = c.separations, i = c.normal;
+this._b2contact.GetWorldManifold(a);
+var r = a.points, s = a.separations, l = this._b2contact.GetManifold().pointCount;
+t.length = e.length = l;
+for (var h = 0; h < l; h++) {
+var u = o[h];
+u.x = r[h].x * n;
+u.y = r[h].y * n;
+t[h] = u;
+e[h] = s[h] * n;
+}
+i.x = a.normal.x;
+i.y = a.normal.y;
+if (this._inverted) {
+i.x *= -1;
+i.y *= -1;
+}
+return c;
+};
+f.prototype.getManifold = function() {
+for (var t = u.points, e = u.localNormal, i = u.localPoint, r = this._b2contact.GetManifold(), s = r.points, o = t.length = r.pointCount, a = 0; a < o; a++) {
+var c = h[a], l = s[a];
+c.localPoint.x = l.localPoint.x * n;
+c.localPoint.Y = l.localPoint.Y * n;
+c.normalImpulse = l.normalImpulse * n;
+c.tangentImpulse = l.tangentImpulse;
+t[a] = c;
+}
+i.x = r.localPoint.x * n;
+i.y = r.localPoint.y * n;
+e.x = r.localNormal.x;
+e.y = r.localNormal.y;
+u.type = r.type;
+if (this._inverted) {
+e.x *= -1;
+e.y *= -1;
+}
+return u;
+};
+f.prototype.getImpulse = function() {
+var t = this._impulse;
+if (!t) return null;
+for (var e = _.normalImpulses, i = _.tangentImpulses, r = t.count, s = 0; s < r; s++) {
+e[s] = t.normalImpulses[s] * n;
+i[s] = t.tangentImpulses[s];
+}
+i.length = e.length = r;
+return _;
+};
+f.prototype.emit = function(t) {
+var e;
+switch (t) {
+case r.BEGIN_CONTACT:
+e = "onBeginContact";
+break;
+
+case r.END_CONTACT:
+e = "onEndContact";
+break;
+
+case r.PRE_SOLVE:
+e = "onPreSolve";
+break;
+
+case r.POST_SOLVE:
+e = "onPostSolve";
+}
+var i, n, s, o, a = this.colliderA, c = this.colliderB, l = a.body, h = c.body;
+if (l.enabledContactListener) {
+i = l.node._components;
+this._inverted = !1;
+for (n = 0, s = i.length; n < s; n++) (o = i[n])[e] && o[e](this, a, c);
+}
+if (h.enabledContactListener) {
+i = h.node._components;
+this._inverted = !0;
+for (n = 0, s = i.length; n < s; n++) (o = i[n])[e] && o[e](this, c, a);
+}
+if (this.disabled || this.disabledOnce) {
+this.setEnabled(!1);
+this.disabledOnce = !1;
+}
+};
+f.get = function(t) {
+var e;
+(e = 0 === s.length ? new cc.PhysicsContact() : s.pop()).init(t);
+return e;
+};
+f.put = function(t) {
+var e = t._contact;
+if (e) {
+s.push(e);
+e.reset();
+}
+};
+var d = f.prototype;
+d.setEnabled = function(t) {
+this._b2contact.SetEnabled(t);
+};
+d.isTouching = function() {
+return this._b2contact.IsTouching();
+};
+d.setTangentSpeed = function(t) {
+this._b2contact.SetTangentSpeed(t / n);
+};
+d.getTangentSpeed = function() {
+return this._b2contact.GetTangentSpeed() * n;
+};
+d.setFriction = function(t) {
+this._b2contact.SetFriction(t);
+};
+d.getFriction = function() {
+return this._b2contact.GetFriction();
+};
+d.resetFriction = function() {
+return this._b2contact.ResetFriction();
+};
+d.setRestitution = function(t) {
+this._b2contact.SetRestitution(t);
+};
+d.getRestitution = function() {
+return this._b2contact.GetRestitution();
+};
+d.resetRestitution = function() {
+return this._b2contact.ResetRestitution();
+};
+f.ContactType = r;
+cc.PhysicsContact = e.exports = f;
+}), {
+"./CCPhysicsTypes": 175
+} ],
+174: [ (function(t, e, i) {
+"use strict";
+var n = t("./CCPhysicsTypes"), r = n.ContactType, s = n.BodyType, o = n.RayCastType, a = n.DrawBits, c = n.PTM_RATIO, l = (n.ANGLE_TO_PHYSICS_ANGLE,
+n.PHYSICS_ANGLE_TO_ANGLE), h = t("./utils").convertToNodeRotation, u = t("./platform/CCPhysicsDebugDraw"), _ = new b2.AABB(), f = new b2.Vec2(), d = new b2.Vec2(), m = cc.v2(), p = cc.Class({
+mixins: [ cc.EventTarget ],
+statics: {
+DrawBits: a,
+PTM_RATIO: c,
+VELOCITY_ITERATIONS: 10,
+POSITION_ITERATIONS: 10,
+FIXED_TIME_STEP: 1 / 60,
+MAX_ACCUMULATOR: .2
+},
+ctor: function() {
+this._debugDrawFlags = 0;
+this._debugDrawer = null;
+this._world = null;
+this._bodies = [];
+this._joints = [];
+this._contactMap = {};
+this._contactID = 0;
+this._delayEvents = [];
+this._accumulator = 0;
+cc.director._scheduler && cc.director._scheduler.enableForTarget(this);
+this.enabledAccumulator = !1;
+},
+pushDelayEvent: function(t, e, i) {
+this._steping ? this._delayEvents.push({
+target: t,
+func: e,
+args: i
+}) : t[e].apply(t, i);
+},
+update: function(t) {
+var e = this._world;
+if (e && this.enabled) {
+this.emit("before-step");
+this._steping = !0;
+var i = p.VELOCITY_ITERATIONS, n = p.POSITION_ITERATIONS;
+if (this.enabledAccumulator) {
+this._accumulator += t;
+var r = p.FIXED_TIME_STEP, s = p.MAX_ACCUMULATOR;
+this._accumulator > s && (this._accumulator = s);
+for (;this._accumulator > r; ) {
+e.Step(r, i, n);
+this._accumulator -= r;
+}
+} else {
+var o = 1 / cc.game.config.frameRate;
+e.Step(o, i, n);
+}
+if (this.debugDrawFlags) {
+this._checkDebugDrawValid();
+this._debugDrawer.clear();
+e.DrawDebugData();
+}
+this._steping = !1;
+for (var a = this._delayEvents, c = 0, l = a.length; c < l; c++) {
+var h = a[c];
+h.target[h.func].apply(h.target, h.args);
+}
+a.length = 0;
+this._syncNode();
+}
+},
+testPoint: function(t) {
+var e = f.x = t.x / c, i = f.y = t.y / c, n = .2 / c;
+_.lowerBound.x = e - n;
+_.lowerBound.y = i - n;
+_.upperBound.x = e + n;
+_.upperBound.y = i + n;
+var r = this._aabbQueryCallback;
+r.init(f);
+this._world.QueryAABB(r, _);
+var s = r.getFixture();
+return s ? s.collider : null;
+},
+testAABB: function(t) {
+_.lowerBound.x = t.xMin / c;
+_.lowerBound.y = t.yMin / c;
+_.upperBound.x = t.xMax / c;
+_.upperBound.y = t.yMax / c;
+var e = this._aabbQueryCallback;
+e.init();
+this._world.QueryAABB(e, _);
+return e.getFixtures().map((function(t) {
+return t.collider;
+}));
+},
+rayCast: function(t, e, i) {
+if (t.equals(e)) return [];
+i = i || o.Closest;
+f.x = t.x / c;
+f.y = t.y / c;
+d.x = e.x / c;
+d.y = e.y / c;
+var n = this._raycastQueryCallback;
+n.init(i);
+this._world.RayCast(n, f, d);
+var r = n.getFixtures();
+if (r.length > 0) {
+for (var s = n.getPoints(), a = n.getNormals(), l = n.getFractions(), h = [], u = 0, _ = r.length; u < _; u++) {
+var m = r[u], p = m.collider;
+if (i === o.AllClosest) {
+var v = h.find((function(t) {
+return t.collider === p;
+}));
+if (v) {
+if (l[u] < v.fraction) {
+v.fixtureIndex = p._getFixtureIndex(m);
+v.point.x = s[u].x * c;
+v.point.y = s[u].y * c;
+v.normal.x = a[u].x;
+v.normal.y = a[u].y;
+v.fraction = l[u];
+}
+continue;
+}
+}
+h.push({
+collider: p,
+fixtureIndex: p._getFixtureIndex(m),
+point: cc.v2(s[u].x * c, s[u].y * c),
+normal: cc.v2(a[u]),
+fraction: l[u]
+});
+}
+return h;
+}
+return [];
+},
+syncPosition: function() {
+for (var t = this._bodies, e = 0; e < t.length; e++) t[e].syncPosition();
+},
+syncRotation: function() {
+for (var t = this._bodies, e = 0; e < t.length; e++) t[e].syncRotation();
+},
+_registerContactFixture: function(t) {
+this._contactListener.registerContactFixture(t);
+},
+_unregisterContactFixture: function(t) {
+this._contactListener.unregisterContactFixture(t);
+},
+_addBody: function(t, e) {
+var i = this._world, n = t.node;
+if (i && n) {
+t._b2Body = i.CreateBody(e);
+t._b2Body.body = t;
+this._bodies.push(t);
+}
+},
+_removeBody: function(t) {
+var e = this._world;
+if (e) {
+t._b2Body.body = null;
+e.DestroyBody(t._b2Body);
+t._b2Body = null;
+cc.js.array.remove(this._bodies, t);
+}
+},
+_addJoint: function(t, e) {
+var i = this._world.CreateJoint(e);
+if (i) {
+i._joint = t;
+t._joint = i;
+this._joints.push(t);
+}
+},
+_removeJoint: function(t) {
+t._isValid() && this._world.DestroyJoint(t._joint);
+t._joint && (t._joint._joint = null);
+cc.js.array.remove(this._joints, t);
+},
+_initCallback: function() {
+if (this._world) {
+if (!this._contactListener) {
+var t = new cc.PhysicsContactListener();
+t.setBeginContact(this._onBeginContact);
+t.setEndContact(this._onEndContact);
+t.setPreSolve(this._onPreSolve);
+t.setPostSolve(this._onPostSolve);
+this._world.SetContactListener(t);
+this._contactListener = t;
+this._aabbQueryCallback = new cc.PhysicsAABBQueryCallback();
+this._raycastQueryCallback = new cc.PhysicsRayCastCallback();
+}
+} else cc.warn("Please init PhysicsManager first");
+},
+_init: function() {
+this.enabled = !0;
+this.debugDrawFlags = a.e_shapeBit;
+},
+_getWorld: function() {
+return this._world;
+},
+_syncNode: function() {
+for (var t = this._bodies, e = 0, i = t.length; e < i; e++) {
+var n = t[e], r = n.node, o = n._b2Body, a = o.GetPosition();
+m.x = a.x * c;
+m.y = a.y * c;
+var u = o.GetAngle() * l;
+if (null !== r.parent.parent) {
+m = r.parent.convertToNodeSpaceAR(m);
+u = h(r.parent, u);
+}
+var _ = r._eventMask;
+r._eventMask = 0;
+r.position = m;
+r.angle = -u;
+r._eventMask = _;
+n.type === s.Animated && n.resetVelocity();
+}
+},
+_onBeginContact: function(t) {
+cc.PhysicsContact.get(t).emit(r.BEGIN_CONTACT);
+},
+_onEndContact: function(t) {
+var e = t._contact;
+if (e) {
+e.emit(r.END_CONTACT);
+cc.PhysicsContact.put(t);
+}
+},
+_onPreSolve: function(t) {
+var e = t._contact;
+e && e.emit(r.PRE_SOLVE);
+},
+_onPostSolve: function(t, e) {
+var i = t._contact;
+if (i) {
+i._impulse = e;
+i.emit(r.POST_SOLVE);
+i._impulse = null;
+}
+},
+_checkDebugDrawValid: function() {
+if (!this._debugDrawer || !this._debugDrawer.isValid) {
+var t = new cc.Node("PHYSICS_MANAGER_DEBUG_DRAW");
+t.zIndex = cc.macro.MAX_ZINDEX;
+cc.game.addPersistRootNode(t);
+this._debugDrawer = t.addComponent(cc.Graphics);
+var e = new u(this._debugDrawer);
+e.SetFlags(this.debugDrawFlags);
+this._world.SetDebugDraw(e);
+}
+}
+});
+cc.js.getset(p.prototype, "enabled", (function() {
+return this._enabled;
+}), (function(t) {
+0;
+if (t && !this._world) {
+var e = new b2.World(new b2.Vec2(0, -10));
+e.SetAllowSleeping(!0);
+this._world = e;
+this._initCallback();
+}
+this._enabled = t;
+}));
+cc.js.getset(p.prototype, "debugDrawFlags", (function() {
+return this._debugDrawFlags;
+}), (function(t) {
+0;
+t && !this._debugDrawFlags ? this._debugDrawer && this._debugDrawer.node && (this._debugDrawer.node.active = !0) : !t && this._debugDrawFlags && this._debugDrawer && this._debugDrawer.node && (this._debugDrawer.node.active = !1);
+if (t) {
+this._checkDebugDrawValid();
+this._world.m_debugDraw.SetFlags(t);
+}
+this._debugDrawFlags = t;
+if (t) {
+this._checkDebugDrawValid();
+this._world.m_debugDraw.SetFlags(t);
+}
+}));
+cc.js.getset(p.prototype, "gravity", (function() {
+if (this._world) {
+var t = this._world.GetGravity();
+return cc.v2(t.x * c, t.y * c);
+}
+return cc.v2();
+}), (function(t) {
+this._world && this._world.SetGravity(new b2.Vec2(t.x / c, t.y / c));
+}));
+cc.PhysicsManager = e.exports = p;
+}), {
+"./CCPhysicsTypes": 175,
+"./platform/CCPhysicsDebugDraw": 196,
+"./utils": 198
+} ],
+175: [ (function(t, e, i) {
+"use strict";
+var n = cc.Enum({
+Static: 0,
+Kinematic: 1,
+Dynamic: 2,
+Animated: 3
+});
+cc.RigidBodyType = n;
+var r = cc.Enum({
+Closest: 0,
+Any: 1,
+AllClosest: 2,
+All: 3
+});
+cc.RayCastType = r;
+e.exports = {
+BodyType: n,
+ContactType: {
+BEGIN_CONTACT: "begin-contact",
+END_CONTACT: "end-contact",
+PRE_SOLVE: "pre-solve",
+POST_SOLVE: "post-solve"
+},
+RayCastType: r,
+DrawBits: b2.DrawFlags,
+PTM_RATIO: 32,
+ANGLE_TO_PHYSICS_ANGLE: -Math.PI / 180,
+PHYSICS_ANGLE_TO_ANGLE: -180 / Math.PI
+};
+}), {} ],
+176: [ (function(i, n, r) {
+"use strict";
+function s(t, e) {
+var i = e.length;
+return e[t < 0 ? i - -t % i : t % i];
+}
+function o(t, e, i) {
+for (var n = []; e < t; ) e += i.length;
+for (;t <= e; ++t) n.push(s(t, i));
+return n;
+}
+function a(t, e, i) {
+if (c(t, i)) {
+if (u(s(t, i), s(t - 1, i), s(e, i)) && _(s(t, i), s(t + 1, i), s(e, i))) return !1;
+} else if (_(s(t, i), s(t + 1, i), s(e, i)) || u(s(t, i), s(t - 1, i), s(e, i))) return !1;
+if (c(e, i)) {
+if (u(s(e, i), s(e - 1, i), s(t, i)) && _(s(e, i), s(e + 1, i), s(t, i))) return !1;
+} else if (_(s(e, i), s(e + 1, i), s(t, i)) || u(s(e, i), s(e - 1, i), s(t, i))) return !1;
+for (var n = 0; n < i.length; ++n) if ((n + 1) % i.length != t && n != t && (n + 1) % i.length != e && n != e) {
+var r = cc.v2();
+if (y(s(t, i), s(e, i), s(n, i), s(n + 1, i), r)) return !1;
+}
+return !0;
+}
+function c(t, e) {
+return l(t, e);
+}
+function l(i, n, r) {
+if ("undefined" === ("object" === (e = typeof r) ? t(r) : e)) {
+var o = i, a = n;
+i = s(o - 1, a);
+n = s(o, a);
+r = s(o + 1, a);
+}
+return x(i, n, r) < 0;
+}
+function h(t, e, i) {
+return x(t, e, i) > 0;
+}
+function u(t, e, i) {
+return x(t, e, i) >= 0;
+}
+function _(t, e, i) {
+return x(t, e, i) <= 0;
+}
+function f(t, e) {
+var i = e.x - t.x, n = e.y - t.y;
+return i * i + n * n;
+}
+function d(t) {
+m(t) || t.reverse();
+}
+function m(t) {
+return t.length < 3 || p(t) > 0;
+}
+function p(t) {
+var e, i = 0;
+for (e = 0; e < t.length; e++) {
+var n = (e + 1) % t.length;
+i += t[e].x * t[n].y;
+i -= t[e].y * t[n].x;
+}
+return i /= 2;
+}
+function v(t, e, i, n) {
+var r = cc.v2(), s = e.y - t.y, o = t.x - e.x, a = s * t.x + o * t.y, c = n.y - i.y, l = i.x - n.x, h = c * i.x + l * i.y, u = s * l - c * o;
+if (!g(u, 0)) {
+r.x = (l * a - o * h) / u;
+r.y = (s * h - c * a) / u;
+}
+return r;
+}
+function y(t, e, i, n, r) {
+if (t == i || t == n || e == i || e == n) return !1;
+var s = t.x, o = t.y, a = e.x, c = e.y, l = i.x, h = i.y, u = n.x, _ = n.y;
+if (Math.max(s, a) < Math.min(l, u) || Math.max(l, u) < Math.min(s, a)) return !1;
+if (Math.max(o, c) < Math.min(h, _) || Math.max(h, _) < Math.min(o, c)) return !1;
+var f = (u - l) * (o - h) - (_ - h) * (s - l), d = (a - s) * (o - h) - (c - o) * (s - l), m = (_ - h) * (a - s) - (u - l) * (c - o);
+if (Math.abs(m) < 1e-6) return !1;
+d /= m;
+if (0 < (f /= m) && f < 1 && 0 < d && d < 1) {
+r.x = s + f * (a - s);
+r.y = o + f * (c - o);
+return !0;
+}
+return !1;
+}
+function g(t, e) {
+return Math.abs(t - e) <= 1e-6;
+}
+function x(t, e, i) {
+return t.x * (e.y - i.y) + e.x * (i.y - t.y) + i.x * (t.y - e.y);
+}
+n.exports = {
+ConvexPartition: function t(e) {
+d(e);
+for (var i, n, r, m, p, y, g = [], x = cc.v2(), C = cc.v2(), b = 0, A = 0, S = 0; S < e.length; ++S) if (c(S, e)) {
+n = r = 1e8;
+for (var w = 0; w < e.length; ++w) {
+if (h(s(S - 1, e), s(S, e), s(w, e)) && _(s(S - 1, e), s(S, e), s(w - 1, e))) {
+m = v(s(S - 1, e), s(S, e), s(w, e), s(w - 1, e));
+if (l(s(S + 1, e), s(S, e), m) && (i = f(s(S, e), m)) < n) {
+n = i;
+x = m;
+b = w;
+}
+}
+if (h(s(S + 1, e), s(S, e), s(w + 1, e)) && _(s(S + 1, e), s(S, e), s(w, e))) {
+m = v(s(S + 1, e), s(S, e), s(w, e), s(w + 1, e));
+if (h(s(S - 1, e), s(S, e), m) && (i = f(s(S, e), m)) < r) {
+r = i;
+A = w;
+C = m;
+}
+}
+}
+if (b == (A + 1) % e.length) {
+var T = x.add(C).div(2);
+(p = o(S, A, e)).push(T);
+(y = o(b, S, e)).push(T);
+} else {
+for (var E = 0, M = b; A < b; ) A += e.length;
+for (w = b; w <= A; ++w) if (a(S, w, e)) {
+var B = 1 / (f(s(S, e), s(w, e)) + 1);
+c(w, e) ? _(s(w - 1, e), s(w, e), s(S, e)) && u(s(w + 1, e), s(w, e), s(S, e)) ? B += 3 : B += 2 : B += 1;
+if (B > E) {
+M = w;
+E = B;
+}
+}
+p = o(S, M, e);
+y = o(M, S, e);
+}
+return g = (g = g.concat(t(p))).concat(t(y));
+}
+g.push(e);
+for (S = g.length - 1; S >= 0; S--) 0 == g[S].length && g.splice(S, 0);
+return g;
+},
+ForceCounterClockWise: d,
+IsCounterClockWise: m
+};
+}), {} ],
+177: [ (function(t, e, i) {
+"use strict";
+var n = t("../CCNode").EventType, r = t("./CCPhysicsTypes").PTM_RATIO, s = t("./CCPhysicsTypes").ANGLE_TO_PHYSICS_ANGLE, o = t("./CCPhysicsTypes").PHYSICS_ANGLE_TO_ANGLE, a = t("./utils").getWorldRotation, c = t("./CCPhysicsTypes").BodyType, l = new b2.Vec2(), h = new b2.Vec2(), u = cc.Vec2.ZERO, _ = cc.Class({
+name: "cc.RigidBody",
+extends: cc.Component,
+editor: !1,
+properties: {
+_type: c.Dynamic,
+_allowSleep: !0,
+_gravityScale: 1,
+_linearDamping: 0,
+_angularDamping: 0,
+_linearVelocity: cc.v2(0, 0),
+_angularVelocity: 0,
+_fixedRotation: !1,
+enabled: {
+get: function() {
+return this._enabled;
+},
+set: function() {
+cc.warnID(8200);
+},
+visible: !1,
+override: !0
+},
+enabledContactListener: {
+default: !1,
+tooltip: !1
+},
+bullet: {
+default: !1,
+tooltip: !1
+},
+type: {
+type: c,
+tooltip: !1,
+get: function() {
+return this._type;
+},
+set: function(t) {
+this._type = t;
+this._b2Body && (t === c.Animated ? this._b2Body.SetType(c.Kinematic) : this._b2Body.SetType(t));
+}
+},
+allowSleep: {
+tooltip: !1,
+get: function() {
+return this._b2Body ? this._b2Body.IsSleepingAllowed() : this._allowSleep;
+},
+set: function(t) {
+this._allowSleep = t;
+this._b2Body && this._b2Body.SetSleepingAllowed(t);
+}
+},
+gravityScale: {
+tooltip: !1,
+get: function() {
+return this._gravityScale;
+},
+set: function(t) {
+this._gravityScale = t;
+this._b2Body && this._b2Body.SetGravityScale(t);
+}
+},
+linearDamping: {
+tooltip: !1,
+get: function() {
+return this._linearDamping;
+},
+set: function(t) {
+this._linearDamping = t;
+this._b2Body && this._b2Body.SetLinearDamping(this._linearDamping);
+}
+},
+angularDamping: {
+tooltip: !1,
+get: function() {
+return this._angularDamping;
+},
+set: function(t) {
+this._angularDamping = t;
+this._b2Body && this._b2Body.SetAngularDamping(t);
+}
+},
+linearVelocity: {
+tooltip: !1,
+type: cc.Vec2,
+get: function() {
+var t = this._linearVelocity;
+if (this._b2Body) {
+var e = this._b2Body.GetLinearVelocity();
+t.x = e.x * r;
+t.y = e.y * r;
+}
+return t;
+},
+set: function(t) {
+this._linearVelocity = t;
+var e = this._b2Body;
+if (e) {
+var i = e.m_linearVelocity;
+i.Set(t.x / r, t.y / r);
+e.SetLinearVelocity(i);
+}
+}
+},
+angularVelocity: {
+tooltip: !1,
+get: function() {
+return this._b2Body ? this._b2Body.GetAngularVelocity() * o : this._angularVelocity;
+},
+set: function(t) {
+this._angularVelocity = t;
+this._b2Body && this._b2Body.SetAngularVelocity(t * s);
+}
+},
+fixedRotation: {
+tooltip: !1,
+get: function() {
+return this._fixedRotation;
+},
+set: function(t) {
+this._fixedRotation = t;
+this._b2Body && this._b2Body.SetFixedRotation(t);
+}
+},
+awake: {
+visible: !1,
+tooltip: !1,
+get: function() {
+return !!this._b2Body && this._b2Body.IsAwake();
+},
+set: function(t) {
+this._b2Body && this._b2Body.SetAwake(t);
+}
+},
+awakeOnLoad: {
+default: !0,
+tooltip: !1,
+animatable: !1
+},
+active: {
+visible: !1,
+get: function() {
+return !!this._b2Body && this._b2Body.IsActive();
+},
+set: function(t) {
+this._b2Body && this._b2Body.SetActive(t);
+}
+}
+},
+getLocalPoint: function(t, e) {
+e = e || cc.v2();
+if (this._b2Body) {
+l.Set(t.x / r, t.y / r);
+var i = this._b2Body.GetLocalPoint(l, e);
+e.x = i.x * r;
+e.y = i.y * r;
+}
+return e;
+},
+getWorldPoint: function(t, e) {
+e = e || cc.v2();
+if (this._b2Body) {
+l.Set(t.x / r, t.y / r);
+var i = this._b2Body.GetWorldPoint(l, e);
+e.x = i.x * r;
+e.y = i.y * r;
+}
+return e;
+},
+getWorldVector: function(t, e) {
+e = e || cc.v2();
+if (this._b2Body) {
+l.Set(t.x / r, t.y / r);
+var i = this._b2Body.GetWorldVector(l, e);
+e.x = i.x * r;
+e.y = i.y * r;
+}
+return e;
+},
+getLocalVector: function(t, e) {
+e = e || cc.v2();
+if (this._b2Body) {
+l.Set(t.x / r, t.y / r);
+var i = this._b2Body.GetLocalVector(l, e);
+e.x = i.x * r;
+e.y = i.y * r;
+}
+return e;
+},
+getWorldPosition: function(t) {
+t = t || cc.v2();
+if (this._b2Body) {
+var e = this._b2Body.GetPosition();
+t.x = e.x * r;
+t.y = e.y * r;
+}
+return t;
+},
+getWorldRotation: function() {
+return this._b2Body ? this._b2Body.GetAngle() * o : 0;
+},
+getLocalCenter: function(t) {
+t = t || cc.v2();
+if (this._b2Body) {
+var e = this._b2Body.GetLocalCenter();
+t.x = e.x * r;
+t.y = e.y * r;
+}
+return t;
+},
+getWorldCenter: function(t) {
+t = t || cc.v2();
+if (this._b2Body) {
+var e = this._b2Body.GetWorldCenter();
+t.x = e.x * r;
+t.y = e.y * r;
+}
+return t;
+},
+getLinearVelocityFromWorldPoint: function(t, e) {
+e = e || cc.v2();
+if (this._b2Body) {
+l.Set(t.x / r, t.y / r);
+var i = this._b2Body.GetLinearVelocityFromWorldPoint(l, e);
+e.x = i.x * r;
+e.y = i.y * r;
+}
+return e;
+},
+getMass: function() {
+return this._b2Body ? this._b2Body.GetMass() : 0;
+},
+getInertia: function() {
+return this._b2Body ? this._b2Body.GetInertia() * r * r : 0;
+},
+getJointList: function() {
+if (!this._b2Body) return [];
+var t = [], e = this._b2Body.GetJointList();
+if (!e) return [];
+t.push(e.joint._joint);
+for (var i = e.prev; i; ) {
+t.push(i.joint._joint);
+i = i.prev;
+}
+for (var n = e.next; n; ) {
+t.push(n.joint._joint);
+n = n.next;
+}
+return t;
+},
+applyForce: function(t, e, i) {
+if (this._b2Body) {
+l.Set(t.x / r, t.y / r);
+h.Set(e.x / r, e.y / r);
+this._b2Body.ApplyForce(l, h, i);
+}
+},
+applyForceToCenter: function(t, e) {
+if (this._b2Body) {
+l.Set(t.x / r, t.y / r);
+this._b2Body.ApplyForceToCenter(l, e);
+}
+},
+applyTorque: function(t, e) {
+this._b2Body && this._b2Body.ApplyTorque(t / r, e);
+},
+applyLinearImpulse: function(t, e, i) {
+if (this._b2Body) {
+l.Set(t.x / r, t.y / r);
+h.Set(e.x / r, e.y / r);
+this._b2Body.ApplyLinearImpulse(l, h, i);
+}
+},
+applyAngularImpulse: function(t, e) {
+this._b2Body && this._b2Body.ApplyAngularImpulse(t / r / r, e);
+},
+syncPosition: function(t) {
+var e = this._b2Body;
+if (e) {
+var i, n = this.node.convertToWorldSpaceAR(u);
+(i = this.type === c.Animated ? e.GetLinearVelocity() : e.GetPosition()).x = n.x / r;
+i.y = n.y / r;
+if (this.type === c.Animated && t) {
+var s = e.GetPosition(), o = cc.game.config.frameRate;
+i.x = (i.x - s.x) * o;
+i.y = (i.y - s.y) * o;
+e.SetAwake(!0);
+e.SetLinearVelocity(i);
+} else e.SetTransformVec(i, e.GetAngle());
+}
+},
+syncRotation: function(t) {
+var e = this._b2Body;
+if (e) {
+var i = s * a(this.node);
+if (this.type === c.Animated && t) {
+var n = e.GetAngle(), r = cc.game.config.frameRate;
+e.SetAwake(!0);
+e.SetAngularVelocity((i - n) * r);
+} else e.SetTransformVec(e.GetPosition(), i);
+}
+},
+resetVelocity: function() {
+var t = this._b2Body;
+if (t) {
+var e = t.m_linearVelocity;
+e.Set(0, 0);
+t.SetLinearVelocity(e);
+t.SetAngularVelocity(0);
+}
+},
+onEnable: function() {
+this._init();
+},
+onDisable: function() {
+this._destroy();
+},
+_registerNodeEvents: function() {
+var t = this.node;
+t.on(n.POSITION_CHANGED, this._onNodePositionChanged, this);
+t.on(n.ROTATION_CHANGED, this._onNodeRotationChanged, this);
+t.on(n.SCALE_CHANGED, this._onNodeScaleChanged, this);
+},
+_unregisterNodeEvents: function() {
+var t = this.node;
+t.off(n.POSITION_CHANGED, this._onNodePositionChanged, this);
+t.off(n.ROTATION_CHANGED, this._onNodeRotationChanged, this);
+t.off(n.SCALE_CHANGED, this._onNodeScaleChanged, this);
+},
+_onNodePositionChanged: function() {
+this.syncPosition(!0);
+},
+_onNodeRotationChanged: function(t) {
+this.syncRotation(!0);
+},
+_onNodeScaleChanged: function(t) {
+if (this._b2Body) for (var e = this.getComponents(cc.PhysicsCollider), i = 0; i < e.length; i++) e[i].apply();
+},
+_init: function() {
+cc.director.getPhysicsManager().pushDelayEvent(this, "__init", []);
+},
+_destroy: function() {
+cc.director.getPhysicsManager().pushDelayEvent(this, "__destroy", []);
+},
+__init: function() {
+if (!this._inited) {
+this._registerNodeEvents();
+var t = new b2.BodyDef();
+this.type === c.Animated ? t.type = c.Kinematic : t.type = this.type;
+t.allowSleep = this.allowSleep;
+t.gravityScale = this.gravityScale;
+t.linearDamping = this.linearDamping;
+t.angularDamping = this.angularDamping;
+var e = this.linearVelocity;
+t.linearVelocity = new b2.Vec2(e.x / r, e.y / r);
+t.angularVelocity = this.angularVelocity * s;
+t.fixedRotation = this.fixedRotation;
+t.bullet = this.bullet;
+var i = this.node, n = i.convertToWorldSpaceAR(u);
+t.position = new b2.Vec2(n.x / r, n.y / r);
+t.angle = -Math.PI / 180 * a(i);
+t.awake = this.awakeOnLoad;
+cc.director.getPhysicsManager()._addBody(this, t);
+this._inited = !0;
+}
+},
+__destroy: function() {
+if (this._inited) {
+cc.director.getPhysicsManager()._removeBody(this);
+this._unregisterNodeEvents();
+this._inited = !1;
+}
+},
+_getBody: function() {
+return this._b2Body;
+}
+});
+cc.RigidBody = e.exports = _;
+}), {
+"../CCNode": 52,
+"./CCPhysicsTypes": 175,
+"./utils": 198
+} ],
+178: [ (function(t, e, i) {
+"use strict";
+var n = t("../../../external/box2d/box2d");
+window.b2 = {};
+0;
+for (var r in n) if (-1 === r.indexOf("b2_")) {
+var s = r.replace("b2", "");
+b2[s] = n[r];
+}
+b2.maxPolygonVertices = 8;
+}), {
+"../../../external/box2d/box2d": 401
+} ],
+179: [ (function(t, e, i) {
+"use strict";
+var n = t("../CCPhysicsTypes").PTM_RATIO, r = cc.Class({
+name: "cc.PhysicsBoxCollider",
+extends: cc.PhysicsCollider,
+mixins: [ cc.Collider.Box ],
+editor: {
+menu: !1,
+requireComponent: cc.RigidBody
+},
+_createShape: function(t) {
+var e = Math.abs(t.x), i = Math.abs(t.y), r = this.size.width / 2 / n * e, s = this.size.height / 2 / n * i, o = this.offset.x / n * e, a = this.offset.y / n * i, c = new b2.PolygonShape();
+c.SetAsBox(r, s, new b2.Vec2(o, a), 0);
+return c;
+}
+});
+cc.PhysicsBoxCollider = e.exports = r;
+}), {
+"../CCPhysicsTypes": 175
+} ],
+180: [ (function(t, e, i) {
+"use strict";
+var n = t("../CCPhysicsTypes").PTM_RATIO, r = cc.Class({
+name: "cc.PhysicsChainCollider",
+extends: cc.PhysicsCollider,
+editor: {
+menu: !1,
+inspector: !1,
+requireComponent: cc.RigidBody
+},
+properties: {
+loop: !1,
+points: {
+default: function() {
+return [ cc.v2(-50, 0), cc.v2(50, 0) ];
+},
+type: [ cc.Vec2 ]
+},
+threshold: {
+default: 1,
+serializable: !1,
+visible: !1
+}
+},
+_createShape: function(t) {
+for (var e = new b2.ChainShape(), i = this.points, r = [], s = 0; s < i.length; s++) {
+var o = i[s];
+r.push(new b2.Vec2(o.x / n * t.x, o.y / n * t.y));
+}
+this.loop ? e.CreateLoop(r, r.length) : e.CreateChain(r, r.length);
+return e;
+},
+resetInEditor: !1,
+resetPointsByContour: !1
+});
+cc.PhysicsChainCollider = e.exports = r;
+}), {
+"../CCPhysicsTypes": 175
+} ],
+181: [ (function(t, e, i) {
+"use strict";
+var n = t("../CCPhysicsTypes").PTM_RATIO, r = cc.Class({
+name: "cc.PhysicsCircleCollider",
+extends: cc.PhysicsCollider,
+mixins: [ cc.Collider.Circle ],
+editor: {
+menu: !1,
+requireComponent: cc.RigidBody
+},
+_createShape: function(t) {
+var e = Math.abs(t.x), i = Math.abs(t.y), r = this.offset.x / n * e, s = this.offset.y / n * i, o = new b2.CircleShape();
+o.m_radius = this.radius / n * e;
+o.m_p = new b2.Vec2(r, s);
+return o;
+}
+});
+cc.PhysicsCircleCollider = e.exports = r;
+}), {
+"../CCPhysicsTypes": 175
+} ],
+182: [ (function(t, e, i) {
+"use strict";
+var n = t("../CCPhysicsTypes").PTM_RATIO, r = t("../utils").getWorldScale, s = cc.Class({
+name: "cc.PhysicsCollider",
+extends: cc.Collider,
+ctor: function() {
+this._fixtures = [];
+this._shapes = [];
+this._inited = !1;
+this._rect = cc.rect();
+},
+properties: {
+_density: 1,
+_sensor: !1,
+_friction: .2,
+_restitution: 0,
+density: {
+tooltip: !1,
+get: function() {
+return this._density;
+},
+set: function(t) {
+this._density = t;
+}
+},
+sensor: {
+tooltip: !1,
+get: function() {
+return this._sensor;
+},
+set: function(t) {
+this._sensor = t;
+}
+},
+friction: {
+tooltip: !1,
+get: function() {
+return this._friction;
+},
+set: function(t) {
+this._friction = t;
+}
+},
+restitution: {
+tooltip: !1,
+get: function() {
+return this._restitution;
+},
+set: function(t) {
+this._restitution = t;
+}
+},
+body: {
+default: null,
+type: cc.RigidBody,
+visible: !1
+}
+},
+onDisable: function() {
+this._destroy();
+},
+onEnable: function() {
+this._init();
+},
+start: function() {
+this._init();
+},
+_getFixtureIndex: function(t) {
+return this._fixtures.indexOf(t);
+},
+_init: function() {
+cc.director.getPhysicsManager().pushDelayEvent(this, "__init", []);
+},
+_destroy: function() {
+cc.director.getPhysicsManager().pushDelayEvent(this, "__destroy", []);
+},
+__init: function() {
+if (!this._inited) {
+var t = this.body || this.getComponent(cc.RigidBody);
+if (t) {
+var e = t._getBody();
+if (e) {
+var i = t.node, n = r(i);
+this._scale = n;
+var s = 0 === n.x && 0 === n.y ? [] : this._createShape(n);
+s instanceof Array || (s = [ s ]);
+for (var o = 1 << i.groupIndex, a = 0, c = cc.game.collisionMatrix[i.groupIndex], l = 0; l < c.length; l++) c[l] && (a |= 1 << l);
+for (var h = {
+categoryBits: o,
+maskBits: a,
+groupIndex: 0
+}, u = cc.director.getPhysicsManager(), _ = 0; _ < s.length; _++) {
+var f = s[_], d = new b2.FixtureDef();
+d.density = this.density;
+d.isSensor = this.sensor;
+d.friction = this.friction;
+d.restitution = this.restitution;
+d.shape = f;
+d.filter = h;
+var m = e.CreateFixture(d);
+m.collider = this;
+t.enabledContactListener && u._registerContactFixture(m);
+this._shapes.push(f);
+this._fixtures.push(m);
+}
+this.body = t;
+this._inited = !0;
+}
+}
+}
+},
+__destroy: function() {
+if (this._inited) {
+for (var t = this._fixtures, e = this.body._getBody(), i = cc.director.getPhysicsManager(), n = t.length - 1; n >= 0; n--) {
+var r = t[n];
+r.collider = null;
+i._unregisterContactFixture(r);
+e && e.DestroyFixture(r);
+}
+this.body = null;
+this._fixtures.length = 0;
+this._shapes.length = 0;
+this._inited = !1;
+}
+},
+_createShape: function() {},
+apply: function() {
+this._destroy();
+this._init();
+},
+getAABB: function() {
+for (var t = 1e7, e = 1e7, i = -1e7, r = -1e7, s = this._fixtures, o = 0; o < s.length; o++) for (var a = s[o], c = a.GetShape().GetChildCount(), l = 0; l < c; l++) {
+var h = a.GetAABB(l);
+h.lowerBound.x < t && (t = h.lowerBound.x);
+h.lowerBound.y < e && (e = h.lowerBound.y);
+h.upperBound.x > i && (i = h.upperBound.x);
+h.upperBound.y > r && (r = h.upperBound.y);
+}
+t *= n;
+e *= n;
+i *= n;
+r *= n;
+var u = this._rect;
+u.x = t;
+u.y = e;
+u.width = i - t;
+u.height = r - e;
+return u;
+}
+});
+cc.PhysicsCollider = e.exports = s;
+}), {
+"../CCPhysicsTypes": 175,
+"../utils": 198
+} ],
+183: [ (function(t, e, i) {
+"use strict";
+var n = t("../CCPhysicsTypes").PTM_RATIO, r = t("../CCPolygonSeparator"), s = cc.Class({
+name: "cc.PhysicsPolygonCollider",
+extends: cc.PhysicsCollider,
+mixins: [ cc.Collider.Polygon ],
+editor: {
+menu: !1,
+inspector: !1,
+requireComponent: cc.RigidBody
+},
+_createShape: function(t) {
+var e = [], i = this.points;
+i.length > 0 && i[0].equals(i[i.length - 1]) && (i.length -= 1);
+for (var s = r.ConvexPartition(i), o = this.offset, a = 0; a < s.length; a++) {
+for (var c = s[a], l = null, h = [], u = null, _ = 0, f = c.length; _ < f; _++) {
+l || (l = new b2.PolygonShape());
+var d = c[_], m = (d.x + o.x) / n * t.x, p = (d.y + o.y) / n * t.y, v = new b2.Vec2(m, p);
+h.push(v);
+u || (u = v);
+if (h.length === b2.maxPolygonVertices) {
+l.Set(h, h.length);
+e.push(l);
+l = null;
+_ < f - 1 && (h = [ u, h[h.length - 1] ]);
+}
+}
+if (l) {
+l.Set(h, h.length);
+e.push(l);
+}
+}
+return e;
+}
+});
+cc.PhysicsPolygonCollider = e.exports = s;
+}), {
+"../CCPhysicsTypes": 175,
+"../CCPolygonSeparator": 176
+} ],
+184: [ (function(t, e, i) {
+"use strict";
+t("./box2d-adapter");
+t("./CCPhysicsManager");
+t("./CCRigidBody");
+t("./CCPhysicsContact");
+t("./collider/CCPhysicsCollider");
+t("./collider/CCPhysicsChainCollider");
+t("./collider/CCPhysicsCircleCollider");
+t("./collider/CCPhysicsBoxCollider");
+t("./collider/CCPhysicsPolygonCollider");
+t("./joint/CCJoint");
+t("./joint/CCDistanceJoint");
+t("./joint/CCRevoluteJoint");
+t("./joint/CCMouseJoint");
+t("./joint/CCMotorJoint");
+t("./joint/CCPrismaticJoint");
+t("./joint/CCWeldJoint");
+t("./joint/CCWheelJoint");
+t("./joint/CCRopeJoint");
+t("./platform/CCPhysicsContactListner");
+t("./platform/CCPhysicsAABBQueryCallback");
+t("./platform/CCPhysicsRayCastCallback");
+}), {
+"./CCPhysicsContact": 173,
+"./CCPhysicsManager": 174,
+"./CCRigidBody": 177,
+"./box2d-adapter": 178,
+"./collider/CCPhysicsBoxCollider": 179,
+"./collider/CCPhysicsChainCollider": 180,
+"./collider/CCPhysicsCircleCollider": 181,
+"./collider/CCPhysicsCollider": 182,
+"./collider/CCPhysicsPolygonCollider": 183,
+"./joint/CCDistanceJoint": 185,
+"./joint/CCJoint": 186,
+"./joint/CCMotorJoint": 187,
+"./joint/CCMouseJoint": 188,
+"./joint/CCPrismaticJoint": 189,
+"./joint/CCRevoluteJoint": 190,
+"./joint/CCRopeJoint": 191,
+"./joint/CCWeldJoint": 192,
+"./joint/CCWheelJoint": 193,
+"./platform/CCPhysicsAABBQueryCallback": 194,
+"./platform/CCPhysicsContactListner": 195,
+"./platform/CCPhysicsRayCastCallback": 197
+} ],
+185: [ (function(t, e, i) {
+"use strict";
+var n = t("../CCPhysicsTypes").PTM_RATIO, r = cc.Class({
+name: "cc.DistanceJoint",
+extends: cc.Joint,
+editor: !1,
+properties: {
+_distance: 1,
+_frequency: 0,
+_dampingRatio: 0,
+distance: {
+tooltip: !1,
+get: function() {
+return this._distance;
+},
+set: function(t) {
+this._distance = t;
+this._joint && this._joint.SetLength(t);
+}
+},
+frequency: {
+tooltip: !1,
+get: function() {
+return this._frequency;
+},
+set: function(t) {
+this._frequency = t;
+this._joint && this._joint.SetFrequency(t);
+}
+},
+dampingRatio: {
+tooltip: !1,
+get: function() {
+return this._dampingRatio;
+},
+set: function(t) {
+this._dampingRatio = t;
+this._joint && this._joint.SetDampingRatio(t);
+}
+}
+},
+_createJointDef: function() {
+var t = new b2.DistanceJointDef();
+t.localAnchorA = new b2.Vec2(this.anchor.x / n, this.anchor.y / n);
+t.localAnchorB = new b2.Vec2(this.connectedAnchor.x / n, this.connectedAnchor.y / n);
+t.length = this.distance / n;
+t.dampingRatio = this.dampingRatio;
+t.frequencyHz = this.frequency;
+return t;
+}
+});
+cc.DistanceJoint = e.exports = r;
+}), {
+"../CCPhysicsTypes": 175
+} ],
+186: [ (function(t, e, i) {
+"use strict";
+var n = t("../CCPhysicsTypes").PTM_RATIO, r = cc.Class({
+name: "cc.Joint",
+extends: cc.Component,
+editor: {
+requireComponent: cc.RigidBody
+},
+properties: {
+anchor: {
+default: cc.v2(0, 0),
+tooltip: !1
+},
+connectedAnchor: {
+default: cc.v2(0, 0),
+tooltip: !1
+},
+connectedBody: {
+default: null,
+type: cc.RigidBody,
+tooltip: !1
+},
+collideConnected: {
+default: !1,
+tooltip: !1
+}
+},
+onDisable: function() {
+this._destroy();
+},
+onEnable: function() {
+this._init();
+},
+start: function() {
+this._init();
+},
+apply: function() {
+this._destroy();
+this._init();
+},
+getWorldAnchor: function() {
+if (this._joint) {
+var t = this._joint.GetAnchorA();
+return cc.v2(t.x * n, t.y * n);
+}
+return cc.Vec2.ZERO;
+},
+getWorldConnectedAnchor: function() {
+if (this._joint) {
+var t = this._joint.GetAnchorB();
+return cc.v2(t.x * n, t.y * n);
+}
+return cc.Vec2.ZERO;
+},
+getReactionForce: function(t) {
+var e = cc.v2();
+return this._joint ? this._joint.GetReactionForce(t, e) : e;
+},
+getReactionTorque: function(t) {
+return this._joint ? this._joint.GetReactionTorque(t) : 0;
+},
+_init: function() {
+cc.director.getPhysicsManager().pushDelayEvent(this, "__init", []);
+},
+_destroy: function() {
+cc.director.getPhysicsManager().pushDelayEvent(this, "__destroy", []);
+},
+__init: function() {
+if (!this._inited) {
+this.body = this.getComponent(cc.RigidBody);
+if (this._isValid()) {
+var t = this._createJointDef();
+if (!t) return;
+t.bodyA = this.body._getBody();
+t.bodyB = this.connectedBody._getBody();
+t.collideConnected = this.collideConnected;
+cc.director.getPhysicsManager()._addJoint(this, t);
+this._inited = !0;
+}
+}
+},
+__destroy: function() {
+if (this._inited) {
+cc.director.getPhysicsManager()._removeJoint(this);
+this._joint = null;
+this._inited = !1;
+}
+},
+_createJointDef: function() {
+return null;
+},
+_isValid: function() {
+return this.body && this.body._getBody() && this.connectedBody && this.connectedBody._getBody();
+}
+});
+cc.Joint = e.exports = r;
+}), {
+"../CCPhysicsTypes": 175
+} ],
+187: [ (function(t, e, i) {
+"use strict";
+var n = t("../CCPhysicsTypes").PTM_RATIO, r = t("../CCPhysicsTypes").ANGLE_TO_PHYSICS_ANGLE, s = cc.Class({
+name: "cc.MotorJoint",
+extends: cc.Joint,
+editor: !1,
+properties: {
+_linearOffset: cc.v2(0, 0),
+_angularOffset: 0,
+_maxForce: 1,
+_maxTorque: 1,
+_correctionFactor: .3,
+anchor: {
+tooltip: !1,
+default: cc.v2(0, 0),
+override: !0,
+visible: !1
+},
+connectedAnchor: {
+tooltip: !1,
+default: cc.v2(0, 0),
+override: !0,
+visible: !1
+},
+linearOffset: {
+tooltip: !1,
+get: function() {
+return this._linearOffset;
+},
+set: function(t) {
+this._linearOffset = t;
+this._joint && this._joint.SetLinearOffset(new b2.Vec2(t.x / n, t.y / n));
+}
+},
+angularOffset: {
+tooltip: !1,
+get: function() {
+return this._angularOffset;
+},
+set: function(t) {
+this._angularOffset = t;
+this._joint && this._joint.SetAngularOffset(t);
+}
+},
+maxForce: {
+tooltip: !1,
+get: function() {
+return this._maxForce;
+},
+set: function(t) {
+this._maxForce = t;
+this._joint && this._joint.SetMaxForce(t);
+}
+},
+maxTorque: {
+tooltip: !1,
+get: function() {
+return this._maxTorque;
+},
+set: function(t) {
+this._maxTorque = t;
+this._joint && this._joint.SetMaxTorque(t);
+}
+},
+correctionFactor: {
+tooltip: !1,
+get: function() {
+return this._correctionFactor;
+},
+set: function(t) {
+this._correctionFactor = t;
+this._joint && this._joint.SetCorrectionFactor(t);
+}
+}
+},
+_createJointDef: function() {
+var t = new b2.MotorJointDef();
+t.linearOffset = new b2.Vec2(this.linearOffset.x / n, this.linearOffset.y / n);
+t.angularOffset = this.angularOffset * r;
+t.maxForce = this.maxForce;
+t.maxTorque = this.maxTorque;
+t.correctionFactor = this.correctionFactor;
+return t;
+}
+});
+cc.MotorJoint = e.exports = s;
+}), {
+"../CCPhysicsTypes": 175
+} ],
+188: [ (function(t, e, i) {
+"use strict";
+var n = t("../CCPhysicsTypes").PTM_RATIO, r = new b2.Vec2(), s = cc.Class({
+name: "cc.MouseJoint",
+extends: cc.Joint,
+editor: !1,
+properties: {
+_target: 1,
+_frequency: 5,
+_dampingRatio: .7,
+_maxForce: 0,
+connectedBody: {
+default: null,
+type: cc.RigidBody,
+visible: !1,
+override: !0
+},
+collideConnected: {
+default: !0,
+visible: !1,
+override: !0
+},
+anchor: {
+tooltip: !1,
+default: cc.v2(0, 0),
+override: !0,
+visible: !1
+},
+connectedAnchor: {
+tooltip: !1,
+default: cc.v2(0, 0),
+override: !0,
+visible: !1
+},
+mouseRegion: {
+tooltip: !1,
+default: null,
+type: cc.Node
+},
+target: {
+tooltip: !1,
+visible: !1,
+get: function() {
+return this._target;
+},
+set: function(t) {
+this._target = t;
+if (this._joint) {
+r.x = t.x / n;
+r.y = t.y / n;
+this._joint.SetTarget(r);
+}
+}
+},
+frequency: {
+tooltip: !1,
+get: function() {
+return this._frequency;
+},
+set: function(t) {
+this._frequency = t;
+this._joint && this._joint.SetFrequency(t);
+}
+},
+dampingRatio: {
+tooltip: !1,
+get: function() {
+return this._dampingRatio;
+},
+set: function(t) {
+this._dampingRatio = t;
+this._joint && this._joint.SetDampingRatio(t);
+}
+},
+maxForce: {
+tooltip: !1,
+visible: !1,
+get: function() {
+return this._maxForce;
+},
+set: function(t) {
+this._maxForce = t;
+this._joint && this._joint.SetMaxForce(t);
+}
+}
+},
+onLoad: function() {
+var t = this.mouseRegion || this.node;
+t.on(cc.Node.EventType.TOUCH_START, this.onTouchBegan, this);
+t.on(cc.Node.EventType.TOUCH_MOVE, this.onTouchMove, this);
+t.on(cc.Node.EventType.TOUCH_END, this.onTouchEnd, this);
+t.on(cc.Node.EventType.TOUCH_CANCEL, this.onTouchEnd, this);
+},
+onEnable: function() {},
+start: function() {},
+onTouchBegan: function(t) {
+var e = cc.director.getPhysicsManager(), i = this._pressPoint = t.touch.getLocation();
+cc.Camera && cc.Camera.main && (i = cc.Camera.main.getScreenToWorldPoint(i));
+var n = e.testPoint(i);
+if (n) {
+(this.connectedBody = n.body).awake = !0;
+this.maxForce = 1e3 * this.connectedBody.getMass();
+this.target = i;
+this._init();
+}
+},
+onTouchMove: function(t) {
+this._pressPoint = t.touch.getLocation();
+},
+onTouchEnd: function(t) {
+this._destroy();
+this._pressPoint = null;
+},
+_createJointDef: function() {
+var t = new b2.MouseJointDef();
+r.x = this.target.x / n;
+r.y = this.target.y / n;
+t.target = r;
+t.maxForce = this.maxForce;
+t.dampingRatio = this.dampingRatio;
+t.frequencyHz = this.frequency;
+return t;
+},
+update: function() {
+if (this._pressPoint && this._isValid()) {
+var t = cc.Camera.findCamera(this.node);
+this.target = t ? t.getScreenToWorldPoint(this._pressPoint) : this._pressPoint;
+}
+}
+});
+cc.MouseJoint = e.exports = s;
+}), {
+"../CCPhysicsTypes": 175
+} ],
+189: [ (function(t, e, i) {
+"use strict";
+var n = t("../CCPhysicsTypes").PTM_RATIO, r = t("../CCPhysicsTypes").ANGLE_TO_PHYSICS_ANGLE, s = cc.Class({
+name: "cc.PrismaticJoint",
+extends: cc.Joint,
+editor: !1,
+properties: {
+localAxisA: {
+default: cc.v2(1, 0),
+tooltip: !1
+},
+referenceAngle: {
+default: 0,
+tooltip: !1
+},
+enableLimit: {
+default: !1,
+tooltip: !1
+},
+enableMotor: {
+default: !1,
+tooltip: !1
+},
+lowerLimit: {
+default: 0,
+tooltip: !1
+},
+upperLimit: {
+default: 0,
+tooltip: !1
+},
+_maxMotorForce: 0,
+_motorSpeed: 0,
+maxMotorForce: {
+tooltip: !1,
+get: function() {
+return this._maxMotorForce;
+},
+set: function(t) {
+this._maxMotorForce = t;
+this._joint && this._joint.SetMaxMotorForce(t);
+}
+},
+motorSpeed: {
+tooltip: !1,
+get: function() {
+return this._motorSpeed;
+},
+set: function(t) {
+this._motorSpeed = t;
+this._joint && this._joint.SetMotorSpeed(t);
+}
+}
+},
+_createJointDef: function() {
+var t = new b2.PrismaticJointDef();
+t.localAnchorA = new b2.Vec2(this.anchor.x / n, this.anchor.y / n);
+t.localAnchorB = new b2.Vec2(this.connectedAnchor.x / n, this.connectedAnchor.y / n);
+t.localAxisA = new b2.Vec2(this.localAxisA.x, this.localAxisA.y);
+t.referenceAngle = this.referenceAngle * r;
+t.enableLimit = this.enableLimit;
+t.lowerTranslation = this.lowerLimit / n;
+t.upperTranslation = this.upperLimit / n;
+t.enableMotor = this.enableMotor;
+t.maxMotorForce = this.maxMotorForce;
+t.motorSpeed = this.motorSpeed;
+return t;
+}
+});
+cc.PrismaticJoint = e.exports = s;
+}), {
+"../CCPhysicsTypes": 175
+} ],
+190: [ (function(t, e, i) {
+"use strict";
+var n = t("../CCPhysicsTypes").PTM_RATIO, r = t("../CCPhysicsTypes").ANGLE_TO_PHYSICS_ANGLE, s = t("../CCPhysicsTypes").PHYSICS_ANGLE_TO_ANGLE, o = cc.Class({
+name: "cc.RevoluteJoint",
+extends: cc.Joint,
+editor: !1,
+properties: {
+_maxMotorTorque: 0,
+_motorSpeed: 0,
+_enableLimit: !1,
+_enableMotor: !1,
+referenceAngle: {
+default: 0,
+tooltip: !1
+},
+lowerAngle: {
+default: 0,
+tooltip: !1
+},
+upperAngle: {
+default: 0,
+tooltip: !1
+},
+maxMotorTorque: {
+tooltip: !1,
+get: function() {
+return this._maxMotorTorque;
+},
+set: function(t) {
+this._maxMotorTorque = t;
+this._joint && this._joint.SetMaxMotorTorque(t);
+}
+},
+motorSpeed: {
+tooltip: !1,
+get: function() {
+return this._motorSpeed;
+},
+set: function(t) {
+this._motorSpeed = t;
+this._joint && this._joint.SetMotorSpeed(t * r);
+}
+},
+enableLimit: {
+tooltip: !1,
+get: function() {
+return this._enableLimit;
+},
+set: function(t) {
+this._enableLimit = t;
+this._joint && this._joint.EnableLimit(t);
+}
+},
+enableMotor: {
+tooltip: !1,
+get: function() {
+return this._enableMotor;
+},
+set: function(t) {
+this._enableMotor = t;
+this._joint && this._joint.EnableMotor(t);
+}
+}
+},
+getJointAngle: function() {
+return this._joint ? this._joint.GetJointAngle() * s : 0;
+},
+setLimits: function(t, e) {
+if (this._joint) return this._joint.SetLimits(t * r, e * r);
+},
+_createJointDef: function() {
+var t = new b2.RevoluteJointDef();
+t.localAnchorA = new b2.Vec2(this.anchor.x / n, this.anchor.y / n);
+t.localAnchorB = new b2.Vec2(this.connectedAnchor.x / n, this.connectedAnchor.y / n);
+t.lowerAngle = this.upperAngle * r;
+t.upperAngle = this.lowerAngle * r;
+t.maxMotorTorque = this.maxMotorTorque;
+t.motorSpeed = this.motorSpeed * r;
+t.enableLimit = this.enableLimit;
+t.enableMotor = this.enableMotor;
+t.referenceAngle = this.referenceAngle * r;
+return t;
+}
+});
+cc.RevoluteJoint = e.exports = o;
+}), {
+"../CCPhysicsTypes": 175
+} ],
+191: [ (function(t, e, i) {
+"use strict";
+var n = t("../CCPhysicsTypes").PTM_RATIO, r = cc.Class({
+name: "cc.RopeJoint",
+extends: cc.Joint,
+editor: !1,
+properties: {
+_maxLength: 1,
+maxLength: {
+tooltip: !1,
+get: function() {
+return this._maxLength;
+},
+set: function(t) {
+this._maxLength = t;
+this._joint && this._joint.SetMaxLength(t);
+}
+}
+},
+_createJointDef: function() {
+var t = new b2.RopeJointDef();
+t.localAnchorA = new b2.Vec2(this.anchor.x / n, this.anchor.y / n);
+t.localAnchorB = new b2.Vec2(this.connectedAnchor.x / n, this.connectedAnchor.y / n);
+t.maxLength = this.maxLength / n;
+return t;
+}
+});
+cc.RopeJoint = e.exports = r;
+}), {
+"../CCPhysicsTypes": 175
+} ],
+192: [ (function(t, e, i) {
+"use strict";
+var n = t("../CCPhysicsTypes").PTM_RATIO, r = t("../CCPhysicsTypes").ANGLE_TO_PHYSICS_ANGLE, s = cc.Class({
+name: "cc.WeldJoint",
+extends: cc.Joint,
+editor: !1,
+properties: {
+referenceAngle: {
+default: 0,
+tooltip: !1
+},
+_frequency: 0,
+_dampingRatio: 0,
+frequency: {
+tooltip: !1,
+get: function() {
+return this._frequency;
+},
+set: function(t) {
+this._frequency = t;
+this._joint && this._joint.SetFrequency(t);
+}
+},
+dampingRatio: {
+tooltip: !1,
+get: function() {
+return this._dampingRatio;
+},
+set: function(t) {
+this._dampingRatio = t;
+this._joint && this._joint.SetDampingRatio(t);
+}
+}
+},
+_createJointDef: function() {
+var t = new b2.WeldJointDef();
+t.localAnchorA = new b2.Vec2(this.anchor.x / n, this.anchor.y / n);
+t.localAnchorB = new b2.Vec2(this.connectedAnchor.x / n, this.connectedAnchor.y / n);
+t.referenceAngle = this.referenceAngle * r;
+t.frequencyHz = this.frequency;
+t.dampingRatio = this.dampingRatio;
+return t;
+}
+});
+cc.WeldJoint = e.exports = s;
+}), {
+"../CCPhysicsTypes": 175
+} ],
+193: [ (function(t, e, i) {
+"use strict";
+var n = t("../CCPhysicsTypes").PTM_RATIO, r = t("../CCPhysicsTypes").ANGLE_TO_PHYSICS_ANGLE, s = cc.Class({
+name: "cc.WheelJoint",
+extends: cc.Joint,
+editor: !1,
+properties: {
+_maxMotorTorque: 0,
+_motorSpeed: 0,
+_enableMotor: !1,
+_frequency: 2,
+_dampingRatio: .7,
+localAxisA: {
+default: cc.v2(1, 0),
+tooltip: !1
+},
+maxMotorTorque: {
+tooltip: !1,
+get: function() {
+return this._maxMotorTorque;
+},
+set: function(t) {
+this._maxMotorTorque = t;
+this._joint && this._joint.SetMaxMotorTorque(t);
+}
+},
+motorSpeed: {
+tooltip: !1,
+get: function() {
+return this._motorSpeed;
+},
+set: function(t) {
+this._motorSpeed = t;
+this._joint && this._joint.SetMotorSpeed(t * r);
+}
+},
+enableMotor: {
+tooltip: !1,
+get: function() {
+return this._enableMotor;
+},
+set: function(t) {
+this._enableMotor = t;
+this._joint && this._joint.EnableMotor(t);
+}
+},
+frequency: {
+tooltip: !1,
+get: function() {
+return this._frequency;
+},
+set: function(t) {
+this._frequency = t;
+this._joint && this._joint.SetFrequency(t);
+}
+},
+dampingRatio: {
+tooltip: !1,
+get: function() {
+return this._dampingRatio;
+},
+set: function(t) {
+this._dampingRatio = t;
+this._joint && this._joint.SetDampingRatio(t);
+}
+}
+},
+_createJointDef: function() {
+var t = new b2.WheelJointDef();
+t.localAnchorA = new b2.Vec2(this.anchor.x / n, this.anchor.y / n);
+t.localAnchorB = new b2.Vec2(this.connectedAnchor.x / n, this.connectedAnchor.y / n);
+t.localAxisA = new b2.Vec2(this.localAxisA.x, this.localAxisA.y);
+t.maxMotorTorque = this.maxMotorTorque;
+t.motorSpeed = this.motorSpeed * r;
+t.enableMotor = this.enableMotor;
+t.dampingRatio = this.dampingRatio;
+t.frequencyHz = this.frequency;
+return t;
+}
+});
+cc.WheelJoint = e.exports = s;
+}), {
+"../CCPhysicsTypes": 175
+} ],
+194: [ (function(t, e, i) {
+"use strict";
+var n = t("../CCPhysicsTypes").BodyType;
+function r() {
+this._point = new b2.Vec2();
+this._isPoint = !1;
+this._fixtures = [];
+}
+r.prototype.init = function(t) {
+if (t) {
+this._isPoint = !0;
+this._point.x = t.x;
+this._point.y = t.y;
+} else this._isPoint = !1;
+this._fixtures.length = 0;
+};
+r.prototype.ReportFixture = function(t) {
+if (t.GetBody().GetType() === n.Dynamic) if (this._isPoint) {
+if (t.TestPoint(this._point)) {
+this._fixtures.push(t);
+return !1;
+}
+} else this._fixtures.push(t);
+return !0;
+};
+r.prototype.getFixture = function() {
+return this._fixtures[0];
+};
+r.prototype.getFixtures = function() {
+return this._fixtures;
+};
+cc.PhysicsAABBQueryCallback = e.exports = r;
+}), {
+"../CCPhysicsTypes": 175
+} ],
+195: [ (function(t, e, i) {
+"use strict";
+function n() {
+this._contactFixtures = [];
+}
+n.prototype.setBeginContact = function(t) {
+this._BeginContact = t;
+};
+n.prototype.setEndContact = function(t) {
+this._EndContact = t;
+};
+n.prototype.setPreSolve = function(t) {
+this._PreSolve = t;
+};
+n.prototype.setPostSolve = function(t) {
+this._PostSolve = t;
+};
+n.prototype.BeginContact = function(t) {
+if (this._BeginContact) {
+var e = t.GetFixtureA(), i = t.GetFixtureB(), n = this._contactFixtures;
+t._shouldReport = !1;
+if (-1 !== n.indexOf(e) || -1 !== n.indexOf(i)) {
+t._shouldReport = !0;
+this._BeginContact(t);
+}
+}
+};
+n.prototype.EndContact = function(t) {
+if (this._EndContact && t._shouldReport) {
+t._shouldReport = !1;
+this._EndContact(t);
+}
+};
+n.prototype.PreSolve = function(t, e) {
+this._PreSolve && t._shouldReport && this._PreSolve(t, e);
+};
+n.prototype.PostSolve = function(t, e) {
+this._PostSolve && t._shouldReport && this._PostSolve(t, e);
+};
+n.prototype.registerContactFixture = function(t) {
+this._contactFixtures.push(t);
+};
+n.prototype.unregisterContactFixture = function(t) {
+cc.js.array.remove(this._contactFixtures, t);
+};
+cc.PhysicsContactListener = e.exports = n;
+}), {} ],
+196: [ (function(t, e, i) {
+"use strict";
+var n = t("../CCPhysicsTypes").PTM_RATIO, r = cc.v2(), s = cc.Color.GREEN, o = cc.Color.RED;
+function a(t) {
+b2.Draw.call(this);
+this._drawer = t;
+this._xf = this._dxf = new b2.Transform();
+}
+cc.js.extend(a, b2.Draw);
+cc.js.mixin(a.prototype, {
+_DrawPolygon: function(t, e) {
+for (var i = this._drawer, s = 0; s < e; s++) {
+b2.Transform.MulXV(this._xf, t[s], r);
+var o = r.x * n, a = r.y * n;
+0 === s ? i.moveTo(o, a) : i.lineTo(o, a);
+}
+i.close();
+},
+DrawPolygon: function(t, e, i) {
+this._applyStrokeColor(i);
+this._DrawPolygon(t, e);
+this._drawer.stroke();
+},
+DrawSolidPolygon: function(t, e, i) {
+this._applyFillColor(i);
+this._DrawPolygon(t, e);
+this._drawer.fill();
+this._drawer.stroke();
+},
+_DrawCircle: function(t, e) {
+var i = this._xf.p;
+this._drawer.circle((t.x + i.x) * n, (t.y + i.y) * n, e * n);
+},
+DrawCircle: function(t, e, i) {
+this._applyStrokeColor(i);
+this._DrawCircle(t, e);
+this._drawer.stroke();
+},
+DrawSolidCircle: function(t, e, i, n) {
+this._applyFillColor(n);
+this._DrawCircle(t, e);
+this._drawer.fill();
+},
+DrawSegment: function(t, e, i) {
+var s = this._drawer;
+if (t.x !== e.x || t.y !== e.y) {
+this._applyStrokeColor(i);
+b2.Transform.MulXV(this._xf, t, r);
+s.moveTo(r.x * n, r.y * n);
+b2.Transform.MulXV(this._xf, e, r);
+s.lineTo(r.x * n, r.y * n);
+s.stroke();
+} else {
+this._applyFillColor(i);
+this._DrawCircle(t, 2 / n);
+s.fill();
+}
+},
+DrawTransform: function(t) {
+var e = this._drawer;
+e.strokeColor = o;
+r.x = r.y = 0;
+b2.Transform.MulXV(t, r, r);
+e.moveTo(r.x * n, r.y * n);
+r.x = 1;
+r.y = 0;
+b2.Transform.MulXV(t, r, r);
+e.lineTo(r.x * n, r.y * n);
+e.stroke();
+e.strokeColor = s;
+r.x = r.y = 0;
+b2.Transform.MulXV(t, r, r);
+e.moveTo(r.x * n, r.y * n);
+r.x = 0;
+r.y = 1;
+b2.Transform.MulXV(t, r, r);
+e.lineTo(r.x * n, r.y * n);
+e.stroke();
+},
+DrawPoint: function(t, e, i) {},
+_applyStrokeColor: function(t) {
+var e = this._drawer.strokeColor;
+e.r = 255 * t.r;
+e.g = 255 * t.g;
+e.b = 255 * t.b;
+e.a = 150;
+this._drawer.strokeColor = e;
+},
+_applyFillColor: function(t) {
+var e = this._drawer.fillColor;
+e.r = 255 * t.r;
+e.g = 255 * t.g;
+e.b = 255 * t.b;
+e.a = 150;
+this._drawer.fillColor = e;
+},
+PushTransform: function(t) {
+this._xf = t;
+},
+PopTransform: function() {
+this._xf = this._dxf;
+}
+});
+e.exports = a;
+}), {
+"../CCPhysicsTypes": 175
+} ],
+197: [ (function(t, e, i) {
+"use strict";
+function n() {
+this._type = 0;
+this._fixtures = [];
+this._points = [];
+this._normals = [];
+this._fractions = [];
+}
+n.prototype.init = function(t) {
+this._type = t;
+this._fixtures.length = 0;
+this._points.length = 0;
+this._normals.length = 0;
+this._fractions.length = 0;
+};
+n.prototype.ReportFixture = function(t, e, i, n) {
+if (0 === this._type) {
+this._fixtures[0] = t;
+this._points[0] = e;
+this._normals[0] = i;
+this._fractions[0] = n;
+return n;
+}
+this._fixtures.push(t);
+this._points.push(cc.v2(e));
+this._normals.push(cc.v2(i));
+this._fractions.push(n);
+return 1 === this._type ? 0 : this._type >= 2 ? 1 : n;
+};
+n.prototype.getFixtures = function() {
+return this._fixtures;
+};
+n.prototype.getPoints = function() {
+return this._points;
+};
+n.prototype.getNormals = function() {
+return this._normals;
+};
+n.prototype.getFractions = function() {
+return this._fractions;
+};
+cc.PhysicsRayCastCallback = e.exports = n;
+}), {} ],
+198: [ (function(t, e, i) {
+"use strict";
+e.exports = {
+getWorldRotation: function(t) {
+for (var e = t.angle, i = t.parent; i.parent; ) {
+e += i.angle;
+i = i.parent;
+}
+return -e;
+},
+getWorldScale: function(t) {
+for (var e = t.scaleX, i = t.scaleY, n = t.parent; n.parent; ) {
+e *= n.scaleX;
+i *= n.scaleY;
+n = n.parent;
+}
+return cc.v2(e, i);
+},
+convertToNodeRotation: function(t, e) {
+e -= -t.angle;
+for (var i = t.parent; i.parent; ) {
+e -= -i.angle;
+i = i.parent;
+}
+return e;
+}
+};
+}), {} ],
+199: [ (function(t, e, i) {
+"use strict";
+}), {
+"../event-manager": 131,
+"../platform/js": 221,
+"./CCMacro": 206,
+"./CCSys": 210
+} ],
+200: [ (function(i, n, r) {
+"use strict";
+i("../assets/CCAsset");
+var s = i("./utils").callInNextTick, o = i("../load-pipeline/CCLoader"), a = i("../load-pipeline/asset-table"), c = i("../load-pipeline/pack-downloader"), l = i("../load-pipeline/auto-release-utils"), h = i("../utils/decode-uuid"), u = i("../load-pipeline/md5-pipe"), _ = i("../load-pipeline/subpackage-pipe"), f = i("./js"), d = "", m = "", p = f.createMap(!0);
+function v(t) {
+return t && (t.constructor === cc.SceneAsset || t instanceof cc.Scene);
+}
+function y(t, e) {
+this.url = t;
+this.type = e;
+}
+var g = {
+loadAsset: function(i, n, r) {
+if ("string" !== ("object" === (e = typeof i) ? t(i) : e)) return s(n, new Error("[AssetLibrary] uuid must be string"), null);
+var a = {
+uuid: i,
+type: "uuid"
+};
+r && r.existingAsset && (a.existingAsset = r.existingAsset);
+o.load(a, (function(t, e) {
+if (t || !e) t = new Error("[AssetLibrary] loading JSON or dependencies failed: " + (t ? t.message : "Unknown error")); else {
+if (e.constructor === cc.SceneAsset) {
+var r = cc.loader._getReferenceKey(i);
+e.scene.dependAssets = l.getDependsRecursively(r);
+}
+if (v(e)) {
+var s = cc.loader._getReferenceKey(i);
+o.removeItem(s);
+}
+}
+n && n(t, e);
+}));
+},
+getLibUrlNoExt: function(t, e) {
+t = h(t);
+return (e ? m + "assets/" : d) + t.slice(0, 2) + "/" + t;
+},
+_queryAssetInfoInEditor: function(t, e) {
+0;
+},
+_getAssetInfoInRuntime: function(t, e) {
+e = e || {
+url: null,
+raw: !1
+};
+var i = p[t];
+if (i && !f.isChildClassOf(i.type, cc.Asset)) {
+e.url = m + i.url;
+e.raw = !0;
+} else {
+e.url = this.getLibUrlNoExt(t) + ".json";
+e.raw = !1;
+}
+return e;
+},
+_uuidInSettings: function(t) {
+return t in p;
+},
+queryAssetInfo: function(t, e) {
+var i = this._getAssetInfoInRuntime(t);
+e(null, i.url, i.raw);
+},
+parseUuidInEditor: function(t) {},
+loadJson: function(t, e) {
+var i = "" + (new Date().getTime() + Math.random()), n = {
+uuid: i,
+type: "uuid",
+content: t,
+skips: [ o.assetLoader.id, o.downloader.id ]
+};
+o.load(n, (function(t, n) {
+if (t) t = new Error("[AssetLibrary] loading JSON or dependencies failed: " + t.message); else {
+if (n.constructor === cc.SceneAsset) {
+var r = cc.loader._getReferenceKey(i);
+n.scene.dependAssets = l.getDependsRecursively(r);
+}
+if (v(n)) {
+var s = cc.loader._getReferenceKey(i);
+o.removeItem(s);
+}
+}
+n._uuid = "";
+e && e(t, n);
+}));
+},
+getAssetByUuid: function(t) {
+return g._uuidToAsset[t] || null;
+},
+init: function(t) {
+0;
+var e = t.libraryPath;
+e = e.replace(/\\/g, "/");
+d = cc.path.stripSep(e) + "/";
+m = t.rawAssetsBase;
+if (t.subpackages) {
+var i = new _(t.subpackages);
+cc.loader.insertPipeAfter(cc.loader.assetLoader, i);
+cc.loader.subPackPipe = i;
+}
+var n = t.md5AssetsMap;
+if (n && n.import) {
+var r = 0, s = 0, l = f.createMap(!0), v = n.import;
+for (r = 0; r < v.length; r += 2) l[s = h(v[r])] = v[r + 1];
+var g = f.createMap(!0);
+v = n["raw-assets"];
+for (r = 0; r < v.length; r += 2) g[s = h(v[r])] = v[r + 1];
+var x = new u(l, g, d);
+cc.loader.insertPipeAfter(cc.loader.assetLoader, x);
+cc.loader.md5Pipe = x;
+}
+var C = o._assetTables;
+for (var b in C) C[b].reset();
+var A = t.rawAssets;
+if (A) for (var S in A) {
+var w = A[S];
+for (var s in w) {
+var T = w[s], E = T[0], M = T[1], B = cc.js._getClassById(M);
+if (B) {
+p[s] = new y(S + "/" + E, B);
+var D = cc.path.extname(E);
+D && (E = E.slice(0, -D.length));
+var I = 1 === T[2];
+C[S] || (C[S] = new a());
+C[S].add(E, s, B, !I);
+} else cc.error("Cannot get", M);
+}
+}
+t.packedAssets && c.initPacks(t.packedAssets);
+cc.url._init(t.mountPaths && t.mountPaths.assets || m + "assets");
+},
+_uuidToAsset: {}
+}, x = {
+effect: {},
+material: {}
+}, C = {};
+function b(t, e, i) {
+var n = t + "s", r = x[t] = {}, s = "internal";
+0;
+cc.loader.loadResDir(n, e, s, (function() {}), (function(t, e) {
+if (t) cc.error(t); else for (var n = 0; n < e.length; n++) {
+var s = e[n];
+cc.loader.getDependsRecursively(s).forEach((function(t) {
+return C[t] = !0;
+}));
+r["" + s.name] = s;
+}
+i();
+}));
+}
+g._loadBuiltins = function(t) {
+if (cc.game.renderType === cc.game.RENDER_TYPE_CANVAS) return t && t();
+b("effect", cc.EffectAsset, (function() {
+b("material", cc.Material, t);
+}));
+};
+g.getBuiltin = function(t, e) {
+return x[t][e];
+};
+g.getBuiltins = function(t) {
+return t ? x[t] : x;
+};
+g.resetBuiltins = function() {
+x = {
+effect: {},
+material: {}
+};
+C = {};
+};
+g.getBuiltinDeps = function() {
+return C;
+};
+n.exports = cc.AssetLibrary = g;
+}), {
+"../assets/CCAsset": 56,
+"../load-pipeline/CCLoader": 147,
+"../load-pipeline/asset-table": 149,
+"../load-pipeline/auto-release-utils": 151,
+"../load-pipeline/md5-pipe": 158,
+"../load-pipeline/pack-downloader": 159,
+"../load-pipeline/subpackage-pipe": 162,
+"../utils/decode-uuid": 290,
+"./js": 221,
+"./utils": 225
+} ],
+201: [ (function(i, n, r) {
+"use strict";
+var s = i("./js"), o = i("./CCEnum"), a = i("./utils"), c = (a.isPlainEmptyObj_DEV,
+a.cloneable_DEV, i("./attribute")), l = c.DELIMETER, h = (c.getTypeChecker, i("./preprocess-class"));
+i("./requiring-frame");
+var u = [ "name", "extends", "mixins", "ctor", "__ctor__", "properties", "statics", "editor", "__ES6__" ];
+function _(t, e) {
+t.indexOf(e) < 0 && t.push(e);
+}
+var f = {
+datas: null,
+push: function(t) {
+if (this.datas) this.datas.push(t); else {
+this.datas = [ t ];
+var e = this;
+setTimeout((function() {
+e.init();
+}), 0);
+}
+},
+init: function() {
+var i = this.datas;
+if (i) {
+for (var n = 0; n < i.length; ++n) {
+var r = i[n], o = r.cls, a = r.props;
+"function" === ("object" === (e = typeof a) ? t(a) : e) && (a = a());
+var c = s.getClassName(o);
+a ? D(o, c, a, o.$super, r.mixins) : cc.errorID(3633, c);
+}
+this.datas = null;
+}
+}
+};
+function d(t, e) {
+0;
+_(t.__props__, e);
+}
+function m(t, e, i, n, r) {
+var s = n.default;
+0;
+c.setClassAttr(t, i, "default", s);
+d(t, i);
+R(t, n, e, i, !1);
+}
+function p(t, e, i, n, r) {
+var o = n.get, a = n.set, l = t.prototype, h = Object.getOwnPropertyDescriptor(l, i), u = !h;
+if (o) {
+0;
+R(t, n, e, i, !0);
+0;
+c.setClassAttr(t, i, "serializable", !1);
+0;
+r || s.get(l, i, o, u, u);
+0;
+}
+if (a) {
+if (!r) {
+0;
+s.set(l, i, a, u, u);
+}
+0;
+}
+}
+function v(i) {
+return "function" === ("object" === (e = typeof i) ? t(i) : e) ? i() : i;
+}
+function y(t, e, i) {
+for (var n in e) t.hasOwnProperty(n) || i && !i(n) || Object.defineProperty(t, n, s.getPropertyDescriptor(e, n));
+}
+function g(t, e, i, n) {
+var r, o, a = n.__ctor__, l = n.ctor, h = n.__ES6__;
+if (h) {
+r = [ l ];
+o = l;
+} else {
+r = a ? [ a ] : E(e, i, n);
+o = T(r, e, t, n);
+s.value(o, "extend", (function(t) {
+t.extends = this;
+return I(t);
+}), !0);
+}
+s.value(o, "__ctors__", r.length > 0 ? r : null, !0);
+var u = o.prototype;
+if (e) {
+if (!h) {
+s.extend(o, e);
+u = o.prototype;
+}
+o.$super = e;
+0;
+}
+if (i) {
+for (var _ = i.length - 1; _ >= 0; _--) {
+var f = i[_];
+y(u, f.prototype);
+y(o, f, (function(t) {
+return f.hasOwnProperty(t) && !0;
+}));
+I._isCCClass(f) && y(c.getClassAttrs(o), c.getClassAttrs(f));
+}
+u.constructor = o;
+}
+h || (u.__initProps__ = w);
+s.setClassName(t, o);
+return o;
+}
+function x(t, e, i, n) {
+var r = cc.Component, o = cc._RF.peek();
+if (o && s.isChildClassOf(e, r)) {
+if (s.isChildClassOf(o.cls, r)) {
+cc.errorID(3615);
+return null;
+}
+0;
+t = t || o.script;
+}
+var a = g(t, e, i, n);
+if (o) if (s.isChildClassOf(e, r)) {
+var c = o.uuid;
+if (c) {
+s._setClassId(c, a);
+0;
+}
+o.cls = a;
+} else s.isChildClassOf(o.cls, r) || (o.cls = a);
+return a;
+}
+function C(t) {
+for (var e = s.getClassName(t), i = t.constructor, n = "new " + e + "(", r = 0; r < i.__props__.length; r++) {
+var o = t[i.__props__[r]];
+0;
+n += o;
+r < i.__props__.length - 1 && (n += ",");
+}
+return n + ")";
+}
+function b(t) {
+return JSON.stringify(t).replace(/\u2028/g, "\\u2028").replace(/\u2029/g, "\\u2029");
+}
+function A(i, n) {
+for (var r = [], s = "", o = 0; o < n.length; o++) {
+var a = n[o], c = a + l + "default";
+if (c in i) {
+var h, u;
+h = S.test(a) ? "this." + a + "=" : "this[" + b(a) + "]=";
+var _ = i[c];
+if ("object" === ("object" === (e = typeof _) ? t(_) : e) && _) u = _ instanceof cc.ValueType ? C(_) : Array.isArray(_) ? "[]" : "{}"; else if ("function" === ("object" === (e = typeof _) ? t(_) : e)) {
+var f = r.length;
+r.push(_);
+u = "F[" + f + "]()";
+0;
+} else u = "string" === ("object" === (e = typeof _) ? t(_) : e) ? b(_) : _;
+s += h = h + u + ";\n";
+}
+}
+return 0 === r.length ? Function(s) : Function("F", "return (function(){\n" + s + "})")(r);
+}
+var S = /^[A-Za-z_$][0-9A-Za-z_$]*$/;
+function w(t) {
+var e = c.getClassAttrs(t), i = t.__props__;
+if (null === i) {
+f.init();
+i = t.__props__;
+}
+var n = A(e, i);
+t.prototype.__initProps__ = n;
+n.call(this);
+}
+var T = function(t, e, i, n) {
+var r = "return function CCClass(){\n";
+e && B(e, n, i) && (r += "this._super=null;\n");
+r += "this.__initProps__(CCClass);\n";
+var s = t.length;
+if (s > 0) {
+0;
+var o = "].apply(this,arguments);\n";
+if (1 === s) r += "CCClass.__ctors__[0" + o; else {
+r += "var cs=CCClass.__ctors__;\n";
+for (var a = 0; a < s; a++) r += "cs[" + a + o;
+}
+0;
+}
+r += "}";
+return Function(r)();
+};
+function E(t, e, i) {
+function n(t) {
+return I._isCCClass(t) ? t.__ctors__ || [] : [ t ];
+}
+for (var r = [], s = [ t ].concat(e), o = 0; o < s.length; o++) {
+var a = s[o];
+if (a) for (var c = n(a), l = 0; l < c.length; l++) _(r, c[l]);
+}
+var h = i.ctor;
+h && r.push(h);
+return r;
+}
+var M = /xyz/.test((function() {
+xyz;
+})) ? /\b\._super\b/ : /.*/;
+/xyz/.test((function() {
+xyz;
+}));
+function B(i, n, r) {
+var o = !1;
+for (var a in n) if (!(u.indexOf(a) >= 0)) {
+var c = n[a];
+if ("function" === ("object" === (e = typeof c) ? t(c) : e)) {
+var l = s.getPropertyDescriptor(i.prototype, a);
+if (l) {
+var h = l.value;
+if ("function" === ("object" === (e = typeof h) ? t(h) : e)) {
+if (M.test(c)) {
+o = !0;
+n[a] = (function(t, e) {
+return function() {
+var i = this._super;
+this._super = t;
+var n = e.apply(this, arguments);
+this._super = i;
+return n;
+};
+})(h, c);
+}
+continue;
+}
+}
+0;
+}
+}
+return o;
+}
+function D(t, e, i, n, r, s) {
+t.__props__ = [];
+n && n.__props__ && (t.__props__ = n.__props__.slice());
+if (r) for (var o = 0; o < r.length; ++o) {
+var a = r[o];
+a.__props__ && (t.__props__ = t.__props__.concat(a.__props__.filter((function(e) {
+return t.__props__.indexOf(e) < 0;
+}))));
+}
+if (i) {
+h.preprocessAttrs(i, e, t, s);
+for (var u in i) {
+var _ = i[u];
+"default" in _ ? m(t, e, u, _) : p(t, e, u, _, s);
+}
+}
+var f = c.getClassAttrs(t);
+t.__values__ = t.__props__.filter((function(t) {
+return !1 !== f[t + l + "serializable"];
+}));
+}
+function I(i) {
+var n = (i = i || {}).name, r = i.extends, o = i.mixins, a = x(n, r, o, i);
+n || (n = cc.js.getClassName(a));
+a._sealed = !0;
+r && (r._sealed = !1);
+var c = i.properties;
+if ("function" === ("object" === (e = typeof c) ? t(c) : e) || r && null === r.__props__ || o && o.some((function(t) {
+return null === t.__props__;
+}))) {
+f.push({
+cls: a,
+props: c,
+mixins: o
+});
+a.__props__ = a.__values__ = null;
+} else D(a, n, c, r, i.mixins, i.__ES6__);
+var l = i.statics;
+if (l) {
+var _;
+0;
+for (_ in l) a[_] = l[_];
+}
+for (var d in i) if (!(u.indexOf(d) >= 0)) {
+var m = i[d];
+h.validateMethodWithProps(m, d, n, a, r) && s.value(a.prototype, d, m, !0, !0);
+}
+var p = i.editor;
+p && s.isChildClassOf(r, cc.Component) && cc.Component._registerEditorProps(a, p);
+return a;
+}
+I._isCCClass = function(t) {
+return t && t.hasOwnProperty("__ctors__");
+};
+I._fastDefine = function(t, e, i) {
+s.setClassName(t, e);
+for (var n = e.__props__ = e.__values__ = Object.keys(i), r = c.getClassAttrs(e), o = 0; o < n.length; o++) {
+var a = n[o];
+r[a + l + "visible"] = !1;
+r[a + l + "default"] = i[a];
+}
+};
+I.Attr = c;
+I.attr = c.attr;
+I.getInheritanceChain = function(t) {
+for (var e = []; t = s.getSuper(t); ) t !== Object && e.push(t);
+return e;
+};
+var P = {
+Integer: "Number",
+Float: "Number",
+Boolean: "Boolean",
+String: "String"
+};
+function R(i, n, r, s, a) {
+var h = null, u = "";
+function _() {
+u = s + l;
+return h = c.getClassAttrs(i);
+}
+0;
+var f = n.type;
+if (f) {
+var d = P[f];
+if (d) {
+(h || _())[u + "type"] = f;
+0;
+} else if ("Object" === f) 0; else if (f === c.ScriptUuid) {
+(h || _())[u + "type"] = "Script";
+h[u + "ctor"] = cc.ScriptAsset;
+0;
+} else if ("object" === ("object" === (e = typeof f) ? t(f) : e)) if (o.isEnum(f)) {
+(h || _())[u + "type"] = "Enum";
+h[u + "enumList"] = o.getList(f);
+} else 0; else if ("function" === ("object" === (e = typeof f) ? t(f) : e)) if (n.url) {
+(h || _())[u + "type"] = "Object";
+h[u + "ctor"] = f;
+0;
+} else {
+(h || _())[u + "type"] = "Object";
+h[u + "ctor"] = f;
+0;
+} else 0;
+}
+function m(i, r) {
+if (i in n) {
+var s = n[i];
+("object" === (e = typeof s) ? t(s) : e) === r && ((h || _())[u + i] = s);
+}
+}
+n.editorOnly && ((h || _())[u + "editorOnly"] = !0);
+0;
+n.url && ((h || _())[u + "saveUrlAsAsset"] = !0);
+!1 === n.serializable && ((h || _())[u + "serializable"] = !1);
+m("formerlySerializedAs", "string");
+0;
+var p = n.range;
+if (p) if (Array.isArray(p)) if (p.length >= 2) {
+(h || _())[u + "min"] = p[0];
+h[u + "max"] = p[1];
+p.length > 2 && (h[u + "step"] = p[2]);
+} else 0; else 0;
+m("min", "number");
+m("max", "number");
+m("step", "number");
+}
+cc.Class = I;
+n.exports = {
+isArray: function(t) {
+t = v(t);
+return Array.isArray(t);
+},
+fastDefine: I._fastDefine,
+getNewValueTypeCode: C,
+IDENTIFIER_RE: S,
+escapeForJS: b,
+getDefault: v
+};
+0;
+}), {
+"./CCEnum": 203,
+"./attribute": 213,
+"./js": 221,
+"./preprocess-class": 222,
+"./requiring-frame": 223,
+"./utils": 225
+} ],
+202: [ (function(i, n, r) {
+"use strict";
+i("./CCClass");
+var s = i("./preprocess-class"), o = i("./js"), a = "__ccclassCache__";
+function c(t) {
+return t;
+}
+function l(t, e) {
+return t[e] || (t[e] = {});
+}
+function h(i) {
+return function(n) {
+return "function" === ("object" === (e = typeof n) ? t(n) : e) ? i(n) : function(t) {
+return i(t, n);
+};
+};
+}
+function u(t, e, i) {
+return function(t) {
+0;
+return function(i) {
+return e(i, t);
+};
+};
+}
+var _ = u.bind(null, !1);
+function f(t) {
+return u.bind(null, !1);
+}
+var d = f(), m = f();
+function p(t, e) {
+0;
+return l(t, a);
+}
+function v(i) {
+var n;
+try {
+n = i();
+} catch (t) {
+return i;
+}
+return "object" !== ("object" === (e = typeof n) ? t(n) : e) || null === n ? n : i;
+}
+function y(t) {
+var e;
+try {
+e = new t();
+} catch (t) {
+0;
+return {};
+}
+return e;
+}
+function g(t, e, i, n, r, a) {
+var c;
+n && (c = (c = s.getFullFormOfProperty(n)) || n);
+var l = e[i], h = o.mixin(l || {}, c || {});
+if (r && (r.get || r.set)) {
+r.get && (h.get = r.get);
+r.set && (h.set = r.set);
+} else {
+0;
+var u = void 0;
+if (r) {
+if (r.initializer) {
+u = v(r.initializer);
+!0;
+}
+} else {
+var _ = a.default || (a.default = y(t));
+if (_.hasOwnProperty(i)) {
+u = _[i];
+!0;
+}
+}
+0;
+h.default = u;
+}
+e[i] = h;
+}
+var x = h((function(t, e) {
+var i = o.getSuper(t);
+i === Object && (i = null);
+var n = {
+name: e,
+extends: i,
+ctor: t,
+__ES6__: !0
+}, r = t[a];
+if (r) {
+var s = r.proto;
+s && o.mixin(n, s);
+t[a] = void 0;
+}
+return cc.Class(n);
+}));
+function C(t, e, i) {
+return t((function(t, n) {
+var r = p(t);
+if (r) {
+var s = void 0 !== i ? i : n;
+l(l(r, "proto"), "editor")[e] = s;
+}
+}), e);
+}
+function b(t) {
+return t(c);
+}
+var A = b(h), S = C(_, "requireComponent"), w = b(d), T = C(m, "executionOrder"), E = b(h), M = b(h), B = b(d), D = b(d), I = b(d);
+cc._decorator = n.exports = {
+ccclass: x,
+property: function(i, n, r) {
+var s = null;
+function o(t, e, i) {
+var n = p(t.constructor);
+if (n) {
+var r = l(l(n, "proto"), "properties");
+g(t.constructor, r, e, s, i, n);
+}
+}
+if ("undefined" === ("object" == (e = typeof n) ? t(n) : e)) {
+s = i;
+return o;
+}
+o(i, n, r);
+},
+executeInEditMode: A,
+requireComponent: S,
+menu: w,
+executionOrder: T,
+disallowMultiple: E,
+playOnFocus: M,
+inspector: B,
+icon: D,
+help: I,
+mixins: function() {
+for (var t = [], e = 0; e < arguments.length; e++) t[e] = arguments[e];
+return function(e) {
+var i = p(e);
+i && (l(i, "proto").mixins = t);
+};
+}
+};
+}), {
+"./CCClass": 201,
+"./js": 221,
+"./preprocess-class": 222,
+"./utils": 225
+} ],
+203: [ (function(i, n, r) {
+"use strict";
+var s = i("./js");
+function o(i) {
+if ("__enums__" in i) return i;
+s.value(i, "__enums__", null, !0);
+for (var n = -1, r = Object.keys(i), o = 0; o < r.length; o++) {
+var a = r[o], c = i[a];
+if (-1 === c) {
+c = ++n;
+i[a] = c;
+} else if ("number" === ("object" === (e = typeof c) ? t(c) : e)) n = c; else if ("string" === ("object" === (e = typeof c) ? t(c) : e) && Number.isInteger(parseFloat(a))) continue;
+var l = "" + c;
+if (a !== l) {
+0;
+s.value(i, l, a);
+}
+}
+return i;
+}
+o.isEnum = function(t) {
+return t && t.hasOwnProperty("__enums__");
+};
+o.getList = function(t) {
+if (t.__enums__) return t.__enums__;
+var e = t.__enums__ = [];
+for (var i in t) {
+var n = t[i];
+Number.isInteger(n) && e.push({
+name: i,
+value: n
+});
+}
+e.sort((function(t, e) {
+return t.value - e.value;
+}));
+return e;
+};
+n.exports = cc.Enum = o;
+}), {
+"./js": 221
+} ],
+204: [ (function(t, e, i) {
+"use strict";
+var n = t("../event-manager"), r = t("./CCInputManager"), s = void 0;
+cc.Acceleration = function(t, e, i, n) {
+this.x = t || 0;
+this.y = e || 0;
+this.z = i || 0;
+this.timestamp = n || 0;
+};
+r.setAccelerometerEnabled = function(t) {
+var e = this;
+if (e._accelEnabled !== t) {
+e._accelEnabled = t;
+var i = cc.director.getScheduler();
+i.enableForTarget(e);
+if (e._accelEnabled) {
+e._registerAccelerometerEvent();
+e._accelCurTime = 0;
+i.scheduleUpdate(e);
+} else {
+e._unregisterAccelerometerEvent();
+e._accelCurTime = 0;
+i.unscheduleUpdate(e);
+}
+jsb.device.setMotionEnabled(t);
+}
+};
+r.setAccelerometerInterval = function(t) {
+if (this._accelInterval !== t) {
+this._accelInterval = t;
+jsb.device.setMotionInterval(t);
+}
+};
+r._registerKeyboardEvent = function() {
+cc.game.canvas.addEventListener("keydown", (function(t) {
+n.dispatchEvent(new cc.Event.EventKeyboard(t.keyCode, !0));
+t.stopPropagation();
+t.preventDefault();
+}), !1);
+cc.game.canvas.addEventListener("keyup", (function(t) {
+n.dispatchEvent(new cc.Event.EventKeyboard(t.keyCode, !1));
+t.stopPropagation();
+t.preventDefault();
+}), !1);
+};
+r._registerAccelerometerEvent = function() {
+var t = window, e = this;
+e._acceleration = new cc.Acceleration();
+e._accelDeviceEvent = t.DeviceMotionEvent || t.DeviceOrientationEvent;
+cc.sys.browserType === cc.sys.BROWSER_TYPE_MOBILE_QQ && (e._accelDeviceEvent = window.DeviceOrientationEvent);
+var i = e._accelDeviceEvent === t.DeviceMotionEvent ? "devicemotion" : "deviceorientation", n = navigator.userAgent;
+(/Android/.test(n) || /Adr/.test(n) && cc.sys.browserType === cc.BROWSER_TYPE_UC) && (e._minus = -1);
+s = e.didAccelerate.bind(e);
+t.addEventListener(i, s, !1);
+};
+r._unregisterAccelerometerEvent = function() {
+var t = window, e = this._accelDeviceEvent === t.DeviceMotionEvent ? "devicemotion" : "deviceorientation";
+s && t.removeEventListener(e, s, !1);
+};
+r.didAccelerate = function(t) {
+var e = this, i = window;
+if (e._accelEnabled) {
+var n = e._acceleration, r = void 0, s = void 0, o = void 0;
+if (e._accelDeviceEvent === window.DeviceMotionEvent) {
+var a = t.accelerationIncludingGravity;
+r = e._accelMinus * a.x * .1;
+s = e._accelMinus * a.y * .1;
+o = .1 * a.z;
+} else {
+r = t.gamma / 90 * .981;
+s = -t.beta / 90 * .981;
+o = t.alpha / 90 * .981;
+}
+if (cc.view._isRotated) {
+var c = r;
+r = -s;
+s = c;
+}
+n.x = r;
+n.y = s;
+n.z = o;
+n.timestamp = t.timeStamp || Date.now();
+var l = n.x;
+if (90 === i.orientation) {
+n.x = -n.y;
+n.y = l;
+} else if (-90 === i.orientation) {
+n.x = n.y;
+n.y = -l;
+} else if (180 === i.orientation) {
+n.x = -n.x;
+n.y = -n.y;
+}
+if (cc.sys.os === cc.sys.OS_ANDROID && cc.sys.browserType !== cc.sys.BROWSER_TYPE_MOBILE_QQ) {
+n.x = -n.x;
+n.y = -n.y;
+}
+}
+};
+}), {
+"../event-manager": 131,
+"./CCInputManager": 205
+} ],
+205: [ (function(t, e, i) {
+"use strict";
+var n = t("./CCMacro"), r = t("./CCSys"), s = t("../event-manager"), o = n.TOUCH_TIMEOUT, a = cc.v2(), c = {
+_mousePressed: !1,
+_isRegisterEvent: !1,
+_preTouchPoint: cc.v2(0, 0),
+_prevMousePoint: cc.v2(0, 0),
+_preTouchPool: [],
+_preTouchPoolPointer: 0,
+_touches: [],
+_touchesIntegerDict: {},
+_indexBitsUsed: 0,
+_maxTouches: 8,
+_accelEnabled: !1,
+_accelInterval: .2,
+_accelMinus: 1,
+_accelCurTime: 0,
+_acceleration: null,
+_accelDeviceEvent: null,
+_getUnUsedIndex: function() {
+for (var t = this._indexBitsUsed, e = cc.sys.now(), i = 0; i < this._maxTouches; i++) {
+if (!(1 & t)) {
+this._indexBitsUsed |= 1 << i;
+return i;
+}
+var n = this._touches[i];
+if (e - n._lastModified > o) {
+this._removeUsedIndexBit(i);
+delete this._touchesIntegerDict[n.getID()];
+return i;
+}
+t >>= 1;
+}
+return -1;
+},
+_removeUsedIndexBit: function(t) {
+if (!(t < 0 || t >= this._maxTouches)) {
+var e = 1 << t;
+e = ~e;
+this._indexBitsUsed &= e;
+}
+},
+_glView: null,
+handleTouchesBegin: function(t) {
+for (var e = void 0, i = void 0, n = void 0, o = [], a = this._touchesIntegerDict, c = r.now(), l = 0, h = t.length; l < h; l++) if (null == a[n = (e = t[l]).getID()]) {
+var u = this._getUnUsedIndex();
+if (-1 === u) {
+cc.logID(2300, u);
+continue;
+}
+(i = this._touches[u] = new cc.Touch(e._point.x, e._point.y, e.getID()))._lastModified = c;
+i._setPrevPoint(e._prevPoint);
+a[n] = u;
+o.push(i);
+}
+if (o.length > 0) {
+this._glView._convertTouchesWithScale(o);
+var _ = new cc.Event.EventTouch(o);
+_._eventCode = cc.Event.EventTouch.BEGAN;
+s.dispatchEvent(_);
+}
+},
+handleTouchesMove: function(t) {
+for (var e = void 0, i = void 0, n = void 0, o = [], a = this._touches, c = r.now(), l = 0, h = t.length; l < h; l++) {
+n = (e = t[l]).getID();
+if (null != (i = this._touchesIntegerDict[n]) && a[i]) {
+a[i]._setPoint(e._point);
+a[i]._setPrevPoint(e._prevPoint);
+a[i]._lastModified = c;
+o.push(a[i]);
+}
+}
+if (o.length > 0) {
+this._glView._convertTouchesWithScale(o);
+var u = new cc.Event.EventTouch(o);
+u._eventCode = cc.Event.EventTouch.MOVED;
+s.dispatchEvent(u);
+}
+},
+handleTouchesEnd: function(t) {
+var e = this.getSetOfTouchesEndOrCancel(t);
+if (e.length > 0) {
+this._glView._convertTouchesWithScale(e);
+var i = new cc.Event.EventTouch(e);
+i._eventCode = cc.Event.EventTouch.ENDED;
+s.dispatchEvent(i);
+}
+this._preTouchPool.length = 0;
+},
+handleTouchesCancel: function(t) {
+var e = this.getSetOfTouchesEndOrCancel(t);
+if (e.length > 0) {
+this._glView._convertTouchesWithScale(e);
+var i = new cc.Event.EventTouch(e);
+i._eventCode = cc.Event.EventTouch.CANCELLED;
+s.dispatchEvent(i);
+}
+this._preTouchPool.length = 0;
+},
+getSetOfTouchesEndOrCancel: function(t) {
+for (var e = void 0, i = void 0, n = void 0, r = [], s = this._touches, o = this._touchesIntegerDict, a = 0, c = t.length; a < c; a++) if (null != (i = o[n = (e = t[a]).getID()]) && s[i]) {
+s[i]._setPoint(e._point);
+s[i]._setPrevPoint(e._prevPoint);
+r.push(s[i]);
+this._removeUsedIndexBit(i);
+delete o[n];
+}
+return r;
+},
+getHTMLElementPosition: function(t) {
+0;
+var e = document.documentElement, i = window.pageXOffset - e.clientLeft, n = window.pageYOffset - e.clientTop;
+if (t.getBoundingClientRect) {
+var r = t.getBoundingClientRect();
+return {
+left: r.left + i,
+top: r.top + n,
+width: r.width,
+height: r.height
+};
+}
+return t instanceof HTMLCanvasElement ? {
+left: i,
+top: n,
+width: t.width,
+height: t.height
+} : {
+left: i,
+top: n,
+width: parseInt(t.style.width),
+height: parseInt(t.style.height)
+};
+},
+getPreTouch: function(t) {
+for (var e = null, i = this._preTouchPool, n = t.getID(), r = i.length - 1; r >= 0; r--) if (i[r].getID() === n) {
+e = i[r];
+break;
+}
+e || (e = t);
+return e;
+},
+setPreTouch: function(t) {
+for (var e = !1, i = this._preTouchPool, n = t.getID(), r = i.length - 1; r >= 0; r--) if (i[r].getID() === n) {
+i[r] = t;
+e = !0;
+break;
+}
+if (!e) if (i.length <= 50) i.push(t); else {
+i[this._preTouchPoolPointer] = t;
+this._preTouchPoolPointer = (this._preTouchPoolPointer + 1) % 50;
+}
+},
+getTouchByXY: function(t, e, i) {
+var n = this._preTouchPoint, r = this._glView.convertToLocationInView(t, e, i), s = new cc.Touch(r.x, r.y, 0);
+s._setPrevPoint(n.x, n.y);
+n.x = r.x;
+n.y = r.y;
+return s;
+},
+getMouseEvent: function(t, e, i) {
+var n = this._prevMousePoint, r = new cc.Event.EventMouse(i);
+r._setPrevCursor(n.x, n.y);
+n.x = t.x;
+n.y = t.y;
+this._glView._convertMouseToLocationInView(n, e);
+r.setLocation(n.x, n.y);
+return r;
+},
+getPointByEvent: function(t, e) {
+if (null != t.pageX) return {
+x: t.pageX,
+y: t.pageY
+};
+e.left -= document.body.scrollLeft;
+e.top -= document.body.scrollTop;
+return {
+x: t.clientX,
+y: t.clientY
+};
+},
+getTouchesByEvent: function(t, e) {
+for (var i = [], n = this._glView, s = void 0, o = void 0, c = void 0, l = this._preTouchPoint, h = t.changedTouches.length, u = 0; u < h; u++) if (s = t.changedTouches[u]) {
+var _ = void 0;
+_ = r.BROWSER_TYPE_FIREFOX === r.browserType ? n.convertToLocationInView(s.pageX, s.pageY, e, a) : n.convertToLocationInView(s.clientX, s.clientY, e, a);
+if (null != s.identifier) {
+o = new cc.Touch(_.x, _.y, s.identifier);
+c = this.getPreTouch(o).getLocation();
+o._setPrevPoint(c.x, c.y);
+this.setPreTouch(o);
+} else (o = new cc.Touch(_.x, _.y))._setPrevPoint(l.x, l.y);
+l.x = _.x;
+l.y = _.y;
+i.push(o);
+}
+return i;
+},
+registerSystemEvent: function(t) {
+if (!this._isRegisterEvent) {
+this._glView = cc.view;
+var e = this, i = r.isMobile, n = "mouse" in r.capabilities, o = "touches" in r.capabilities;
+0;
+if (n) {
+if (!i) {
+window.addEventListener("mousedown", (function() {
+e._mousePressed = !0;
+}), !1);
+window.addEventListener("mouseup", (function(i) {
+if (e._mousePressed) {
+e._mousePressed = !1;
+var n = e.getHTMLElementPosition(t), r = e.getPointByEvent(i, n);
+if (!cc.rect(n.left, n.top, n.width, n.height).contains(r)) {
+e.handleTouchesEnd([ e.getTouchByXY(r.x, r.y, n) ]);
+var o = e.getMouseEvent(r, n, cc.Event.EventMouse.UP);
+o.setButton(i.button);
+s.dispatchEvent(o);
+}
+}
+}), !1);
+}
+for (var a = cc.Event.EventMouse, c = [ !i && [ "mousedown", a.DOWN, function(i, n, r, s) {
+e._mousePressed = !0;
+e.handleTouchesBegin([ e.getTouchByXY(r.x, r.y, s) ]);
+t.focus();
+} ], !i && [ "mouseup", a.UP, function(t, i, n, r) {
+e._mousePressed = !1;
+e.handleTouchesEnd([ e.getTouchByXY(n.x, n.y, r) ]);
+} ], !i && [ "mousemove", a.MOVE, function(t, i, n, r) {
+e.handleTouchesMove([ e.getTouchByXY(n.x, n.y, r) ]);
+e._mousePressed || i.setButton(null);
+} ], [ "mousewheel", a.SCROLL, function(t, e) {
+e.setScrollData(0, t.wheelDelta);
+} ], [ "DOMMouseScroll", a.SCROLL, function(t, e) {
+e.setScrollData(0, -120 * t.detail);
+} ] ], l = 0; l < c.length; ++l) {
+var h = c[l];
+h && (function() {
+var i = h[0], n = h[1], r = h[2];
+t.addEventListener(i, (function(i) {
+var o = e.getHTMLElementPosition(t), a = e.getPointByEvent(i, o), c = e.getMouseEvent(a, o, n);
+c.setButton(i.button);
+r(i, c, a, o);
+s.dispatchEvent(c);
+i.stopPropagation();
+i.preventDefault();
+}), !1);
+})();
+}
+}
+if (window.navigator.msPointerEnabled) {
+var u = {
+MSPointerDown: e.handleTouchesBegin,
+MSPointerMove: e.handleTouchesMove,
+MSPointerUp: e.handleTouchesEnd,
+MSPointerCancel: e.handleTouchesCancel
+}, _ = function(i) {
+var n = u[i];
+t.addEventListener(i, (function(i) {
+var r = e.getHTMLElementPosition(t);
+r.left -= document.documentElement.scrollLeft;
+r.top -= document.documentElement.scrollTop;
+n.call(e, [ e.getTouchByXY(i.clientX, i.clientY, r) ]);
+i.stopPropagation();
+}), !1);
+};
+for (var f in u) _(f);
+}
+if (o) {
+var d = {
+touchstart: function(i) {
+e.handleTouchesBegin(i);
+t.focus();
+},
+touchmove: function(t) {
+e.handleTouchesMove(t);
+},
+touchend: function(t) {
+e.handleTouchesEnd(t);
+},
+touchcancel: function(t) {
+e.handleTouchesCancel(t);
+}
+}, m = void 0;
+if (cc.sys.browserType === cc.sys.BROWSER_TYPE_WECHAT_GAME_SUB) {
+d = {
+onTouchStart: d.touchstart,
+onTouchMove: d.touchmove,
+onTouchEnd: d.touchend,
+onTouchCancel: d.touchcancel
+};
+m = function(i) {
+var n = d[i];
+wx[i]((function(i) {
+if (i.changedTouches) {
+var r = e.getHTMLElementPosition(t), s = document.body;
+r.left -= s.scrollLeft || 0;
+r.top -= s.scrollTop || 0;
+n(e.getTouchesByEvent(i, r));
+}
+}));
+};
+} else m = function(i) {
+var n = d[i];
+t.addEventListener(i, (function(i) {
+if (i.changedTouches) {
+var r = e.getHTMLElementPosition(t), s = document.body;
+r.left -= s.scrollLeft || 0;
+r.top -= s.scrollTop || 0;
+n(e.getTouchesByEvent(i, r));
+i.stopPropagation();
+i.preventDefault();
+}
+}), !1);
+};
+for (var f in d) m(f);
+}
+cc.sys.browserType !== cc.sys.BROWSER_TYPE_WECHAT_GAME_SUB && this._registerKeyboardEvent();
+this._isRegisterEvent = !0;
+}
+},
+_registerKeyboardEvent: function() {},
+_registerAccelerometerEvent: function() {},
+update: function(t) {
+if (this._accelCurTime > this._accelInterval) {
+this._accelCurTime -= this._accelInterval;
+s.dispatchEvent(new cc.Event.EventAcceleration(this._acceleration));
+}
+this._accelCurTime += t;
+}
+};
+e.exports = _cc.inputManager = c;
+}), {
+"../event-manager": 131,
+"./CCMacro": 206,
+"./CCSys": 210
+} ],
+206: [ (function(t, e, i) {
+"use strict";
+t("./js");
+cc.macro = {
+RAD: Math.PI / 180,
+DEG: 180 / Math.PI,
+REPEAT_FOREVER: Number.MAX_VALUE - 1,
+FLT_EPSILON: 1.192092896e-7,
+MIN_ZINDEX: -Math.pow(2, 15),
+MAX_ZINDEX: Math.pow(2, 15) - 1,
+ONE: 1,
+ZERO: 0,
+SRC_ALPHA: 770,
+SRC_ALPHA_SATURATE: 776,
+SRC_COLOR: 768,
+DST_ALPHA: 772,
+DST_COLOR: 774,
+ONE_MINUS_SRC_ALPHA: 771,
+ONE_MINUS_SRC_COLOR: 769,
+ONE_MINUS_DST_ALPHA: 773,
+ONE_MINUS_DST_COLOR: 775,
+ONE_MINUS_CONSTANT_ALPHA: 32772,
+ONE_MINUS_CONSTANT_COLOR: 32770,
+ORIENTATION_PORTRAIT: 1,
+ORIENTATION_LANDSCAPE: 2,
+ORIENTATION_AUTO: 3,
+DENSITYDPI_DEVICE: "device-dpi",
+DENSITYDPI_HIGH: "high-dpi",
+DENSITYDPI_MEDIUM: "medium-dpi",
+DENSITYDPI_LOW: "low-dpi",
+FIX_ARTIFACTS_BY_STRECHING_TEXEL_TMX: !0,
+DIRECTOR_STATS_POSITION: cc.v2(0, 0),
+ENABLE_STACKABLE_ACTIONS: !0,
+TOUCH_TIMEOUT: 5e3,
+BATCH_VERTEX_COUNT: 2e4,
+ENABLE_TILEDMAP_CULLING: !0,
+DOWNLOAD_MAX_CONCURRENT: 64,
+ENABLE_TRANSPARENT_CANVAS: !1,
+ENABLE_WEBGL_ANTIALIAS: !1,
+ENABLE_CULLING: !1,
+CLEANUP_IMAGE_CACHE: !1,
+SHOW_MESH_WIREFRAME: !1,
+ROTATE_ACTION_CCW: !1
+};
+cc.macro.SUPPORT_TEXTURE_FORMATS = [ ".pkm", ".pvr", ".webp", ".jpg", ".jpeg", ".bmp", ".png" ];
+cc.macro.KEY = {
+none: 0,
+back: 6,
+menu: 18,
+backspace: 8,
+tab: 9,
+enter: 13,
+shift: 16,
+ctrl: 17,
+alt: 18,
+pause: 19,
+capslock: 20,
+escape: 27,
+space: 32,
+pageup: 33,
+pagedown: 34,
+end: 35,
+home: 36,
+left: 37,
+up: 38,
+right: 39,
+down: 40,
+select: 41,
+insert: 45,
+Delete: 46,
+0: 48,
+1: 49,
+2: 50,
+3: 51,
+4: 52,
+5: 53,
+6: 54,
+7: 55,
+8: 56,
+9: 57,
+a: 65,
+b: 66,
+c: 67,
+d: 68,
+e: 69,
+f: 70,
+g: 71,
+h: 72,
+i: 73,
+j: 74,
+k: 75,
+l: 76,
+m: 77,
+n: 78,
+o: 79,
+p: 80,
+q: 81,
+r: 82,
+s: 83,
+t: 84,
+u: 85,
+v: 86,
+w: 87,
+x: 88,
+y: 89,
+z: 90,
+num0: 96,
+num1: 97,
+num2: 98,
+num3: 99,
+num4: 100,
+num5: 101,
+num6: 102,
+num7: 103,
+num8: 104,
+num9: 105,
+"*": 106,
+"+": 107,
+"-": 109,
+numdel: 110,
+"/": 111,
+f1: 112,
+f2: 113,
+f3: 114,
+f4: 115,
+f5: 116,
+f6: 117,
+f7: 118,
+f8: 119,
+f9: 120,
+f10: 121,
+f11: 122,
+f12: 123,
+numlock: 144,
+scrolllock: 145,
+";": 186,
+semicolon: 186,
+equal: 187,
+"=": 187,
+",": 188,
+comma: 188,
+dash: 189,
+".": 190,
+period: 190,
+forwardslash: 191,
+grave: 192,
+"[": 219,
+openbracket: 219,
+backslash: 220,
+"]": 221,
+closebracket: 221,
+quote: 222,
+dpadLeft: 1e3,
+dpadRight: 1001,
+dpadUp: 1003,
+dpadDown: 1004,
+dpadCenter: 1005
+};
+cc.macro.ImageFormat = cc.Enum({
+JPG: 0,
+PNG: 1,
+TIFF: 2,
+WEBP: 3,
+PVR: 4,
+ETC: 5,
+S3TC: 6,
+ATITC: 7,
+TGA: 8,
+RAWDATA: 9,
+UNKNOWN: 10
+});
+cc.macro.BlendFactor = cc.Enum({
+ONE: 1,
+ZERO: 0,
+SRC_ALPHA: 770,
+SRC_COLOR: 768,
+DST_ALPHA: 772,
+DST_COLOR: 774,
+ONE_MINUS_SRC_ALPHA: 771,
+ONE_MINUS_SRC_COLOR: 769,
+ONE_MINUS_DST_ALPHA: 773,
+ONE_MINUS_DST_COLOR: 775
+});
+cc.macro.TextAlignment = cc.Enum({
+LEFT: 0,
+CENTER: 1,
+RIGHT: 2
+});
+cc.macro.VerticalTextAlignment = cc.Enum({
+TOP: 0,
+CENTER: 1,
+BOTTOM: 2
+});
+e.exports = cc.macro;
+}), {
+"./js": 221
+} ],
+207: [ (function(i, n, r) {
+"use strict";
+var s = i("./js"), o = i("./CCClass"), a = 1;
+function c() {
+this._name = "";
+this._objFlags = 0;
+}
+o.fastDefine("cc.Object", c, {
+_name: "",
+_objFlags: 0
+});
+s.value(c, "Flags", {
+Destroyed: a,
+DontSave: 8,
+EditorOnly: 16,
+Dirty: 32,
+DontDestroy: 64,
+PersistentMask: -4192741,
+Destroying: 128,
+Deactivating: 256,
+LockedInEditor: 512,
+HideInHierarchy: 1024,
+IsPreloadStarted: 8192,
+IsOnLoadStarted: 32768,
+IsOnLoadCalled: 16384,
+IsOnEnableCalled: 2048,
+IsStartCalled: 65536,
+IsEditorOnEnableCalled: 4096,
+IsPositionLocked: 1 << 21,
+IsRotationLocked: 1 << 17,
+IsScaleLocked: 1 << 18,
+IsAnchorLocked: 1 << 19,
+IsSizeLocked: 1 << 20
+});
+var l = [];
+function h() {
+for (var t = l.length, e = 0; e < t; ++e) {
+var i = l[e];
+i._objFlags & a || i._destroyImmediate();
+}
+t === l.length ? l.length = 0 : l.splice(0, t);
+0;
+}
+s.value(c, "_deferredDestroy", h);
+0;
+var u = c.prototype;
+s.getset(u, "name", (function() {
+return this._name;
+}), (function(t) {
+this._name = t;
+}), !0);
+s.get(u, "isValid", (function() {
+return !(this._objFlags & a);
+}), !0);
+0;
+u.destroy = function() {
+if (this._objFlags & a) {
+cc.warnID(5e3);
+return !1;
+}
+if (4 & this._objFlags) return !1;
+this._objFlags |= 4;
+l.push(this);
+0;
+return !0;
+};
+0;
+function _(i, n) {
+var r, s = i instanceof cc._BaseNode || i instanceof cc.Component, a = s ? "_id" : null, c = {};
+for (r in i) if (i.hasOwnProperty(r)) {
+if (r === a) continue;
+switch ("object" === (e = typeof i[r]) ? t(i[r]) : e) {
+case "string":
+c[r] = "";
+break;
+
+case "object":
+case "function":
+c[r] = null;
+}
+}
+if (cc.Class._isCCClass(n)) for (var l = cc.Class.Attr.getClassAttrs(n), h = n.__props__, u = 0; u < h.length; u++) {
+var _ = (r = h[u]) + cc.Class.Attr.DELIMETER + "default";
+if (_ in l) {
+if (s && "_id" === r) continue;
+switch ("object" === (e = typeof l[_]) ? t(l[_]) : e) {
+case "string":
+c[r] = "";
+break;
+
+case "object":
+case "function":
+c[r] = null;
+break;
+
+case "undefined":
+c[r] = void 0;
+}
+}
+}
+var f = "";
+for (r in c) {
+var d;
+d = o.IDENTIFIER_RE.test(r) ? "o." + r + "=" : "o[" + o.escapeForJS(r) + "]=";
+var m = c[r];
+"" === m && (m = '""');
+f += d + m + ";\n";
+}
+return Function("o", f);
+}
+u._destruct = function() {
+var t = this.constructor, e = t.__destruct__;
+if (!e) {
+e = _(this, t);
+s.value(t, "__destruct__", e, !0);
+}
+e(this);
+};
+u._onPreDestroy = null;
+u._destroyImmediate = function() {
+if (this._objFlags & a) cc.errorID(5e3); else {
+this._onPreDestroy && this._onPreDestroy();
+this._destruct();
+this._objFlags |= a;
+}
+};
+0;
+u._deserialize = null;
+cc.isValid = function(i, n) {
+return "object" === ("object" === (e = typeof i) ? t(i) : e) ? !(!i || i._objFlags & (n ? 4 | a : a)) : "undefined" !== ("object" === (e = typeof i) ? t(i) : e);
+};
+0;
+cc.Object = n.exports = c;
+}), {
+"./CCClass": 201,
+"./js": 221
+} ],
+208: [ (function(t, e, i) {
+"use strict";
+var n = t("../platform/js");
+cc.SAXParser = function() {
+if (window.DOMParser) {
+this._isSupportDOMParser = !0;
+this._parser = new DOMParser();
+} else {
+this._isSupportDOMParser = !1;
+this._parser = null;
+}
+};
+cc.SAXParser.prototype = {
+constructor: cc.SAXParser,
+parse: function(t) {
+return this._parseXML(t);
+},
+_parseXML: function(t) {
+var e;
+if (this._isSupportDOMParser) e = this._parser.parseFromString(t, "text/xml"); else {
+(e = new ActiveXObject("Microsoft.XMLDOM")).async = "false";
+e.loadXML(t);
+}
+return e;
+}
+};
+cc.PlistParser = function() {
+cc.SAXParser.call(this);
+};
+n.extend(cc.PlistParser, cc.SAXParser);
+n.mixin(cc.PlistParser.prototype, {
+parse: function(t) {
+var e = this._parseXML(t), i = e.documentElement;
+if ("plist" !== i.tagName) {
+cc.warnID(5100);
+return {};
+}
+for (var n = null, r = 0, s = i.childNodes.length; r < s && 1 !== (n = i.childNodes[r]).nodeType; r++) ;
+e = null;
+return this._parseNode(n);
+},
+_parseNode: function(t) {
+var e = null, i = t.tagName;
+if ("dict" === i) e = this._parseDict(t); else if ("array" === i) e = this._parseArray(t); else if ("string" === i) if (1 === t.childNodes.length) e = t.firstChild.nodeValue; else {
+e = "";
+for (var n = 0; n < t.childNodes.length; n++) e += t.childNodes[n].nodeValue;
+} else "false" === i ? e = !1 : "true" === i ? e = !0 : "real" === i ? e = parseFloat(t.firstChild.nodeValue) : "integer" === i && (e = parseInt(t.firstChild.nodeValue, 10));
+return e;
+},
+_parseArray: function(t) {
+for (var e = [], i = 0, n = t.childNodes.length; i < n; i++) {
+var r = t.childNodes[i];
+1 === r.nodeType && e.push(this._parseNode(r));
+}
+return e;
+},
+_parseDict: function(t) {
+for (var e = {}, i = null, n = 0, r = t.childNodes.length; n < r; n++) {
+var s = t.childNodes[n];
+1 === s.nodeType && ("key" === s.tagName ? i = s.firstChild.nodeValue : e[i] = this._parseNode(s));
+}
+return e;
+}
+});
+cc.saxParser = new cc.SAXParser();
+cc.plistParser = new cc.PlistParser();
+e.exports = {
+saxParser: cc.saxParser,
+plistParser: cc.plistParser
+};
+}), {
+"../platform/js": 221
+} ],
+209: [ (function(i, n, r) {
+"use strict";
+cc.screen = {
+_supportsFullScreen: !1,
+_preOnFullScreenChange: null,
+_preOnFullScreenError: null,
+_preOnTouch: null,
+_touchEvent: "",
+_fn: null,
+_fnMap: [ [ "requestFullscreen", "exitFullscreen", "fullscreenchange", "fullscreenEnabled", "fullscreenElement", "fullscreenerror" ], [ "requestFullScreen", "exitFullScreen", "fullScreenchange", "fullScreenEnabled", "fullScreenElement", "fullscreenerror" ], [ "webkitRequestFullScreen", "webkitCancelFullScreen", "webkitfullscreenchange", "webkitIsFullScreen", "webkitCurrentFullScreenElement", "webkitfullscreenerror" ], [ "mozRequestFullScreen", "mozCancelFullScreen", "mozfullscreenchange", "mozFullScreen", "mozFullScreenElement", "mozfullscreenerror" ], [ "msRequestFullscreen", "msExitFullscreen", "MSFullscreenChange", "msFullscreenEnabled", "msFullscreenElement", "msfullscreenerror" ] ],
+init: function() {
+this._fn = {};
+var i, n, r, s, o = this._fnMap;
+for (i = 0, n = o.length; i < n; i++) if ((r = o[i]) && "undefined" !== ("object" === (e = typeof document[r[1]]) ? t(document[r[1]]) : e)) {
+for (i = 0, s = r.length; i < s; i++) this._fn[o[0][i]] = r[i];
+break;
+}
+this._supportsFullScreen = void 0 !== this._fn.requestFullscreen;
+this._touchEvent = "ontouchend" in window ? "touchend" : "mousedown";
+},
+fullScreen: function() {
+return !!this._supportsFullScreen && !!(document[this._fn.fullscreenElement] || document[this._fn.webkitFullscreenElement] || document[this._fn.mozFullScreenElement]);
+},
+requestFullScreen: function(t, e) {
+if (t && "video" === t.tagName.toLowerCase()) {
+if (cc.sys.os === cc.sys.OS_IOS && cc.sys.isBrowser && t.readyState > 0) {
+t.webkitEnterFullscreen && t.webkitEnterFullscreen();
+return;
+}
+t.setAttribute("x5-video-player-fullscreen", "true");
+}
+if (this._supportsFullScreen) {
+t = t || document.documentElement;
+if (e) {
+var i = this._fn.fullscreenchange;
+this._preOnFullScreenChange && document.removeEventListener(i, this._preOnFullScreenChange);
+this._preOnFullScreenChange = e;
+document.addEventListener(i, e, !1);
+}
+t[this._fn.requestFullscreen]();
+}
+},
+exitFullScreen: function(t) {
+if (t && "video" === t.tagName.toLowerCase()) {
+if (cc.sys.os === cc.sys.OS_IOS && cc.sys.isBrowser) {
+t.webkitExitFullscreen && t.webkitExitFullscreen();
+return;
+}
+t.setAttribute("x5-video-player-fullscreen", "false");
+}
+return !this._supportsFullScreen || document[this._fn.exitFullscreen]();
+},
+autoFullScreen: function(t, e) {
+t = t || document.body;
+this._ensureFullScreen(t, e);
+this.requestFullScreen(t, e);
+},
+disableAutoFullScreen: function(t) {
+var e = cc.game.canvas || t, i = this._touchEvent;
+if (this._preOnTouch) {
+e.removeEventListener(i, this._preOnTouch);
+this._preOnTouch = null;
+}
+},
+_ensureFullScreen: function(t, e) {
+var i = this, n = cc.game.canvas || t, r = this._fn.fullscreenerror, s = this._touchEvent;
+function o() {
+i._preOnFullScreenError = null;
+i._preOnTouch && n.removeEventListener(s, i._preOnTouch);
+i._preOnTouch = function() {
+i._preOnTouch = null;
+i.requestFullScreen(t, e);
+};
+n.addEventListener(s, i._preOnTouch, {
+once: !0
+});
+}
+this._preOnFullScreenError && t.removeEventListener(r, this._preOnFullScreenError);
+this._preOnFullScreenError = o;
+t.addEventListener(r, o, {
+once: !0
+});
+}
+};
+cc.screen.init();
+}), {} ],
+210: [ (function(i, n, r) {
+"use strict";
+var s = void 0, o = "baidugame" === (s = window._CCSettings ? _CCSettings.platform : void 0) || "baidugame-subcontext" === s, a = "qgame" === s, c = "quickgame" === s, l = "huawei" === s, h = "jkw-game" === s, u = "undefined" === ("object" === (e = typeof window) ? t(window) : e) ? global : window;
+var _ = cc && cc.sys ? cc.sys : (function() {
+cc.sys = {};
+var i = cc.sys;
+i.LANGUAGE_ENGLISH = "en";
+i.LANGUAGE_CHINESE = "zh";
+i.LANGUAGE_FRENCH = "fr";
+i.LANGUAGE_ITALIAN = "it";
+i.LANGUAGE_GERMAN = "de";
+i.LANGUAGE_SPANISH = "es";
+i.LANGUAGE_DUTCH = "du";
+i.LANGUAGE_RUSSIAN = "ru";
+i.LANGUAGE_KOREAN = "ko";
+i.LANGUAGE_JAPANESE = "ja";
+i.LANGUAGE_HUNGARIAN = "hu";
+i.LANGUAGE_PORTUGUESE = "pt";
+i.LANGUAGE_ARABIC = "ar";
+i.LANGUAGE_NORWEGIAN = "no";
+i.LANGUAGE_POLISH = "pl";
+i.LANGUAGE_TURKISH = "tr";
+i.LANGUAGE_UKRAINIAN = "uk";
+i.LANGUAGE_ROMANIAN = "ro";
+i.LANGUAGE_BULGARIAN = "bg";
+i.LANGUAGE_UNKNOWN = "unknown";
+i.OS_IOS = "iOS";
+i.OS_ANDROID = "Android";
+i.OS_WINDOWS = "Windows";
+i.OS_MARMALADE = "Marmalade";
+i.OS_LINUX = "Linux";
+i.OS_BADA = "Bada";
+i.OS_BLACKBERRY = "Blackberry";
+i.OS_OSX = "OS X";
+i.OS_WP8 = "WP8";
+i.OS_WINRT = "WINRT";
+i.OS_UNKNOWN = "Unknown";
+i.UNKNOWN = -1;
+i.WIN32 = 0;
+i.LINUX = 1;
+i.MACOS = 2;
+i.ANDROID = 3;
+i.IPHONE = 4;
+i.IPAD = 5;
+i.BLACKBERRY = 6;
+i.NACL = 7;
+i.EMSCRIPTEN = 8;
+i.TIZEN = 9;
+i.WINRT = 10;
+i.WP8 = 11;
+i.MOBILE_BROWSER = 100;
+i.DESKTOP_BROWSER = 101;
+i.EDITOR_PAGE = 102;
+i.EDITOR_CORE = 103;
+i.WECHAT_GAME = 104;
+i.QQ_PLAY = 105;
+i.FB_PLAYABLE_ADS = 106;
+i.BAIDU_GAME = 107;
+i.VIVO_GAME = 108;
+i.OPPO_GAME = 109;
+i.HUAWEI_GAME = 110;
+i.XIAOMI_GAME = 111;
+i.JKW_GAME = 112;
+i.ALIPAY_GAME = 113;
+i.BROWSER_TYPE_WECHAT = "wechat";
+i.BROWSER_TYPE_WECHAT_GAME = "wechatgame";
+i.BROWSER_TYPE_WECHAT_GAME_SUB = "wechatgamesub";
+i.BROWSER_TYPE_BAIDU_GAME = "baidugame";
+i.BROWSER_TYPE_BAIDU_GAME_SUB = "baidugamesub";
+i.BROWSER_TYPE_XIAOMI_GAME = "xiaomigame";
+i.BROWSER_TYPE_ALIPAY_GAME = "alipaygame";
+i.BROWSER_TYPE_QQ_PLAY = "qqplay";
+i.BROWSER_TYPE_ANDROID = "androidbrowser";
+i.BROWSER_TYPE_IE = "ie";
+i.BROWSER_TYPE_EDGE = "edge";
+i.BROWSER_TYPE_QQ = "qqbrowser";
+i.BROWSER_TYPE_MOBILE_QQ = "mqqbrowser";
+i.BROWSER_TYPE_UC = "ucbrowser";
+i.BROWSER_TYPE_UCBS = "ucbs";
+i.BROWSER_TYPE_360 = "360browser";
+i.BROWSER_TYPE_BAIDU_APP = "baiduboxapp";
+i.BROWSER_TYPE_BAIDU = "baidubrowser";
+i.BROWSER_TYPE_MAXTHON = "maxthon";
+i.BROWSER_TYPE_OPERA = "opera";
+i.BROWSER_TYPE_OUPENG = "oupeng";
+i.BROWSER_TYPE_MIUI = "miuibrowser";
+i.BROWSER_TYPE_FIREFOX = "firefox";
+i.BROWSER_TYPE_SAFARI = "safari";
+i.BROWSER_TYPE_CHROME = "chrome";
+i.BROWSER_TYPE_LIEBAO = "liebao";
+i.BROWSER_TYPE_QZONE = "qzone";
+i.BROWSER_TYPE_SOUGOU = "sogou";
+i.BROWSER_TYPE_UNKNOWN = "unknown";
+i.isNative = !0;
+i.isBrowser = "object" === ("object" == (e = typeof window) ? t(window) : e) && "object" === ("object" == (e = typeof document) ? t(document) : e) && !1;
+i.glExtension = function(t) {
+return !(o && "OES_texture_float" === t || !cc.renderer.device.ext(t));
+};
+i.getMaxJointMatrixSize = function() {
+if (!i._maxJointMatrixSize) {
+var t = cc.game._renderContext, e = Math.floor(t.getParameter(t.MAX_VERTEX_UNIFORM_VECTORS) / 4) - 10;
+i._maxJointMatrixSize = e < 50 ? 0 : 50;
+}
+return i._maxJointMatrixSize;
+};
+if (u.__platform && u.__platform.getSystemInfo) {
+var n = u.__platform.getSystemInfo();
+i.isNative = n.isNative;
+i.isBrowser = n.isBrowser;
+i.platform = n.platform;
+i.browserType = n.browserType;
+i.isMobile = n.isMobile;
+i.language = n.language;
+i.languageCode = n.language.toLowerCase();
+i.os = n.os;
+i.osVersion = n.osVersion;
+i.osMainVersion = n.osMainVersion;
+i.browserVersion = n.browserVersion;
+i.windowPixelResolution = n.windowPixelResolution;
+i.localStorage = n.localStorage;
+i.capabilities = n.capabilities;
+i.__audioSupport = n.audioSupport;
+u.__platform = void 0;
+} else {
+var r, s = void 0;
+s = a ? i.VIVO_GAME : c ? i.OPPO_GAME : l ? i.HUAWEI_GAME : h ? i.JKW_GAME : __getPlatform();
+i.platform = s;
+i.isMobile = s === i.ANDROID || s === i.IPAD || s === i.IPHONE || s === i.WP8 || s === i.TIZEN || s === i.BLACKBERRY || s === i.XIAOMI_GAME || a || c || l || h;
+i.os = __getOS();
+i.language = __getCurrentLanguage();
+r = __getCurrentLanguageCode();
+i.languageCode = r ? r.toLowerCase() : void 0;
+i.osVersion = __getOSVersion();
+i.osMainVersion = parseInt(i.osVersion);
+i.browserType = null;
+i.browserVersion = null;
+var _, f = window.innerWidth, d = window.innerHeight, m = window.devicePixelRatio || 1;
+i.windowPixelResolution = {
+width: m * f,
+height: m * d
+};
+i.localStorage = window.localStorage;
+_ = i.capabilities = {
+canvas: !1,
+opengl: !0,
+webp: !0
+};
+if (i.isMobile) {
+_.accelerometer = !0;
+_.touches = !0;
+} else {
+_.keyboard = !0;
+_.mouse = !0;
+_.touches = !1;
+}
+i.__audioSupport = {
+ONLY_ONE: !1,
+WEB_AUDIO: !1,
+DELAY_CREATE_CTX: !1,
+format: [ ".mp3" ]
+};
+}
+i.NetworkType = {
+NONE: 0,
+LAN: 1,
+WWAN: 2
+};
+i.getNetworkType = function() {
+return i.NetworkType.LAN;
+};
+i.getBatteryLevel = function() {
+return 1;
+};
+i.garbageCollect = function() {};
+i.restartVM = function() {};
+i.getSafeAreaRect = function() {
+var t = cc.view.getVisibleSize();
+return cc.rect(0, 0, t.width, t.height);
+};
+i.isObjectValid = function(t) {
+return !!t;
+};
+i.dump = function() {
+var t = "";
+t += "isMobile : " + this.isMobile + "\r\n";
+t += "language : " + this.language + "\r\n";
+t += "browserType : " + this.browserType + "\r\n";
+t += "browserVersion : " + this.browserVersion + "\r\n";
+t += "capabilities : " + JSON.stringify(this.capabilities) + "\r\n";
+t += "os : " + this.os + "\r\n";
+t += "osVersion : " + this.osVersion + "\r\n";
+t += "platform : " + this.platform + "\r\n";
+t += "Using " + (cc.game.renderType === cc.game.RENDER_TYPE_WEBGL ? "WEBGL" : "CANVAS") + " renderer.\r\n";
+cc.log(t);
+};
+i.openURL = function(t) {
+jsb.openURL(t);
+};
+i.now = function() {
+return Date.now ? Date.now() : +new Date();
+};
+return i;
+})();
+n.exports = _;
+}), {} ],
+211: [ (function(i, n, r) {
+"use strict";
+var s = i("../event/event-target"), o = i("../platform/js"), a = i("../renderer");
+i("../platform/CCClass");
+var c = cc.sys.platform === cc.sys.XIAOMI_GAME, l = cc.sys.platform === cc.sys.BAIDU_GAME, h = cc.sys.platform === cc.sys.ALIPAY_GAME, u = {
+init: function() {
+l || c || h || (this.html = document.getElementsByTagName("html")[0]);
+},
+availWidth: function(t) {
+return t && t !== this.html ? t.clientWidth : window.innerWidth;
+},
+availHeight: function(t) {
+return t && t !== this.html ? t.clientHeight : window.innerHeight;
+},
+meta: {
+width: "device-width"
+},
+adaptationType: cc.sys.browserType
+};
+cc.sys.os === cc.sys.OS_IOS && (u.adaptationType = cc.sys.BROWSER_TYPE_SAFARI);
+l && (cc.sys.browserType === cc.sys.BROWSER_TYPE_BAIDU_GAME_SUB ? u.adaptationType = cc.sys.BROWSER_TYPE_BAIDU_GAME_SUB : u.adaptationType = cc.sys.BROWSER_TYPE_BAIDU_GAME);
+c && (u.adaptationType = cc.sys.BROWSER_TYPE_XIAOMI_GAME);
+h && (u.adaptationType = cc.sys.BROWSER_TYPE_ALIPAY_GAME);
+0;
+0;
+switch (u.adaptationType) {
+case cc.sys.BROWSER_TYPE_SAFARI:
+u.meta["minimal-ui"] = "true";
+
+case cc.sys.BROWSER_TYPE_SOUGOU:
+case cc.sys.BROWSER_TYPE_UC:
+u.availWidth = function(t) {
+return t.clientWidth;
+};
+u.availHeight = function(t) {
+return cc.sys.isMobile && cc.sys.isBrowser ? window.innerHeight : t.clientHeight;
+};
+break;
+
+case cc.sys.BROWSER_TYPE_WECHAT_GAME:
+u.availWidth = function() {
+return window.innerWidth;
+};
+u.availHeight = function() {
+return window.innerHeight;
+};
+break;
+
+case cc.sys.BROWSER_TYPE_WECHAT_GAME_SUB:
+var _ = window.sharedCanvas || wx.getSharedCanvas();
+u.availWidth = function() {
+return _.width;
+};
+u.availHeight = function() {
+return _.height;
+};
+}
+var f = null, d = function() {
+s.call(this);
+var t = this, e = cc.ContainerStrategy, i = cc.ContentStrategy;
+u.init(this);
+t._frameSize = cc.size(0, 0);
+t._designResolutionSize = cc.size(0, 0);
+t._originalDesignResolutionSize = cc.size(0, 0);
+t._scaleX = 1;
+t._scaleY = 1;
+t._viewportRect = cc.rect(0, 0, 0, 0);
+t._visibleRect = cc.rect(0, 0, 0, 0);
+t._autoFullScreen = !1;
+t._devicePixelRatio = 1;
+t._maxPixelRatio = 2;
+t._retinaEnabled = !1;
+t._resizeCallback = null;
+t._resizing = !1;
+t._resizeWithBrowserSize = !1;
+t._orientationChanging = !0;
+t._isRotated = !1;
+t._orientation = cc.macro.ORIENTATION_AUTO;
+t._isAdjustViewport = !0;
+t._antiAliasEnabled = !1;
+t._resolutionPolicy = null;
+t._rpExactFit = new cc.ResolutionPolicy(e.EQUAL_TO_FRAME, i.EXACT_FIT);
+t._rpShowAll = new cc.ResolutionPolicy(e.EQUAL_TO_FRAME, i.SHOW_ALL);
+t._rpNoBorder = new cc.ResolutionPolicy(e.EQUAL_TO_FRAME, i.NO_BORDER);
+t._rpFixedHeight = new cc.ResolutionPolicy(e.EQUAL_TO_FRAME, i.FIXED_HEIGHT);
+t._rpFixedWidth = new cc.ResolutionPolicy(e.EQUAL_TO_FRAME, i.FIXED_WIDTH);
+cc.game.once(cc.game.EVENT_ENGINE_INITED, this.init, this);
+};
+cc.js.extend(d, s);
+cc.js.mixin(d.prototype, {
+init: function() {
+this._initFrameSize();
+this.enableAntiAlias(!0);
+var t = cc.game.canvas.width, e = cc.game.canvas.height;
+this._designResolutionSize.width = t;
+this._designResolutionSize.height = e;
+this._originalDesignResolutionSize.width = t;
+this._originalDesignResolutionSize.height = e;
+this._viewportRect.width = t;
+this._viewportRect.height = e;
+this._visibleRect.width = t;
+this._visibleRect.height = e;
+cc.winSize.width = this._visibleRect.width;
+cc.winSize.height = this._visibleRect.height;
+cc.visibleRect && cc.visibleRect.init(this._visibleRect);
+},
+_resizeEvent: function(t) {
+var e, i = (e = this.setDesignResolutionSize ? this : cc.view)._frameSize.width, n = e._frameSize.height, r = e._isRotated;
+if (cc.sys.isMobile) {
+var s = cc.game.container.style, o = s.margin;
+s.margin = "0";
+s.display = "none";
+e._initFrameSize();
+s.margin = o;
+s.display = "block";
+} else e._initFrameSize();
+if (!0 === t || e._isRotated !== r || e._frameSize.width !== i || e._frameSize.height !== n) {
+var a = e._originalDesignResolutionSize.width, c = e._originalDesignResolutionSize.height;
+e._resizing = !0;
+a > 0 && e.setDesignResolutionSize(a, c, e._resolutionPolicy);
+e._resizing = !1;
+e.emit("canvas-resize");
+e._resizeCallback && e._resizeCallback.call();
+}
+},
+_orientationChange: function() {
+cc.view._orientationChanging = !0;
+cc.view._resizeEvent();
+},
+resizeWithBrowserSize: function(t) {
+if (t) {
+if (!this._resizeWithBrowserSize) {
+this._resizeWithBrowserSize = !0;
+window.addEventListener("resize", this._resizeEvent);
+window.addEventListener("orientationchange", this._orientationChange);
+}
+} else if (this._resizeWithBrowserSize) {
+this._resizeWithBrowserSize = !1;
+window.removeEventListener("resize", this._resizeEvent);
+window.removeEventListener("orientationchange", this._orientationChange);
+}
+},
+setResizeCallback: function(i) {
+0;
+"function" !== ("object" === (e = typeof i) ? t(i) : e) && null != i || (this._resizeCallback = i);
+},
+setOrientation: function(t) {
+if ((t &= cc.macro.ORIENTATION_AUTO) && this._orientation !== t) {
+this._orientation = t;
+var e = this._originalDesignResolutionSize.width, i = this._originalDesignResolutionSize.height;
+this.setDesignResolutionSize(e, i, this._resolutionPolicy);
+}
+},
+_initFrameSize: function() {
+var t = this._frameSize, e = u.availWidth(cc.game.frame), i = u.availHeight(cc.game.frame), n = e >= i;
+if (!cc.sys.isMobile || n && this._orientation & cc.macro.ORIENTATION_LANDSCAPE || !n && this._orientation & cc.macro.ORIENTATION_PORTRAIT) {
+t.width = e;
+t.height = i;
+cc.game.container.style["-webkit-transform"] = "rotate(0deg)";
+cc.game.container.style.transform = "rotate(0deg)";
+this._isRotated = !1;
+} else {
+t.width = i;
+t.height = e;
+cc.game.container.style["-webkit-transform"] = "rotate(90deg)";
+cc.game.container.style.transform = "rotate(90deg)";
+cc.game.container.style["-webkit-transform-origin"] = "0px 0px 0px";
+cc.game.container.style.transformOrigin = "0px 0px 0px";
+this._isRotated = !0;
+}
+this._orientationChanging && setTimeout((function() {
+cc.view._orientationChanging = !1;
+}), 1e3);
+},
+_adjustSizeKeepCanvasSize: function() {
+var t = this._originalDesignResolutionSize.width, e = this._originalDesignResolutionSize.height;
+t > 0 && this.setDesignResolutionSize(t, e, this._resolutionPolicy);
+},
+_setViewportMeta: function(t, e) {
+var i = document.getElementById("cocosMetaElement");
+i && e && document.head.removeChild(i);
+var n, r, s, o = document.getElementsByName("viewport"), a = o ? o[0] : null;
+n = a ? a.content : "";
+(i = i || document.createElement("meta")).id = "cocosMetaElement";
+i.name = "viewport";
+i.content = "";
+for (r in t) if (-1 == n.indexOf(r)) n += "," + r + "=" + t[r]; else if (e) {
+s = new RegExp(r + "s*=s*[^,]+");
+n.replace(s, r + "=" + t[r]);
+}
+/^,/.test(n) && (n = n.substr(1));
+i.content = n;
+a && (a.content = n);
+document.head.appendChild(i);
+},
+_adjustViewportMeta: function() {
+if ((this._isAdjustViewport, 0) && !l && !c && !h) {
+this._setViewportMeta(u.meta, !1);
+this._isAdjustViewport = !1;
+}
+},
+adjustViewportMeta: function(t) {
+this._isAdjustViewport = t;
+},
+enableRetina: function(t) {
+this._retinaEnabled = !!t;
+},
+isRetinaEnabled: function() {
+return this._retinaEnabled;
+},
+enableAntiAlias: function(t) {
+if (this._antiAliasEnabled !== t) {
+this._antiAliasEnabled = t;
+if (cc.game.renderType === cc.game.RENDER_TYPE_WEBGL) {
+var e = cc.loader._cache;
+for (var i in e) {
+var n = e[i], r = n && n.content instanceof cc.Texture2D ? n.content : null;
+if (r) {
+var s = cc.Texture2D.Filter;
+t ? r.setFilters(s.LINEAR, s.LINEAR) : r.setFilters(s.NEAREST, s.NEAREST);
+}
+}
+} else if (cc.game.renderType === cc.game.RENDER_TYPE_CANVAS) {
+var o = cc.game.canvas.getContext("2d");
+o.imageSmoothingEnabled = t;
+o.mozImageSmoothingEnabled = t;
+}
+}
+},
+isAntiAliasEnabled: function() {
+return this._antiAliasEnabled;
+},
+enableAutoFullScreen: function(t) {
+if (t && t !== this._autoFullScreen && cc.sys.isMobile && cc.sys.browserType !== cc.sys.BROWSER_TYPE_WECHAT) {
+this._autoFullScreen = !0;
+cc.screen.autoFullScreen(cc.game.frame);
+} else {
+this._autoFullScreen = !1;
+cc.screen.disableAutoFullScreen(cc.game.frame);
+}
+},
+isAutoFullScreenEnabled: function() {
+return this._autoFullScreen;
+},
+setCanvasSize: function(t, e) {
+var i = cc.game.canvas, n = cc.game.container;
+i.width = t * this._devicePixelRatio;
+i.height = e * this._devicePixelRatio;
+i.style.width = t + "px";
+i.style.height = e + "px";
+n.style.width = t + "px";
+n.style.height = e + "px";
+this._resizeEvent();
+},
+getCanvasSize: function() {
+return cc.size(cc.game.canvas.width, cc.game.canvas.height);
+},
+getFrameSize: function() {
+return cc.size(this._frameSize.width, this._frameSize.height);
+},
+setFrameSize: function(t, e) {
+this._frameSize.width = t;
+this._frameSize.height = e;
+cc.game.frame.style.width = t + "px";
+cc.game.frame.style.height = e + "px";
+this._resizeEvent(!0);
+},
+getVisibleSize: function() {
+return cc.size(this._visibleRect.width, this._visibleRect.height);
+},
+getVisibleSizeInPixel: function() {
+return cc.size(this._visibleRect.width * this._scaleX, this._visibleRect.height * this._scaleY);
+},
+getVisibleOrigin: function() {
+return cc.v2(this._visibleRect.x, this._visibleRect.y);
+},
+getVisibleOriginInPixel: function() {
+return cc.v2(this._visibleRect.x * this._scaleX, this._visibleRect.y * this._scaleY);
+},
+getResolutionPolicy: function() {
+return this._resolutionPolicy;
+},
+setResolutionPolicy: function(t) {
+var e = this;
+if (t instanceof cc.ResolutionPolicy) e._resolutionPolicy = t; else {
+var i = cc.ResolutionPolicy;
+t === i.EXACT_FIT && (e._resolutionPolicy = e._rpExactFit);
+t === i.SHOW_ALL && (e._resolutionPolicy = e._rpShowAll);
+t === i.NO_BORDER && (e._resolutionPolicy = e._rpNoBorder);
+t === i.FIXED_HEIGHT && (e._resolutionPolicy = e._rpFixedHeight);
+t === i.FIXED_WIDTH && (e._resolutionPolicy = e._rpFixedWidth);
+}
+},
+setDesignResolutionSize: function(t, e, i) {
+if (t > 0 || e > 0) {
+this.setResolutionPolicy(i);
+var n = this._resolutionPolicy;
+n && n.preApply(this);
+cc.sys.isMobile && this._adjustViewportMeta();
+this._orientationChanging = !0;
+this._resizing || this._initFrameSize();
+if (n) {
+this._originalDesignResolutionSize.width = this._designResolutionSize.width = t;
+this._originalDesignResolutionSize.height = this._designResolutionSize.height = e;
+var r = n.apply(this, this._designResolutionSize);
+if (r.scale && 2 === r.scale.length) {
+this._scaleX = r.scale[0];
+this._scaleY = r.scale[1];
+}
+if (r.viewport) {
+var s = this._viewportRect, o = this._visibleRect, c = r.viewport;
+s.x = c.x;
+s.y = c.y;
+s.width = c.width;
+s.height = c.height;
+o.x = 0;
+o.y = 0;
+o.width = c.width / this._scaleX;
+o.height = c.height / this._scaleY;
+}
+n.postApply(this);
+cc.winSize.width = this._visibleRect.width;
+cc.winSize.height = this._visibleRect.height;
+cc.visibleRect && cc.visibleRect.init(this._visibleRect);
+a.updateCameraViewport();
+this.emit("design-resolution-changed");
+} else cc.logID(2201);
+} else cc.logID(2200);
+},
+getDesignResolutionSize: function() {
+return cc.size(this._designResolutionSize.width, this._designResolutionSize.height);
+},
+setRealPixelResolution: function(t, e, i) {
+0;
+this.setDesignResolutionSize(t, e, i);
+},
+setViewportInPoints: function(t, e, i, n) {
+var r = this._scaleX, s = this._scaleY;
+cc.game._renderContext.viewport(t * r + this._viewportRect.x, e * s + this._viewportRect.y, i * r, n * s);
+},
+setScissorInPoints: function(t, e, i, n) {
+var r = this._scaleX, s = this._scaleY, o = Math.ceil(t * r + this._viewportRect.x), a = Math.ceil(e * s + this._viewportRect.y), c = Math.ceil(i * r), l = Math.ceil(n * s), h = cc.game._renderContext;
+if (!f) {
+var u = h.getParameter(h.SCISSOR_BOX);
+f = cc.rect(u[0], u[1], u[2], u[3]);
+}
+if (f.x !== o || f.y !== a || f.width !== c || f.height !== l) {
+f.x = o;
+f.y = a;
+f.width = c;
+f.height = l;
+h.scissor(o, a, c, l);
+}
+},
+isScissorEnabled: function() {
+return cc.game._renderContext.isEnabled(gl.SCISSOR_TEST);
+},
+getScissorRect: function() {
+if (!f) {
+var t = gl.getParameter(gl.SCISSOR_BOX);
+f = cc.rect(t[0], t[1], t[2], t[3]);
+}
+var e = 1 / this._scaleX, i = 1 / this._scaleY;
+return cc.rect((f.x - this._viewportRect.x) * e, (f.y - this._viewportRect.y) * i, f.width * e, f.height * i);
+},
+getViewportRect: function() {
+return this._viewportRect;
+},
+getScaleX: function() {
+return this._scaleX;
+},
+getScaleY: function() {
+return this._scaleY;
+},
+getDevicePixelRatio: function() {
+return this._devicePixelRatio;
+},
+convertToLocationInView: function(t, e, i, n) {
+var r = n || cc.v2(), s = this._devicePixelRatio * (t - i.left), o = this._devicePixelRatio * (i.top + i.height - e);
+if (this._isRotated) {
+r.x = cc.game.canvas.width - o;
+r.y = s;
+} else {
+r.x = s;
+r.y = o;
+}
+return r;
+},
+_convertMouseToLocationInView: function(t, e) {
+var i = this._viewportRect;
+t.x = (this._devicePixelRatio * (t.x - e.left) - i.x) / this._scaleX;
+t.y = (this._devicePixelRatio * (e.top + e.height - t.y) - i.y) / this._scaleY;
+},
+_convertPointWithScale: function(t) {
+var e = this._viewportRect;
+t.x = (t.x - e.x) / this._scaleX;
+t.y = (t.y - e.y) / this._scaleY;
+},
+_convertTouchesWithScale: function(t) {
+for (var e, i, n, r = this._viewportRect, s = this._scaleX, o = this._scaleY, a = this._isRotated, c = 0; c < t.length; c++) {
+n = (e = t[c])._prevPoint;
+i = e._point;
+if (cc.sys.isNative && a) {
+var l = (r.width - (i.x - r.x)) / s;
+i.x = (i.y - r.y) / o;
+i.y = l;
+var h = (r.width - (n.x - r.x)) / s;
+n.x = (n.y - r.y) / o;
+n.y = h;
+} else {
+i.x = (i.x - r.x) / s;
+i.y = (i.y - r.y) / o;
+n.x = (n.x - r.x) / s;
+n.y = (n.y - r.y) / o;
+}
+}
+}
+});
+cc.ContainerStrategy = cc.Class({
+name: "ContainerStrategy",
+preApply: function(t) {},
+apply: function(t, e) {},
+postApply: function(t) {},
+_setupContainer: function(t, e, i) {
+var n = cc.game.canvas, r = cc.game.container;
+if (!l && !c && !h) {
+if (cc.sys.os === cc.sys.OS_ANDROID) {
+document.body.style.width = (t._isRotated ? i : e) + "px";
+document.body.style.height = (t._isRotated ? e : i) + "px";
+}
+r.style.width = n.style.width = e + "px";
+r.style.height = n.style.height = i + "px";
+}
+var s = t._devicePixelRatio = 1;
+t.isRetinaEnabled() && (s = t._devicePixelRatio = Math.min(t._maxPixelRatio, window.devicePixelRatio || 1));
+n.width = e * s;
+n.height = i * s;
+},
+_fixContainer: function() {
+document.body.insertBefore(cc.game.container, document.body.firstChild);
+var t = document.body.style;
+t.width = window.innerWidth + "px";
+t.height = window.innerHeight + "px";
+t.overflow = "hidden";
+var e = cc.game.container.style;
+e.position = "fixed";
+e.left = e.top = "0px";
+document.body.scrollTop = 0;
+}
+});
+cc.ContentStrategy = cc.Class({
+name: "ContentStrategy",
+ctor: function() {
+this._result = {
+scale: [ 1, 1 ],
+viewport: null
+};
+},
+_buildResult: function(t, e, i, n, r, s) {
+Math.abs(t - i) < 2 && (i = t);
+Math.abs(e - n) < 2 && (n = e);
+var o = cc.rect((t - i) / 2, (e - n) / 2, i, n);
+cc.game.renderType, cc.game.RENDER_TYPE_CANVAS;
+this._result.scale = [ r, s ];
+this._result.viewport = o;
+return this._result;
+},
+preApply: function(t) {},
+apply: function(t, e) {
+return {
+scale: [ 1, 1 ]
+};
+},
+postApply: function(t) {}
+});
+(function() {
+var t = cc.Class({
+name: "EqualToFrame",
+extends: cc.ContainerStrategy,
+apply: function(t) {
+var e = t._frameSize.height, i = cc.game.container.style;
+this._setupContainer(t, t._frameSize.width, t._frameSize.height);
+t._isRotated ? i.margin = "0 0 0 " + e + "px" : i.margin = "0px";
+i.padding = "0px";
+}
+}), e = cc.Class({
+name: "ProportionalToFrame",
+extends: cc.ContainerStrategy,
+apply: function(t, e) {
+var i, n, r = t._frameSize.width, s = t._frameSize.height, o = cc.game.container.style, a = e.width, c = e.height, l = r / a, h = s / c;
+l < h ? (i = r, n = c * l) : (i = a * h, n = s);
+var u = Math.round((r - i) / 2), _ = Math.round((s - n) / 2);
+i = r - 2 * u;
+n = s - 2 * _;
+this._setupContainer(t, i, n);
+t._isRotated ? o.margin = "0 0 0 " + s + "px" : o.margin = "0px";
+o.paddingLeft = u + "px";
+o.paddingRight = u + "px";
+o.paddingTop = _ + "px";
+o.paddingBottom = _ + "px";
+}
+}), i = (cc.Class({
+name: "EqualToWindow",
+extends: t,
+preApply: function(t) {
+this._super(t);
+cc.game.frame = document.documentElement;
+},
+apply: function(t) {
+this._super(t);
+this._fixContainer();
+}
+}), cc.Class({
+name: "ProportionalToWindow",
+extends: e,
+preApply: function(t) {
+this._super(t);
+cc.game.frame = document.documentElement;
+},
+apply: function(t, e) {
+this._super(t, e);
+this._fixContainer();
+}
+}), cc.Class({
+name: "OriginalContainer",
+extends: cc.ContainerStrategy,
+apply: function(t) {
+this._setupContainer(t, cc.game.canvas.width, cc.game.canvas.height);
+}
+}));
+cc.ContainerStrategy.EQUAL_TO_FRAME = new t();
+cc.ContainerStrategy.PROPORTION_TO_FRAME = new e();
+cc.ContainerStrategy.ORIGINAL_CONTAINER = new i();
+var n = cc.Class({
+name: "ExactFit",
+extends: cc.ContentStrategy,
+apply: function(t, e) {
+var i = cc.game.canvas.width, n = cc.game.canvas.height, r = i / e.width, s = n / e.height;
+return this._buildResult(i, n, i, n, r, s);
+}
+}), r = cc.Class({
+name: "ShowAll",
+extends: cc.ContentStrategy,
+apply: function(t, e) {
+var i, n, r = cc.game.canvas.width, s = cc.game.canvas.height, o = e.width, a = e.height, c = r / o, l = s / a, h = 0;
+c < l ? (i = r, n = a * (h = c)) : (i = o * (h = l), n = s);
+return this._buildResult(r, s, i, n, h, h);
+}
+}), s = cc.Class({
+name: "NoBorder",
+extends: cc.ContentStrategy,
+apply: function(t, e) {
+var i, n, r, s = cc.game.canvas.width, o = cc.game.canvas.height, a = e.width, c = e.height, l = s / a, h = o / c;
+l < h ? (n = a * (i = h), r = o) : (n = s, r = c * (i = l));
+return this._buildResult(s, o, n, r, i, i);
+}
+}), o = cc.Class({
+name: "FixedHeight",
+extends: cc.ContentStrategy,
+apply: function(t, e) {
+var i = cc.game.canvas.width, n = cc.game.canvas.height, r = n / e.height, s = i, o = n;
+return this._buildResult(i, n, s, o, r, r);
+}
+}), a = cc.Class({
+name: "FixedWidth",
+extends: cc.ContentStrategy,
+apply: function(t, e) {
+var i = cc.game.canvas.width, n = cc.game.canvas.height, r = i / e.width, s = i, o = n;
+return this._buildResult(i, n, s, o, r, r);
+}
+});
+cc.ContentStrategy.EXACT_FIT = new n();
+cc.ContentStrategy.SHOW_ALL = new r();
+cc.ContentStrategy.NO_BORDER = new s();
+cc.ContentStrategy.FIXED_HEIGHT = new o();
+cc.ContentStrategy.FIXED_WIDTH = new a();
+})();
+cc.ResolutionPolicy = cc.Class({
+name: "cc.ResolutionPolicy",
+ctor: function(t, e) {
+this._containerStrategy = null;
+this._contentStrategy = null;
+this.setContainerStrategy(t);
+this.setContentStrategy(e);
+},
+preApply: function(t) {
+this._containerStrategy.preApply(t);
+this._contentStrategy.preApply(t);
+},
+apply: function(t, e) {
+this._containerStrategy.apply(t, e);
+return this._contentStrategy.apply(t, e);
+},
+postApply: function(t) {
+this._containerStrategy.postApply(t);
+this._contentStrategy.postApply(t);
+},
+setContainerStrategy: function(t) {
+t instanceof cc.ContainerStrategy && (this._containerStrategy = t);
+},
+setContentStrategy: function(t) {
+t instanceof cc.ContentStrategy && (this._contentStrategy = t);
+}
+});
+o.get(cc.ResolutionPolicy.prototype, "canvasSize", (function() {
+return cc.v2(cc.game.canvas.width, cc.game.canvas.height);
+}));
+cc.ResolutionPolicy.EXACT_FIT = 0;
+cc.ResolutionPolicy.NO_BORDER = 1;
+cc.ResolutionPolicy.SHOW_ALL = 2;
+cc.ResolutionPolicy.FIXED_HEIGHT = 3;
+cc.ResolutionPolicy.FIXED_WIDTH = 4;
+cc.ResolutionPolicy.UNKNOWN = 5;
+cc.view = new d();
+cc.winSize = cc.v2();
+n.exports = cc.view;
+}), {
+"../event/event-target": 133,
+"../platform/CCClass": 201,
+"../platform/js": 221,
+"../renderer": 244
+} ],
+212: [ (function(t, e, i) {
+"use strict";
+cc.visibleRect = {
+topLeft: cc.v2(0, 0),
+topRight: cc.v2(0, 0),
+top: cc.v2(0, 0),
+bottomLeft: cc.v2(0, 0),
+bottomRight: cc.v2(0, 0),
+bottom: cc.v2(0, 0),
+center: cc.v2(0, 0),
+left: cc.v2(0, 0),
+right: cc.v2(0, 0),
+width: 0,
+height: 0,
+init: function(t) {
+var e = this.width = t.width, i = this.height = t.height, n = t.x, r = t.y, s = r + i, o = n + e;
+this.topLeft.x = n;
+this.topLeft.y = s;
+this.topRight.x = o;
+this.topRight.y = s;
+this.top.x = n + e / 2;
+this.top.y = s;
+this.bottomLeft.x = n;
+this.bottomLeft.y = r;
+this.bottomRight.x = o;
+this.bottomRight.y = r;
+this.bottom.x = n + e / 2;
+this.bottom.y = r;
+this.center.x = n + e / 2;
+this.center.y = r + i / 2;
+this.left.x = n;
+this.left.y = r + i / 2;
+this.right.x = o;
+this.right.y = r + i / 2;
+}
+};
+}), {} ],
+213: [ (function(i, n, r) {
+"use strict";
+var s = i("./js"), o = (i("./utils").isPlainEmptyObj_DEV, "$_$");
+function a(t, e) {
+var i = e ? Object.create(e) : {};
+s.value(t, "__attrs__", i);
+return i;
+}
+function c(i) {
+if ("function" !== ("object" === (e = typeof i) ? t(i) : e)) {
+return a(i, h(i.constructor));
+}
+for (var n, r = cc.Class.getInheritanceChain(i), s = r.length - 1; s >= 0; s--) {
+var o = r[s];
+o.hasOwnProperty("__attrs__") && o.__attrs__ || a(o, (n = r[s + 1]) && n.__attrs__);
+}
+a(i, (n = r[0]) && n.__attrs__);
+return i.__attrs__;
+}
+function l(t, e, i) {
+var n = h(t), r = e + o, s = {};
+for (var a in n) a.startsWith(r) && (s[a.slice(r.length)] = n[a]);
+return s;
+}
+function h(t) {
+return t.hasOwnProperty("__attrs__") && t.__attrs__ || c(t);
+}
+cc.Integer = "Integer";
+cc.Float = "Float";
+0;
+cc.Boolean = "Boolean";
+cc.String = "String";
+n.exports = {
+attr: l,
+getClassAttrs: h,
+setClassAttr: function(t, e, i, n) {
+h(t)[e + o + i] = n;
+},
+DELIMETER: o,
+getTypeChecker: !1,
+getObjTypeChecker: !1,
+ScriptUuid: {}
+};
+}), {
+"./CCClass": 201,
+"./js": 221,
+"./utils": 225
+} ],
+214: [ (function(i, n, r) {
+"use strict";
+var s = i("./js"), o = s.array.fastRemoveAt;
+function a() {
+this.callbacks = [];
+this.targets = [];
+this.isInvoking = !1;
+this.containCanceled = !1;
+}
+var c = a.prototype;
+c.removeBy = function(t, e) {
+for (var i = this.callbacks, n = this.targets, r = 0; r < t.length; ++r) if (t[r] === e) {
+o(i, r);
+o(n, r);
+--r;
+}
+};
+c.cancel = function(t) {
+this.callbacks[t] = this.targets[t] = null;
+this.containCanceled = !0;
+};
+c.cancelAll = function() {
+for (var t = this.callbacks, e = this.targets, i = 0; i < t.length; i++) t[i] = e[i] = null;
+this.containCanceled = !0;
+};
+c.purgeCanceled = function() {
+this.removeBy(this.callbacks, null);
+this.containCanceled = !1;
+};
+var l = new s.Pool(function(t) {
+t.callbacks.length = 0;
+t.targets.length = 0;
+t.isInvoking = !1;
+t.containCanceled = !1;
+}, 16);
+l.get = function() {
+return this._get() || new a();
+};
+function h() {
+this._callbackTable = s.createMap(!0);
+}
+(c = h.prototype).add = function(t, e, i) {
+var n = this._callbackTable[t];
+n || (n = this._callbackTable[t] = l.get());
+n.callbacks.push(e);
+n.targets.push(i || null);
+};
+c.hasEventListener = function(t, e, i) {
+var n = this._callbackTable[t];
+if (!n) return !1;
+var r = n.callbacks;
+if (!e) {
+if (n.isInvoking) {
+for (var s = 0; s < r.length; s++) if (r[s]) return !0;
+return !1;
+}
+return r.length > 0;
+}
+i = i || null;
+for (var o = n.targets, a = 0; a < r.length; ++a) if (r[a] === e && o[a] === i) return !0;
+return !1;
+};
+c.removeAll = function(i) {
+if ("string" === ("object" === (e = typeof i) ? t(i) : e)) {
+var n = this._callbackTable[i];
+if (n) if (n.isInvoking) n.cancelAll(); else {
+l.put(n);
+delete this._callbackTable[i];
+}
+} else if (i) for (var r in this._callbackTable) {
+var s = this._callbackTable[r];
+if (s.isInvoking) for (var o = s.targets, a = 0; a < o.length; ++a) o[a] === i && s.cancel(a); else s.removeBy(s.targets, i);
+}
+};
+c.remove = function(t, e, i) {
+var n = this._callbackTable[t];
+if (n) {
+i = i || null;
+for (var r = n.callbacks, s = n.targets, a = 0; a < r.length; ++a) if (r[a] === e && s[a] === i) {
+if (n.isInvoking) n.cancel(a); else {
+o(r, a);
+o(s, a);
+}
+break;
+}
+}
+};
+var u = function() {
+h.call(this);
+};
+s.extend(u, h);
+0;
+u.prototype.invoke = function(t, e, i, n, r, s) {
+var o = this._callbackTable[t];
+if (o) {
+var a = !o.isInvoking;
+o.isInvoking = !0;
+for (var c = o.callbacks, l = o.targets, h = 0, u = c.length; h < u; ++h) {
+var _ = c[h];
+if (_) {
+var f = l[h];
+f ? _.call(f, e, i, n, r, s) : _(e, i, n, r, s);
+}
+}
+if (a) {
+o.isInvoking = !1;
+o.containCanceled && o.purgeCanceled();
+}
+}
+};
+u.CallbacksHandler = h;
+n.exports = u;
+}), {
+"./js": 221
+} ],
+215: [ (function(t, e, i) {
+"use strict";
+function n(t, e) {
+for (var i = 0; i < e.length; i++) {
+var r = e[i];
+Array.isArray(r) ? n(t, r) : t.push(r);
+}
+}
+e.exports = {
+flattenCodeArray: function(t) {
+var e = [];
+n(e, t);
+return e.join("");
+}
+};
+}), {} ],
+216: [ (function(i, n, r) {
+"use strict";
+var s = i("./js"), o = i("./attribute"), a = i("./CCClass"), c = i("../utils/misc"), l = function() {
+this.uuidList = [];
+this.uuidObjList = [];
+this.uuidPropList = [];
+this._stillUseUrl = s.createMap(!0);
+};
+l.prototype.reset = function() {
+this.uuidList.length = 0;
+this.uuidObjList.length = 0;
+this.uuidPropList.length = 0;
+s.clear(this._stillUseUrl);
+};
+0;
+l.prototype.push = function(t, e, i, n) {
+n && (this._stillUseUrl[this.uuidList.length] = !0);
+this.uuidList.push(i);
+this.uuidObjList.push(t);
+this.uuidPropList.push(e);
+};
+(l.pool = new s.Pool(function(t) {
+t.reset();
+}, 10)).get = function() {
+return this._get() || new l();
+};
+var h = (function() {
+function i(t, e, i, n, r) {
+this.result = t;
+this.customEnv = n;
+this.deserializedList = [];
+this.deserializedData = null;
+this._classFinder = i;
+0;
+this._idList = [];
+this._idObjList = [];
+this._idPropList = [];
+}
+function n(t) {
+var e, i, n, r = t.deserializedList, s = t._idPropList, o = t._idList, a = t._idObjList;
+t._classFinder && t._classFinder.onDereferenced;
+for (e = 0; e < o.length; e++) {
+i = s[e];
+n = o[e];
+a[e][i] = r[n];
+}
+}
+var r = i.prototype;
+r.deserialize = function(t) {
+if (Array.isArray(t)) {
+var e = t, i = e.length;
+this.deserializedList.length = i;
+for (var r = 0; r < i; r++) if (e[r]) {
+this.deserializedList[r] = this._deserializeObject(e[r], !1);
+}
+this.deserializedData = i > 0 ? this.deserializedList[0] : [];
+} else {
+this.deserializedList.length = 1;
+this.deserializedData = t ? this._deserializeObject(t, !1) : null;
+this.deserializedList[0] = this.deserializedData;
+}
+n(this);
+return this.deserializedData;
+};
+r._deserializeObject = function(i, n, r, o, a) {
+var c, l = null, h = null, _ = i.__type__;
+if (_) {
+if (!(h = this._classFinder(_, i, o, a))) {
+this._classFinder === s._getClassById && cc.deserialize.reportMissingClass(_);
+return null;
+}
+if ((l = new h())._deserialize) {
+l._deserialize(i.content, this);
+return l;
+}
+cc.Class._isCCClass(h) ? u(this, l, i, h, r) : this._deserializeTypedObject(l, i, h);
+} else if (Array.isArray(i)) {
+l = new Array(i.length);
+for (var f = 0; f < i.length; f++) {
+c = i[f];
+"object" === ("object" === (e = typeof c) ? t(c) : e) && c ? this._deserializeObjField(l, c, "" + f, null, n) : l[f] = c;
+}
+} else {
+l = {};
+this._deserializePrimitiveObject(l, i);
+}
+return l;
+};
+r._deserializeObjField = function(t, e, i, n, r) {
+var s = e.__id__;
+if (void 0 === s) {
+var o = e.__uuid__;
+o ? this.result.push(t, i, o, r) : t[i] = this._deserializeObject(e, r);
+} else {
+var a = this.deserializedList[s];
+if (a) t[i] = a; else {
+this._idList.push(s);
+this._idObjList.push(t);
+this._idPropList.push(i);
+}
+}
+};
+r._deserializePrimitiveObject = function(i, n) {
+for (var r in n) if (n.hasOwnProperty(r)) {
+var s = n[r];
+"object" !== ("object" === (e = typeof s) ? t(s) : e) ? "__type__" !== r && (i[r] = s) : s ? this._deserializeObjField(i, s, r) : i[r] = null;
+}
+};
+r._deserializeTypedObject = function(i, n, r) {
+if (r !== cc.Vec2) if (r !== cc.Vec3) if (r !== cc.Color) if (r !== cc.Size) for (var s = o.DELIMETER + "default", c = o.getClassAttrs(r), l = r.__props__ || Object.keys(i), h = 0; h < l.length; h++) {
+var u = l[h], _ = n[u];
+void 0 !== _ && n.hasOwnProperty(u) || (_ = a.getDefault(c[u + s]));
+"object" !== ("object" === (e = typeof _) ? t(_) : e) ? i[u] = _ : _ ? this._deserializeObjField(i, _, u) : i[u] = null;
+} else {
+i.width = n.width || 0;
+i.height = n.height || 0;
+} else {
+i.r = n.r || 0;
+i.g = n.g || 0;
+i.b = n.b || 0;
+var f = n.a;
+i.a = void 0 === f ? 255 : f;
+} else {
+i.x = n.x || 0;
+i.y = n.y || 0;
+i.z = n.z || 0;
+} else {
+i.x = n.x || 0;
+i.y = n.y || 0;
+}
+};
+function l(t, e, i, n, r, o) {
+if (e instanceof cc.ValueType) {
+r || t.push("if(prop){");
+var a = s.getClassName(e);
+t.push("s._deserializeTypedObject(o" + i + ",prop," + a + ");");
+r || t.push("}else o" + i + "=null;");
+} else {
+t.push("if(prop){");
+t.push("s._deserializeObjField(o,prop," + n + ",null," + !!o + ");");
+t.push("}else o" + i + "=null;");
+}
+}
+var h = function(i, n) {
+for (var r = o.DELIMETER + "type", h = (o.DELIMETER, o.DELIMETER + "default"), u = o.DELIMETER + "saveUrlAsAsset", _ = o.DELIMETER + "formerlySerializedAs", f = o.getClassAttrs(n), d = n.__values__, m = [ "var prop;" ], p = c.BUILTIN_CLASSID_RE.test(s._getClassId(n)), v = 0; v < d.length; v++) {
+var y, g, x = d[v];
+0;
+if (a.IDENTIFIER_RE.test(x)) {
+g = '"' + x + '"';
+y = "." + x;
+} else y = "[" + (g = a.escapeForJS(x)) + "]";
+var C = y;
+if (f[x + _]) {
+var b = f[x + _];
+C = a.IDENTIFIER_RE.test(b) ? "." + b : "[" + a.escapeForJS(b) + "]";
+}
+m.push("prop=d" + C + ";");
+m.push('if(typeof (prop)!=="undefined"){');
+var A = f[x + u], S = a.getDefault(f[x + h]);
+if (p) {
+var w, T = f[x + r];
+if (void 0 === S && T) w = T === cc.String || T === cc.Integer || T === cc.Float || T === cc.Boolean; else {
+var E = "object" === (e = typeof S) ? t(S) : e;
+w = "string" === E && !A || "number" === E || "boolean" === E;
+}
+w ? m.push("o" + y + "=prop;") : l(m, S, y, g, !0, A);
+} else {
+m.push('if(typeof (prop)!=="object"){o' + y + "=prop;}else{");
+l(m, S, y, g, !1, A);
+m.push("}");
+}
+m.push("}");
+}
+if (cc.js.isChildClassOf(n, cc._BaseNode) || cc.js.isChildClassOf(n, cc.Component)) {
+m.push("d._id&&(o._id=d._id);");
+}
+if ("_$erialized" === d[d.length - 1]) {
+m.push("o._$erialized=JSON.parse(JSON.stringify(d));");
+m.push("s._deserializePrimitiveObject(o._$erialized,d);");
+}
+return Function("s", "o", "d", "k", "t", m.join(""));
+};
+function u(t, e, i, n, r) {
+var o;
+if (n.hasOwnProperty("__deserialize__")) o = n.__deserialize__; else {
+o = h(t, n);
+s.value(n, "__deserialize__", o, !0);
+}
+o(t, e, i, n, r);
+0;
+}
+i.pool = new s.Pool(function(t) {
+t.result = null;
+t.customEnv = null;
+t.deserializedList.length = 0;
+t.deserializedData = null;
+t._classFinder = null;
+0;
+t._idList.length = 0;
+t._idObjList.length = 0;
+t._idPropList.length = 0;
+}, 1);
+i.pool.get = function(t, e, n, r, s) {
+var o = this._get();
+if (o) {
+o.result = t;
+o.customEnv = r;
+o._classFinder = n;
+0;
+return o;
+}
+return new i(t, e, n, r, s);
+};
+return i;
+})();
+cc.deserialize = function(i, n, r) {
+var o = (r = r || {}).classFinder || s._getClassById, a = r.createAssetRefs || cc.sys.platform === cc.sys.EDITOR_CORE, c = r.customEnv, u = r.ignoreEditorOnly;
+0;
+"string" === ("object" === (e = typeof i) ? t(i) : e) && (i = JSON.parse(i));
+var _ = !n;
+n = n || l.pool.get();
+var f = h.pool.get(n, !1, o, c, u);
+cc.game._isCloning = !0;
+var d = f.deserialize(i);
+cc.game._isCloning = !1;
+h.pool.put(f);
+a && n.assignAssetsBy(Editor.serialize.asAsset);
+_ && l.pool.put(n);
+return d;
+};
+cc.deserialize.Details = l;
+cc.deserialize.reportMissingClass = function(t) {
+cc.warnID(5302, t);
+};
+}), {
+"../utils/misc": 297,
+"./CCClass": 201,
+"./attribute": 213,
+"./js": 221
+} ],
+217: [ (function(t, e, i) {
+"use strict";
+var n = ".";
+function r(t) {
+this.id = 0 | 998 * Math.random();
+this.prefix = t ? t + n : "";
+}
+r.prototype.getNewId = function() {
+return this.prefix + ++this.id;
+};
+r.global = new r("global");
+e.exports = r;
+}), {} ],
+218: [ (function(t, e, i) {
+"use strict";
+t("./js");
+t("./CCClass");
+t("./CCClassDecorator");
+t("./CCEnum");
+t("./CCObject");
+t("./callbacks-invoker");
+t("./url");
+t("./deserialize");
+t("./instantiate");
+t("./instantiate-jit");
+t("./requiring-frame");
+t("./CCSys");
+t("./CCMacro");
+t("./CCAssetLibrary");
+t("./CCVisibleRect");
+}), {
+"./CCAssetLibrary": 200,
+"./CCClass": 201,
+"./CCClassDecorator": 202,
+"./CCEnum": 203,
+"./CCMacro": 206,
+"./CCObject": 207,
+"./CCSys": 210,
+"./CCVisibleRect": 212,
+"./callbacks-invoker": 214,
+"./deserialize": 216,
+"./instantiate": 220,
+"./instantiate-jit": 219,
+"./js": 221,
+"./requiring-frame": 223,
+"./url": 224
+} ],
+219: [ (function(i, n, r) {
+"use strict";
+var s = i("./CCObject"), o = s.Flags.Destroyed, a = s.Flags.PersistentMask, c = i("./attribute"), l = i("./js"), h = i("./CCClass"), u = i("./compiler"), _ = c.DELIMETER + "default", f = h.IDENTIFIER_RE, d = h.escapeForJS, m = "var ", p = "o", v = "t", y = {
+"cc.Node": "cc.Node",
+"cc.Sprite": "cc.Sprite",
+"cc.Label": "cc.Label",
+"cc.Button": "cc.Button",
+"cc.Widget": "cc.Widget",
+"cc.Animation": "cc.Animation",
+"cc.ClickEvent": !1,
+"cc.PrefabInfo": !1
+};
+function g(t, e) {
+this.varName = t;
+this.expression = e;
+}
+g.prototype.toString = function() {
+return m + this.varName + "=" + this.expression + ";";
+};
+function x(t, e) {
+return e instanceof g ? new g(e.varName, t + e.expression) : t + e;
+}
+function C(t, e, i) {
+if (Array.isArray(i)) {
+i[0] = x(e, i[0]);
+t.push(i);
+} else t.push(x(e, i) + ";");
+}
+function b(t) {
+this._exps = [];
+this._targetExp = t;
+}
+b.prototype.append = function(t, e) {
+this._exps.push([ t, e ]);
+};
+b.prototype.writeCode = function(t) {
+var e;
+if (this._exps.length > 1) {
+t.push(v + "=" + this._targetExp + ";");
+e = v;
+} else {
+if (1 !== this._exps.length) return;
+e = this._targetExp;
+}
+for (var i = 0; i < this._exps.length; i++) {
+var n = this._exps[i];
+C(t, e + S(n[0]) + "=", n[1]);
+}
+};
+b.pool = new l.Pool(function(t) {
+t._exps.length = 0;
+t._targetExp = null;
+}, 1);
+b.pool.get = function(t) {
+var e = this._get() || new b();
+e._targetExp = t;
+return e;
+};
+function A(i, n) {
+if ("function" === ("object" === (e = typeof i) ? t(i) : e)) try {
+i = i();
+} catch (t) {
+return !1;
+}
+if (i === n) return !0;
+if (i && n) {
+if (i instanceof cc.ValueType && i.equals(n)) return !0;
+if (Array.isArray(i) && Array.isArray(n) || i.constructor === Object && n.constructor === Object) try {
+return Array.isArray(i) && Array.isArray(n) && 0 === i.length && 0 === n.length;
+} catch (t) {}
+}
+return !1;
+}
+function S(t) {
+return f.test(t) ? "." + t : "[" + d(t) + "]";
+}
+function w(t, e) {
+this.parent = e;
+this.objsToClear_iN$t = [];
+this.codeArray = [];
+this.objs = [];
+this.funcs = [];
+this.funcModuleCache = l.createMap();
+l.mixin(this.funcModuleCache, y);
+this.globalVariables = [];
+this.globalVariableId = 0;
+this.localVariableId = 0;
+this.codeArray.push(m + p + "," + v + ";", "if(R){", p + "=R;", "}else{", p + "=R=new " + this.getFuncModule(t.constructor, !0) + "();", "}");
+l.value(t, "_iN$t", {
+globalVar: "R"
+}, !0);
+this.objsToClear_iN$t.push(t);
+this.enumerateObject(this.codeArray, t);
+var i;
+this.globalVariables.length > 0 && (i = m + this.globalVariables.join(",") + ";");
+var n = u.flattenCodeArray([ "return (function(R){", i || [], this.codeArray, "return o;", "})" ]);
+this.result = Function("O", "F", n)(this.objs, this.funcs);
+for (var r = 0, s = this.objsToClear_iN$t.length; r < s; ++r) this.objsToClear_iN$t[r]._iN$t = null;
+this.objsToClear_iN$t.length = 0;
+}
+var T = w.prototype;
+T.getFuncModule = function(t, e) {
+var i = l.getClassName(t);
+if (i) {
+var n = this.funcModuleCache[i];
+if (n) return n;
+if (void 0 === n) {
+var r = -1 !== i.indexOf(".");
+if (r) try {
+if (r = t === Function("return " + i)()) {
+this.funcModuleCache[i] = i;
+return i;
+}
+} catch (t) {}
+}
+}
+var s = this.funcs.indexOf(t);
+if (s < 0) {
+s = this.funcs.length;
+this.funcs.push(t);
+}
+var o = "F[" + s + "]";
+e && (o = "(" + o + ")");
+this.funcModuleCache[i] = o;
+return o;
+};
+T.getObjRef = function(t) {
+var e = this.objs.indexOf(t);
+if (e < 0) {
+e = this.objs.length;
+this.objs.push(t);
+}
+return "O[" + e + "]";
+};
+T.setValueType = function(t, e, i, n) {
+var r = b.pool.get(n), s = e.constructor.__props__;
+s || (s = Object.keys(e));
+for (var o = 0; o < s.length; o++) {
+var a = s[o], c = i[a];
+if (e[a] !== c) {
+var l = this.enumerateField(i, a, c);
+r.append(a, l);
+}
+}
+r.writeCode(t);
+b.pool.put(r);
+};
+T.enumerateCCClass = function(i, n, r) {
+for (var s = r.__values__, o = c.getClassAttrs(r), a = 0; a < s.length; a++) {
+var l = s[a], u = n[l], f = o[l + _];
+if (!A(f, u)) if ("object" === ("object" === (e = typeof u) ? t(u) : e) && u instanceof cc.ValueType && (f = h.getDefault(f)) && f.constructor === u.constructor) {
+var d = p + S(l);
+this.setValueType(i, f, u, d);
+} else this.setObjProp(i, n, l, u);
+}
+};
+T.instantiateArray = function(t) {
+if (0 === t.length) return "[]";
+var e = "a" + ++this.localVariableId, i = [ new g(e, "new Array(" + t.length + ")") ];
+l.value(t, "_iN$t", {
+globalVar: "",
+source: i
+}, !0);
+this.objsToClear_iN$t.push(t);
+for (var n = 0; n < t.length; ++n) {
+C(i, e + "[" + n + "]=", this.enumerateField(t, n, t[n]));
+}
+return i;
+};
+T.enumerateField = function(i, n, r) {
+if ("object" === ("object" === (e = typeof r) ? t(r) : e) && r) {
+var o = r._iN$t;
+if (o) {
+var c = o.globalVar;
+if (!c) {
+c = o.globalVar = "v" + ++this.globalVariableId;
+this.globalVariables.push(c);
+var l = o.source[0];
+o.source[0] = x(c + "=", l);
+}
+return c;
+}
+return Array.isArray(r) ? this.instantiateArray(r) : this.instantiateObj(r);
+}
+if ("function" === ("object" === (e = typeof r) ? t(r) : e)) return this.getFuncModule(r);
+if ("string" === ("object" === (e = typeof r) ? t(r) : e)) return d(r);
+"_objFlags" === n && i instanceof s && (r &= a);
+return r;
+};
+T.setObjProp = function(t, e, i, n) {
+C(t, p + S(i) + "=", this.enumerateField(e, i, n));
+};
+T.enumerateObject = function(i, n) {
+var r = n.constructor;
+if (cc.Class._isCCClass(r)) this.enumerateCCClass(i, n, r); else for (var s in n) if (n.hasOwnProperty(s) && (95 !== s.charCodeAt(0) || 95 !== s.charCodeAt(1) || "__type__" === s)) {
+var o = n[s];
+"object" === ("object" === (e = typeof o) ? t(o) : e) && o && o === n._iN$t || this.setObjProp(i, n, s, o);
+}
+};
+T.instantiateObj = function(t) {
+if (t instanceof cc.ValueType) return h.getNewValueTypeCode(t);
+if (t instanceof cc.Asset) return this.getObjRef(t);
+if (t._objFlags & o) return null;
+var e, i = t.constructor;
+if (cc.Class._isCCClass(i)) {
+if (this.parent) if (this.parent instanceof cc.Component) {
+if (t instanceof cc._BaseNode || t instanceof cc.Component) return this.getObjRef(t);
+} else if (this.parent instanceof cc._BaseNode) if (t instanceof cc._BaseNode) {
+if (!t.isChildOf(this.parent)) return this.getObjRef(t);
+} else if (t instanceof cc.Component && !t.node.isChildOf(this.parent)) return this.getObjRef(t);
+e = new g(p, "new " + this.getFuncModule(i, !0) + "()");
+} else if (i === Object) e = new g(p, "{}"); else {
+if (i) return this.getObjRef(t);
+e = new g(p, "Object.create(null)");
+}
+var n = [ e ];
+l.value(t, "_iN$t", {
+globalVar: "",
+source: n
+}, !0);
+this.objsToClear_iN$t.push(t);
+this.enumerateObject(n, t);
+return [ "(function(){", n, "return o;})();" ];
+};
+n.exports = {
+compile: function(t) {
+return new w(t, t instanceof cc._BaseNode && t).result;
+},
+equalsToDefault: A
+};
+0;
+}), {
+"./CCClass": 201,
+"./CCObject": 207,
+"./attribute": 213,
+"./compiler": 215,
+"./js": 221
+} ],
+220: [ (function(i, n, r) {
+"use strict";
+var s = i("./CCObject"), o = i("../value-types/value-type"), a = s.Flags.Destroyed, c = s.Flags.PersistentMask, l = i("./utils").isDomNode, h = i("./js");
+function u(i, n) {
+if (!n) {
+if ("object" !== ("object" === (e = typeof i) ? t(i) : e) || Array.isArray(i)) {
+0;
+return null;
+}
+if (!i) {
+0;
+return null;
+}
+if (!cc.isValid(i)) {
+0;
+return null;
+}
+0;
+}
+var r;
+if (i instanceof s) {
+if (i._instantiate) {
+cc.game._isCloning = !0;
+r = i._instantiate();
+cc.game._isCloning = !1;
+return r;
+}
+if (i instanceof cc.Asset) {
+0;
+return null;
+}
+}
+cc.game._isCloning = !0;
+r = f(i);
+cc.game._isCloning = !1;
+return r;
+}
+var _ = [];
+function f(t, e) {
+if (Array.isArray(t)) {
+0;
+return null;
+}
+if (l && l(t)) {
+0;
+return null;
+}
+var i;
+if (t._iN$t) i = t._iN$t; else if (t.constructor) {
+i = new (0, t.constructor)();
+} else i = Object.create(null);
+m(t, i, e);
+for (var n = 0, r = _.length; n < r; ++n) _[n]._iN$t = null;
+_.length = 0;
+return i;
+}
+function d(i, n, r, s) {
+for (var a = i.__values__, c = 0; c < a.length; c++) {
+var l = a[c], h = n[l];
+if ("object" === ("object" === (e = typeof h) ? t(h) : e) && h) {
+var u = r[l];
+u instanceof o && u.constructor === h.constructor ? u.set(h) : r[l] = h._iN$t || p(h, s);
+} else r[l] = h;
+}
+}
+function m(i, n, r) {
+h.value(i, "_iN$t", n, !0);
+_.push(i);
+var o = i.constructor;
+if (cc.Class._isCCClass(o)) d(o, i, n, r); else for (var a in i) if (i.hasOwnProperty(a) && (95 !== a.charCodeAt(0) || 95 !== a.charCodeAt(1) || "__type__" === a)) {
+var l = i[a];
+if ("object" === ("object" === (e = typeof l) ? t(l) : e) && l) {
+if (l === n) continue;
+n[a] = l._iN$t || p(l, r);
+} else n[a] = l;
+}
+i instanceof s && (n._objFlags &= c);
+}
+function p(i, n) {
+if (i instanceof o) return i.clone();
+if (i instanceof cc.Asset) return i;
+var r;
+if (Array.isArray(i)) {
+var s = i.length;
+r = new Array(s);
+h.value(i, "_iN$t", r, !0);
+for (var c = 0; c < s; ++c) {
+var l = i[c];
+"object" === ("object" === (e = typeof l) ? t(l) : e) && l ? r[c] = l._iN$t || p(l, n) : r[c] = l;
+}
+_.push(i);
+return r;
+}
+if (i._objFlags & a) return null;
+var u = i.constructor;
+if (cc.Class._isCCClass(u)) {
+if (n) if (n instanceof cc.Component) {
+if (i instanceof cc._BaseNode || i instanceof cc.Component) return i;
+} else if (n instanceof cc._BaseNode) if (i instanceof cc._BaseNode) {
+if (!i.isChildOf(n)) return i;
+} else if (i instanceof cc.Component && !i.node.isChildOf(n)) return i;
+r = new u();
+} else if (u === Object) r = {}; else {
+if (u) return i;
+r = Object.create(null);
+}
+m(i, r, n);
+return r;
+}
+u._clone = f;
+cc.instantiate = u;
+n.exports = u;
+}), {
+"../value-types/value-type": 311,
+"./CCObject": 207,
+"./js": 221,
+"./utils": 225
+} ],
+221: [ (function(i, n, r) {
+"use strict";
+var s = new (i("./id-generater"))("TmpCId.");
+function o(t, e) {
+for (;t; ) {
+var i = Object.getOwnPropertyDescriptor(t, e);
+if (i) return i;
+t = Object.getPrototypeOf(t);
+}
+return null;
+}
+function a(t, e, i) {
+var n = o(e, t);
+Object.defineProperty(i, t, n);
+}
+var c = {
+isNumber: function(i) {
+return "number" === ("object" === (e = typeof i) ? t(i) : e) || i instanceof Number;
+},
+isString: function(i) {
+return "string" === ("object" === (e = typeof i) ? t(i) : e) || i instanceof String;
+},
+addon: function(i) {
+i = i || {};
+for (var n = 1, r = arguments.length; n < r; n++) {
+var s = arguments[n];
+if (s) {
+if ("object" !== ("object" === (e = typeof s) ? t(s) : e)) {
+cc.errorID(5402, s);
+continue;
+}
+for (var o in s) o in i || a(o, s, i);
+}
+}
+return i;
+},
+mixin: function(i) {
+i = i || {};
+for (var n = 1, r = arguments.length; n < r; n++) {
+var s = arguments[n];
+if (s) {
+if ("object" !== ("object" === (e = typeof s) ? t(s) : e)) {
+cc.errorID(5403, s);
+continue;
+}
+for (var o in s) a(o, s, i);
+}
+}
+return i;
+},
+extend: function(t, e) {
+0;
+for (var i in e) e.hasOwnProperty(i) && (t[i] = e[i]);
+t.prototype = Object.create(e.prototype, {
+constructor: {
+value: t,
+writable: !0,
+configurable: !0
+}
+});
+return t;
+},
+getSuper: function(t) {
+var e = t.prototype, i = e && Object.getPrototypeOf(e);
+return i && i.constructor;
+},
+isChildClassOf: function(i, n) {
+if (i && n) {
+if ("function" !== ("object" === (e = typeof i) ? t(i) : e)) return !1;
+if ("function" !== ("object" === (e = typeof n) ? t(n) : e)) {
+0;
+return !1;
+}
+if (i === n) return !0;
+for (;;) {
+if (!(i = c.getSuper(i))) return !1;
+if (i === n) return !0;
+}
+}
+return !1;
+},
+clear: function(t) {
+for (var e = Object.keys(t), i = 0; i < e.length; i++) delete t[e[i]];
+},
+isEmptyObject: function(t) {
+for (var e in t) return !1;
+return !0;
+},
+getPropertyDescriptor: o
+}, l = {
+value: void 0,
+enumerable: !1,
+writable: !1,
+configurable: !0
+};
+c.value = function(t, e, i, n, r) {
+l.value = i;
+l.writable = n;
+l.enumerable = r;
+Object.defineProperty(t, e, l);
+l.value = void 0;
+};
+var h = {
+get: null,
+set: null,
+enumerable: !1
+};
+c.getset = function(i, n, r, s, o, a) {
+if ("function" !== ("object" === (e = typeof s) ? t(s) : e)) {
+o = s;
+s = void 0;
+}
+h.get = r;
+h.set = s;
+h.enumerable = o;
+h.configurable = a;
+Object.defineProperty(i, n, h);
+h.get = null;
+h.set = null;
+};
+var u = {
+get: null,
+enumerable: !1,
+configurable: !1
+};
+c.get = function(t, e, i, n, r) {
+u.get = i;
+u.enumerable = n;
+u.configurable = r;
+Object.defineProperty(t, e, u);
+u.get = null;
+};
+var _ = {
+set: null,
+enumerable: !1,
+configurable: !1
+};
+c.set = function(t, e, i, n, r) {
+_.set = i;
+_.enumerable = n;
+_.configurable = r;
+Object.defineProperty(t, e, _);
+_.set = null;
+};
+c.getClassName = function(i) {
+if ("function" === ("object" === (e = typeof i) ? t(i) : e)) {
+var n = i.prototype;
+if (n && n.hasOwnProperty("__classname__") && n.__classname__) return n.__classname__;
+var r = "";
+i.name && (r = i.name);
+if (i.toString) {
+var s, o = i.toString();
+(s = "[" === o.charAt(0) ? o.match(/\[\w+\s*(\w+)\]/) : o.match(/function\s*(\w+)/)) && 2 === s.length && (r = s[1]);
+}
+return "Object" !== r ? r : "";
+}
+return i && i.constructor ? c.getClassName(i.constructor) : "";
+};
+(function() {
+var i = {}, n = {};
+function r(t, e, i) {
+c.getset(c, e, (function() {
+return Object.assign({}, i);
+}), (function(t) {
+c.clear(i);
+Object.assign(i, t);
+}));
+return function(e, n) {
+n.prototype.hasOwnProperty(t) && delete i[n.prototype[t]];
+c.value(n.prototype, t, e);
+if (e) {
+var r = i[e];
+if (r && r !== n) {
+var s = "A Class already exists with the same " + t + ' : "' + e + '".';
+0;
+cc.error(s);
+} else i[e] = n;
+}
+};
+}
+c._setClassId = r("__cid__", "_registeredClassIds", i);
+var o = r("__classname__", "_registeredClassNames", n);
+c.setClassName = function(t, e) {
+o(t, e);
+if (!e.prototype.hasOwnProperty("__cid__")) {
+var i = t || s.getNewId();
+i && c._setClassId(i, e);
+}
+};
+c.unregisterClass = function() {
+for (var t = 0; t < arguments.length; t++) {
+var e = arguments[t].prototype, r = e.__cid__;
+r && delete i[r];
+var s = e.__classname__;
+s && delete n[s];
+}
+};
+c._getClassById = function(t) {
+return i[t];
+};
+c.getClassByName = function(t) {
+return n[t];
+};
+c._getClassId = function(i, n) {
+n = "undefined" === ("object" === (e = typeof n) ? t(n) : e) || n;
+if ("function" === ("object" === (e = typeof i) ? t(i) : e) && i.prototype.hasOwnProperty("__cid__")) {
+0;
+return i.prototype.__cid__;
+}
+if (i && i.constructor) {
+var r = i.constructor.prototype;
+if (r && r.hasOwnProperty("__cid__")) {
+0;
+return i.__cid__;
+}
+}
+return "";
+};
+})();
+c.obsolete = function(t, e, i, n) {
+var r = /([^.]+)$/, s = r.exec(e)[0], o = r.exec(i)[0];
+function a() {
+0;
+return this[o];
+}
+n ? c.getset(t, s, a, (function(t) {
+0;
+this[o] = t;
+})) : c.get(t, s, a);
+};
+c.obsoletes = function(t, e, i, n) {
+for (var r in i) {
+var s = i[r];
+c.obsolete(t, e + "." + r, s, n);
+}
+};
+var f = /(%d)|(%s)/, d = /%s/;
+c.formatStr = function() {
+var i = arguments.length;
+if (0 === i) return "";
+var n = arguments[0];
+if (1 === i) return "" + n;
+if ("string" === ("object" === (e = typeof n) ? t(n) : e) && f.test(n)) for (var r = 1; r < i; ++r) {
+var s = arguments[r], o = "number" === ("object" === (e = typeof s) ? t(s) : e) ? f : d;
+o.test(n) ? n = n.replace(o, s) : n += " " + s;
+} else for (var a = 1; a < i; ++a) n += " " + arguments[a];
+return n;
+};
+c.shiftArguments = function() {
+for (var t = arguments.length - 1, e = new Array(t), i = 0; i < t; ++i) e[i] = arguments[i + 1];
+return e;
+};
+c.createMap = function(t) {
+var e = Object.create(null);
+if (t) {
+e["."] = !0;
+e["/"] = !0;
+delete e["."];
+delete e["/"];
+}
+return e;
+};
+function m(t, e) {
+t.splice(e, 1);
+}
+function p(t, e) {
+var i = t.indexOf(e);
+if (i >= 0) {
+m(t, i);
+return !0;
+}
+return !1;
+}
+var v = Array.prototype.indexOf;
+c.array = {
+remove: p,
+fastRemove: function(t, e) {
+var i = t.indexOf(e);
+if (i >= 0) {
+t[i] = t[t.length - 1];
+--t.length;
+}
+},
+removeAt: m,
+fastRemoveAt: function(t, e) {
+var i = t.length;
+if (!(e < 0 || e >= i)) {
+t[e] = t[i - 1];
+t.length = i - 1;
+}
+},
+contains: function(t, e) {
+return t.indexOf(e) >= 0;
+},
+verifyType: function(t, e) {
+if (t && t.length > 0) for (var i = 0; i < t.length; i++) if (!(t[i] instanceof e)) {
+cc.logID(1300);
+return !1;
+}
+return !0;
+},
+removeArray: function(t, e) {
+for (var i = 0, n = e.length; i < n; i++) p(t, e[i]);
+},
+appendObjectsAt: function(t, e, i) {
+t.splice.apply(t, [ i, 0 ].concat(e));
+return t;
+},
+copy: function(t) {
+var e, i = t.length, n = new Array(i);
+for (e = 0; e < i; e += 1) n[e] = t[e];
+return n;
+},
+indexOf: v,
+MutableForwardIterator: i("../utils/mutable-forward-iterator")
+};
+function y(t, e) {
+if (void 0 === e) {
+e = t;
+t = null;
+}
+this.get = null;
+this.count = 0;
+this._pool = new Array(e);
+this._cleanup = t;
+}
+y.prototype._get = function() {
+if (this.count > 0) {
+--this.count;
+var t = this._pool[this.count];
+this._pool[this.count] = null;
+return t;
+}
+return null;
+};
+y.prototype.put = function(t) {
+var e = this._pool;
+if (this.count < e.length) {
+if (this._cleanup && !1 === this._cleanup(t)) return;
+e[this.count] = t;
+++this.count;
+}
+};
+y.prototype.resize = function(t) {
+if (t >= 0) {
+this._pool.length = t;
+this.count > t && (this.count = t);
+}
+};
+c.Pool = y;
+cc.js = c;
+n.exports = c;
+}), {
+"../utils/mutable-forward-iterator": 298,
+"./id-generater": 217
+} ],
+222: [ (function(i, n, r) {
+"use strict";
+var s = i("./js"), o = {
+url: {
+canUsedInGet: !0
+},
+default: {},
+serializable: {},
+editorOnly: {},
+formerlySerializedAs: {}
+};
+function a(t, e, i, n) {
+if (t.get || t.set) 0; else if (t.hasOwnProperty("default")) {
+var r = "_N$" + e;
+t.get = function() {
+return this[r];
+};
+t.set = function(t) {
+var e = this[r];
+this[r] = t;
+i.call(this, e);
+};
+0;
+var s = {};
+n[r] = s;
+for (var a in o) {
+var c = o[a];
+if (t.hasOwnProperty(a)) {
+s[a] = t[a];
+c.canUsedInGet || delete t[a];
+}
+}
+} else 0;
+}
+function c(t, e, i, n) {
+Array.isArray(n) && n.length > 0 && (n = n[0]);
+0;
+t.type = n;
+}
+function l(t, e, i, n) {
+if (Array.isArray(e)) {
+if (!(e.length > 0)) return cc.errorID(5508, i, n);
+if (cc.RawAsset.isRawAssetType(e[0])) {
+t.url = e[0];
+delete t.type;
+return;
+}
+t.type = e = e[0];
+}
+0;
+}
+r.getFullFormOfProperty = function(i, n, r) {
+if (!(i && i.constructor === Object)) {
+if (Array.isArray(i) && i.length > 0) {
+var o = i[0];
+0;
+return {
+default: [],
+type: i,
+_short: !0
+};
+}
+if ("function" === ("object" === (e = typeof i) ? t(i) : e)) {
+o = i;
+if (!cc.RawAsset.isRawAssetType(o)) {
+if (!cc.RawAsset.wasRawAssetType(o)) return {
+default: s.isChildClassOf(o, cc.ValueType) ? new o() : null,
+type: o,
+_short: !0
+};
+0;
+}
+return {
+default: "",
+url: o,
+_short: !0
+};
+}
+return {
+default: i,
+_short: !0
+};
+}
+return null;
+};
+r.preprocessAttrs = function(t, e, i, n) {
+for (var s in t) {
+var o = t[s], h = r.getFullFormOfProperty(o, s, e);
+h && (o = t[s] = h);
+if (o) {
+var u = o.notify;
+u && a(o, s, u, t);
+"type" in o && l(o, o.type, e, s);
+"url" in o && c(o, 0, 0, o.url);
+"type" in o && o.type;
+}
+}
+};
+r.validateMethodWithProps = function(i, n, r, s, o) {
+0;
+if ("function" !== ("object" === (e = typeof i) ? t(i) : e) && null !== i) {
+return !1;
+}
+0;
+return !0;
+};
+}), {
+"./CCClass": 201,
+"./js": 221
+} ],
+223: [ (function(t, e, i) {
+"use strict";
+var n = [];
+cc._RF = {
+push: function(t, e, i) {
+if (void 0 === i) {
+i = e;
+e = "";
+}
+n.push({
+uuid: e,
+script: i,
+module: t,
+exports: t.exports,
+beh: null
+});
+},
+pop: function() {
+var t = n.pop(), e = t.module, i = e.exports;
+if (i === t.exports) {
+for (var r in i) return;
+e.exports = i = t.cls;
+}
+},
+peek: function() {
+return n[n.length - 1];
+}
+};
+0;
+}), {} ],
+224: [ (function(t, e, i) {
+"use strict";
+cc.url = {
+_rawAssets: "",
+normalize: function(t) {
+t && (46 === t.charCodeAt(0) && 47 === t.charCodeAt(1) ? t = t.slice(2) : 47 === t.charCodeAt(0) && (t = t.slice(1)));
+return t;
+},
+raw: function(t) {
+0;
+if ((t = this.normalize(t)).startsWith("resources/")) {
+var e = cc.loader._getResUuid(t.slice(10), cc.Asset, null, !0);
+if (e) return cc.AssetLibrary.getLibUrlNoExt(e, !0) + cc.path.extname(t);
+} else cc.errorID(7002, t);
+return this._rawAssets + t;
+},
+_init: function(t) {
+this._rawAssets = cc.path.stripSep(t) + "/";
+}
+};
+e.exports = cc.url;
+}), {} ],
+225: [ (function(i, n, r) {
+"use strict";
+i("./js");
+n.exports = {
+contains: function(i, n) {
+if ("function" == ("object" === (e = typeof i.contains) ? t(i.contains) : e)) return i.contains(n);
+if ("function" == ("object" === (e = typeof i.compareDocumentPosition) ? t(i.compareDocumentPosition) : e)) return !!(16 & i.compareDocumentPosition(n));
+var r = n.parentNode;
+if (r) do {
+if (r === i) return !0;
+r = r.parentNode;
+} while (null !== r);
+return !1;
+},
+isDomNode: "object" === (e = typeof window, "object" === e ? t(window) : e) && ("function" === (e = typeof Node,
+"object" === e ? t(Node) : e) ? function(t) {
+return t instanceof Node;
+} : function(i) {
+return i && "object" === ("object" === (e = typeof i) ? t(i) : e) && "number" === ("object" === (e = typeof i.nodeType) ? t(i.nodeType) : e) && "string" === ("object" === (e = typeof i.nodeName) ? t(i.nodeName) : e);
+}),
+callInNextTick: function(t, e, i) {
+t && setTimeout((function() {
+t(e, i);
+}), 0);
+}
+};
+0;
+0;
+}), {
+"./js": 221
+} ],
+226: [ (function(t, e, i) {
+"use strict";
+t("./platform/js");
+t("./value-types");
+t("./utils");
+t("./platform/CCInputManager");
+t("./platform/CCInputExtension");
+t("./event");
+t("./platform/CCSys");
+t("./platform/CCMacro");
+t("./load-pipeline");
+t("./CCDirector");
+t("./renderer");
+t("./platform/CCView");
+t("./platform/CCScreen");
+t("./CCScheduler");
+t("./event-manager");
+}), {
+"./CCDirector": 50,
+"./CCScheduler": 55,
+"./event": 135,
+"./event-manager": 131,
+"./load-pipeline": 155,
+"./platform/CCInputExtension": 204,
+"./platform/CCInputManager": 205,
+"./platform/CCMacro": 206,
+"./platform/CCScreen": 209,
+"./platform/CCSys": 210,
+"./platform/CCView": 211,
+"./platform/js": 221,
+"./renderer": 244,
+"./utils": 294,
+"./value-types": 306
+} ],
+227: [ (function(t, e, i) {
+"use strict";
+var n = function(t) {
+var e;
+try {
+e = t.getContext("2d");
+} catch (t) {
+console.error(t);
+return;
+}
+this._canvas = t;
+this._ctx = e;
+this._caps = {};
+this._stats = {
+drawcalls: 0
+};
+this._vx = this._vy = this._vw = this._vh = 0;
+this._sx = this._sy = this._sw = this._sh = 0;
+};
+n.prototype._restoreTexture = function(t) {};
+n.prototype.setViewport = function(t, e, i, n) {
+if (this._vx !== t || this._vy !== e || this._vw !== i || this._vh !== n) {
+this._vx = t;
+this._vy = e;
+this._vw = i;
+this._vh = n;
+}
+};
+n.prototype.setScissor = function(t, e, i, n) {
+if (this._sx !== t || this._sy !== e || this._sw !== i || this._sh !== n) {
+this._sx = t;
+this._sy = e;
+this._sw = i;
+this._sh = n;
+}
+};
+n.prototype.clear = function(t) {
+var e = this._ctx;
+e.clearRect(this._vx, this._vy, this._vw, this._vh);
+if (t && (0 !== t[0] || 0 !== t[1] || 0 !== t[2])) {
+e.fillStyle = "rgb(" + t[0] + "," + t[1] + "," + t[2] + ")";
+e.globalAlpha = t[3];
+e.fillRect(this._vx, this._vy, this._vw, this._vh);
+}
+};
+e.exports = n;
+}), {} ],
+228: [ (function(t, e, i) {
+"use strict";
+var n = function(t, e) {
+this._device = t;
+this._width = 4;
+this._height = 4;
+this._image = null;
+if (e) {
+void 0 !== e.width && (this._width = e.width);
+void 0 !== e.height && (this._height = e.height);
+this.updateImage(e);
+}
+};
+n.prototype.update = function(t) {
+this.updateImage(t);
+};
+n.prototype.updateImage = function(t) {
+if (t.images && t.images[0]) {
+var e = t.images[0];
+e && e !== this._image && (this._image = e);
+}
+};
+n.prototype.destroy = function() {
+this._image = null;
+};
+e.exports = n;
+}), {} ],
+229: [ (function(t, e, i) {
+"use strict";
+var n = function() {};
+n.prototype = {
+constructor: n,
+clear: function() {},
+render: function() {}
+};
+e.exports = n;
+}), {} ],
+230: [ (function(t, e, i) {
+"use strict";
+e.exports = {
+ForwardRenderer: t("./forward-renderer"),
+RenderComponentHandle: t("./render-component-handle"),
+_renderers: t("./renderers")
+};
+}), {
+"./forward-renderer": 229,
+"./render-component-handle": 231,
+"./renderers": 234
+} ],
+231: [ (function(t, e, i) {
+"use strict";
+t("./renderers");
+var n = t("./renderers/utils"), r = function(t, e) {
+this._device = t;
+this._camera = e;
+this.parentOpacity = 1;
+this.parentOpacityDirty = 0;
+this.worldMatDirty = 0;
+this.walking = !1;
+};
+r.prototype = {
+constructor: r,
+reset: function() {
+var t = this._device._ctx, e = this._device._canvas, i = cc.Camera.main ? cc.Camera.main.backgroundColor : cc.color(), r = "rgba(" + i.r + ", " + i.g + ", " + i.b + ", " + i.a / 255 + ")";
+t.fillStyle = r;
+t.setTransform(1, 0, 0, 1, 0, 0);
+t.clearRect(0, 0, e.width, e.height);
+t.fillRect(0, 0, e.width, e.height);
+this._device._stats.drawcalls = 0;
+n.context.reset();
+},
+terminate: function() {},
+_commitComp: function(t, e) {
+var i = this._device._ctx, n = this._camera;
+i.setTransform(n.a, n.b, n.c, n.d, n.tx, n.ty);
+i.scale(1, -1);
+e.draw(i, t);
+}
+};
+e.exports = r;
+}), {
+"./renderers": 234,
+"./renderers/utils": 243
+} ],
+232: [ (function(t, e, i) {
+"use strict";
+var n = t("../../../../graphics/helper"), r = t("../../../../graphics/types"), s = t("../../../../platform/js"), o = (r.PointFlags,
+r.LineJoin), a = r.LineCap;
+function c() {
+this.cmds = [];
+this.style = {
+strokeStyle: "black",
+fillStyle: "white",
+lineCap: "butt",
+lineJoin: "miter",
+miterLimit: 10
+};
+}
+var l = c.prototype;
+s.mixin(l, {
+moveTo: function(t, e) {
+this.cmds.push([ "moveTo", [ t, e ] ]);
+},
+lineTo: function(t, e) {
+this.cmds.push([ "lineTo", [ t, e ] ]);
+},
+bezierCurveTo: function(t, e, i, n, r, s) {
+this.cmds.push([ "bezierCurveTo", [ t, e, i, n, r, s ] ]);
+},
+quadraticCurveTo: function(t, e, i, n) {
+this.cmds.push([ "quadraticCurveTo", [ t, e, i, n ] ]);
+},
+arc: function(t, e, i, r, s, o) {
+n.arc(this, t, e, i, r, s, o);
+},
+ellipse: function(t, e, i, r) {
+n.ellipse(this, t, e, i, r);
+},
+circle: function(t, e, i) {
+n.ellipse(this, t, e, i, i);
+},
+rect: function(t, e, i, n) {
+this.moveTo(t, e);
+this.lineTo(t, e + n);
+this.lineTo(t + i, e + n);
+this.lineTo(t + i, e);
+this.close();
+},
+roundRect: function(t, e, i, r, s) {
+n.roundRect(this, t, e, i, r, s);
+},
+clear: function(t, e) {
+this.cmds.length = 0;
+},
+close: function() {
+this.cmds.push([ "closePath", [] ]);
+},
+stroke: function() {
+this.cmds.push([ "stroke", [] ]);
+},
+fill: function() {
+this.cmds.push([ "fill", [] ]);
+}
+});
+s.set(l, "strokeColor", (function(t) {
+var e = "rgba(" + (0 | t.r) + "," + (0 | t.g) + "," + (0 | t.b) + "," + t.a / 255 + ")";
+this.cmds.push([ "strokeStyle", e ]);
+this.style.strokeStyle = e;
+}));
+s.set(l, "fillColor", (function(t) {
+var e = "rgba(" + (0 | t.r) + "," + (0 | t.g) + "," + (0 | t.b) + "," + t.a / 255 + ")";
+this.cmds.push([ "fillStyle", e ]);
+this.style.fillStyle = e;
+}));
+s.set(l, "lineWidth", (function(t) {
+this.cmds.push([ "lineWidth", t ]);
+this.style.lineWidth = t;
+}));
+s.set(l, "lineCap", (function(t) {
+var e = "butt";
+t === a.BUTT ? e = "butt" : t === a.ROUND ? e = "round" : t === a.SQUARE && (e = "square");
+this.cmds.push([ "lineCap", e ]);
+this.style.lineCap = e;
+}));
+s.set(l, "lineJoin", (function(t) {
+var e = "bevel";
+t === o.BEVEL ? e = "bevel" : t === o.ROUND ? e = "round" : t === o.MITER && (e = "miter");
+this.cmds.push([ "lineJoin", e ]);
+this.style.lineJoin = e;
+}));
+s.set(l, "miterLimit", (function(t) {
+this.cmds.push([ "miterLimit", t ]);
+this.style.miterLimit = t;
+}));
+e.exports = c;
+}), {
+"../../../../graphics/helper": 143,
+"../../../../graphics/types": 145,
+"../../../../platform/js": 221
+} ],
+233: [ (function(i, n, r) {
+"use strict";
+var s = i("./impl");
+n.exports = {
+createImpl: function() {
+return new s();
+},
+draw: function(i, n) {
+var r = n.node, s = r._worldMatrix, o = s.m00, a = s.m01, c = s.m04, l = s.m05, h = s.m12, u = s.m13;
+i.transform(o, a, c, l, h, u);
+i.save();
+i.globalAlpha = r.opacity / 255;
+var _ = n._impl.style;
+i.strokeStyle = _.strokeStyle;
+i.fillStyle = _.fillStyle;
+i.lineWidth = _.lineWidth;
+i.lineJoin = _.lineJoin;
+i.miterLimit = _.miterLimit;
+for (var f = !0, d = n._impl.cmds, m = 0, p = d.length; m < p; m++) {
+var v = d[m], y = v[0], g = v[1];
+if ("moveTo" === y && f) {
+i.beginPath();
+f = !1;
+} else "fill" !== y && "stroke" !== y && "fillRect" !== y || (f = !0);
+"function" === ("object" === (e = typeof i[y]) ? t(i[y]) : e) ? i[y].apply(i, g) : i[y] = g;
+}
+i.restore();
+return 1;
+},
+stroke: function(t) {
+t._impl.stroke();
+},
+fill: function(t) {
+t._impl.fill();
+}
+};
+}), {
+"./impl": 232
+} ],
+234: [ (function(t, e, i) {
+"use strict";
+var n = t("../../../platform/js"), r = t("../../../components/CCSprite"), s = t("../../../components/CCLabel"), o = t("../../../components/CCMask"), a = t("../../../graphics/graphics"), c = t("./sprite"), l = t("./label"), h = t("./graphics"), u = t("./mask"), _ = {}, f = {};
+function d(t, e, i) {
+var r = n.getClassName(t);
+_[r] = e;
+i && (f[r] = i);
+t._assembler = e;
+t._postAssembler = i;
+}
+d(r, c);
+d(s, l);
+o && d(o, u.beforeHandler, u.afterHandler);
+a && d(a, h);
+e.exports = {
+map: _,
+postMap: f,
+addRenderer: d
+};
+}), {
+"../../../components/CCLabel": 97,
+"../../../components/CCMask": 101,
+"../../../components/CCSprite": 111,
+"../../../graphics/graphics": 142,
+"../../../platform/js": 221,
+"./graphics": 233,
+"./label": 236,
+"./mask": 238,
+"./sprite": 239
+} ],
+235: [ (function(t, e, i) {
+"use strict";
+var n = t("../../../utils/label/bmfont"), r = t("../../../../platform/js"), s = t("../utils");
+e.exports = r.addon({
+createData: function(t) {
+return t.requestRenderData();
+},
+appendQuad: function(t, e, i, n, r, s, o) {
+var a = t.dataLength;
+t.dataLength += 2;
+var c = t._data, l = (e.width, e.height, i.width), h = i.height, u = void 0, _ = void 0, f = void 0, d = void 0;
+if (n) {
+u = i.x;
+f = i.x + h;
+_ = i.y;
+d = i.y + l;
+c[a].u = u;
+c[a].v = d;
+c[a + 1].u = u;
+c[a + 1].v = _;
+} else {
+u = i.x;
+f = i.x + l;
+_ = i.y;
+d = i.y + h;
+c[a].u = u;
+c[a].v = _;
+c[a + 1].u = f;
+c[a + 1].v = d;
+}
+c[a].x = r;
+c[a].y = s - h * o;
+c[a + 1].x = r + l * o;
+c[a + 1].y = s;
+},
+draw: function(t, e) {
+var i = e.node, n = i._worldMatrix, r = n.m00, o = n.m01, a = n.m04, c = n.m05, l = n.m12, h = n.m13;
+t.transform(r, o, a, c, l, h);
+t.scale(1, -1);
+s.context.setGlobalAlpha(t, i.opacity / 255);
+for (var u = e._frame._texture, _ = e._renderData._data, f = s.getColorizedImage(u, i._color), d = 0, m = _.length; d < m; d += 2) {
+var p = _[d].x, v = _[d].y, y = _[d + 1].x - p, g = _[d + 1].y - v;
+v = -v - g;
+var x = _[d].u, C = _[d].v, b = _[d + 1].u - x, A = _[d + 1].v - C;
+t.drawImage(f, x, C, b, A, p, v, y, g);
+}
+return 1;
+}
+}, n);
+}), {
+"../../../../platform/js": 221,
+"../../../utils/label/bmfont": 248,
+"../utils": 243
+} ],
+236: [ (function(t, e, i) {
+"use strict";
+var n = t("../../../../components/CCLabel"), r = t("./ttf"), s = t("./bmfont"), o = {
+pool: [],
+get: function() {
+var t = this.pool.pop();
+if (!t) {
+var e = document.createElement("canvas");
+t = {
+canvas: e,
+context: e.getContext("2d")
+};
+}
+return t;
+},
+put: function(t) {
+this.pool.length >= 32 || this.pool.push(t);
+}
+};
+n._canvasPool = o;
+e.exports = {
+getAssembler: function(t) {
+var e = r;
+t.font instanceof cc.BitmapFont && (e = s);
+return e;
+},
+createData: function(t) {
+return t._assembler.createData(t);
+},
+draw: function(t, e) {
+if (!e._texture) return 0;
+var i = e._assembler;
+if (!i) return 0;
+i.updateRenderData(e);
+return i.draw(t, e);
+}
+};
+}), {
+"../../../../components/CCLabel": 97,
+"./bmfont": 235,
+"./ttf": 237
+} ],
+237: [ (function(t, e, i) {
+"use strict";
+var n = t("../../../utils/label/ttf"), r = t("../../../../platform/js"), s = t("../utils");
+e.exports = r.addon({
+createData: function(t) {
+var e = t.requestRenderData();
+e.dataLength = 2;
+return e;
+},
+_updateVerts: function(t) {
+var e = t._renderData, i = t.node, n = i.width, r = i.height, s = i.anchorX * n, o = i.anchorY * r, a = e._data;
+a[0].x = -s;
+a[0].y = -o;
+a[1].x = n - s;
+a[1].y = r - o;
+},
+_updateTexture: function(t) {
+n._updateTexture(t);
+var e = t._frame._texture;
+s.dropColorizedImage(e, t.node.color);
+},
+draw: function(t, e) {
+var i = e.node, n = i._worldMatrix, r = n.m00, o = n.m01, a = n.m04, c = n.m05, l = n.m12, h = n.m13;
+t.transform(r, o, a, c, l, h);
+t.scale(1, -1);
+s.context.setGlobalAlpha(t, i.opacity / 255);
+var u = e._frame._texture, _ = e._renderData._data, f = u.getHtmlElementObj(), d = _[0].x, m = _[0].y, p = _[1].x - d, v = _[1].y - m;
+m = -m - v;
+t.drawImage(f, d, m, p, v);
+return 1;
+}
+}, n);
+}), {
+"../../../../platform/js": 221,
+"../../../utils/label/ttf": 251,
+"../utils": 243
+} ],
+238: [ (function(t, e, i) {
+"use strict";
+t("../../../components/CCMask");
+var n = t("./graphics"), r = {
+updateRenderData: function(t) {},
+draw: function(t, e) {
+t.save();
+n.draw(t, e._graphics);
+t.clip();
+}
+};
+e.exports = {
+beforeHandler: r,
+afterHandler: {
+updateRenderData: function(t) {},
+draw: function(t, e) {
+t.restore();
+}
+}
+};
+}), {
+"../../../components/CCMask": 101,
+"./graphics": 233
+} ],
+239: [ (function(t, e, i) {
+"use strict";
+var n = t("../../../../components/CCSprite"), r = n.Type, s = n.FillType, o = t("./simple"), a = t("./sliced"), c = t("./tiled");
+0;
+e.exports = {
+getAssembler: function(t) {
+switch (t.type) {
+case r.SIMPLE:
+return o;
+
+case r.SLICED:
+return a;
+
+case r.TILED:
+return c;
+
+case r.FILLED:
+return t._fillType, s.RADIAL, null;
+}
+},
+createData: function(t) {
+return t._assembler.createData(t);
+}
+};
+}), {
+"../../../../components/CCSprite": 111,
+"../../../webgl/assemblers/sprite/index.js": 278,
+"./simple": 240,
+"./sliced": 241,
+"./tiled": 242
+} ],
+240: [ (function(t, e, i) {
+"use strict";
+var n = t("../utils"), r = {
+createData: function(t) {
+var e = t.requestRenderData();
+e.dataLength = 2;
+return e;
+},
+updateRenderData: function(t) {
+t._material || t._activateMaterial();
+var e = t._renderData;
+e.uvDirty && this.updateUVs(t);
+e.vertDirty && this.updateVerts(t);
+},
+updateUVs: function(t) {
+var e = t.spriteFrame, i = t._renderData, n = i._data, r = e._rect;
+e._texture;
+if (e._rotated) {
+var s = r.x, o = r.width, a = r.y, c = r.height;
+n[0].u = s;
+n[0].v = a;
+n[1].u = c;
+n[1].v = o;
+} else {
+var l = r.x, h = r.width, u = r.y, _ = r.height;
+n[0].u = l;
+n[0].v = u;
+n[1].u = h;
+n[1].v = _;
+}
+i.uvDirty = !1;
+},
+updateVerts: function(t) {
+var e = t._renderData, i = t.node, n = t.spriteFrame, r = e._data, s = i.width, o = i.height, a = i.anchorX * s, c = i.anchorY * o, l = void 0, h = void 0, u = void 0, _ = void 0;
+if (t.trim) {
+l = -a;
+h = -c;
+u = s;
+_ = o;
+} else {
+var f = n._originalSize.width, d = n._originalSize.height, m = n._rect.width, p = n._rect.height, v = n._offset, y = s / f, g = o / d, x = v.x + (f - m) / 2, C = (v.x,
+v.y + (d - p) / 2);
+v.y;
+l = x * y - a;
+h = C * g - c;
+u = s;
+_ = o;
+}
+if (n._rotated) {
+r[0].y = l;
+r[0].x = h;
+r[1].y = u;
+r[1].x = _;
+} else {
+r[0].x = l;
+r[0].y = h;
+r[1].x = u;
+r[1].y = _;
+}
+e.vertDirty = !1;
+},
+draw: function(t, e) {
+var i = e.node, r = e._spriteFrame, s = i._worldMatrix, o = s.m00, a = s.m01, c = s.m04, l = s.m05, h = s.m12, u = s.m13;
+t.transform(o, a, c, l, h, u);
+t.scale(1, -1);
+r._rotated && t.rotate(-Math.PI / 2);
+n.context.setGlobalAlpha(t, i.opacity / 255);
+var _ = r._texture, f = e._renderData._data, d = n.getColorizedImage(_, i._color), m = f[0].x, p = f[0].y, v = f[1].x, y = f[1].y;
+p = -p - y;
+var g = f[0].u, x = f[0].v, C = f[1].u, b = f[1].v;
+t.drawImage(d, g, x, C, b, m, p, v, y);
+return 1;
+}
+};
+e.exports = r;
+}), {
+"../utils": 243
+} ],
+241: [ (function(t, e, i) {
+"use strict";
+var n = t("../utils"), r = {
+createData: function(t) {
+var e = t.requestRenderData();
+e.dataLength = 4;
+return e;
+},
+updateRenderData: t("./simple").updateRenderData,
+updateUVs: function(t) {
+var e = t.spriteFrame, i = t._renderData, n = e._rect, r = (e._texture, e.insetLeft), s = e.insetRight, o = n.width - r - s, a = e.insetTop, c = e.insetBottom, l = n.height - a - c, h = i._data;
+if (e._rotated) {
+h[0].u = n.x;
+h[1].u = c + n.x;
+h[2].u = c + l + n.x;
+h[3].u = n.x + n.height;
+h[3].v = n.y;
+h[2].v = r + n.y;
+h[1].v = r + o + n.y;
+h[0].v = n.y + n.width;
+} else {
+h[0].u = n.x;
+h[1].u = r + n.x;
+h[2].u = r + o + n.x;
+h[3].u = n.x + n.width;
+h[3].v = n.y;
+h[2].v = a + n.y;
+h[1].v = a + l + n.y;
+h[0].v = n.y + n.height;
+}
+i.uvDirty = !1;
+},
+updateVerts: function(t) {
+var e = t._renderData, i = e._data, n = t.node, r = n.width, s = n.height, o = n.anchorX * r, a = n.anchorY * s, c = t.spriteFrame, l = (c._rect,
+c.insetLeft), h = c.insetRight, u = c.insetTop, _ = c.insetBottom, f = r - l - h, d = s - u - _, m = r / (l + h), p = s / (u + _);
+m = isNaN(m) || m > 1 ? 1 : m;
+p = isNaN(p) || p > 1 ? 1 : p;
+f = f < 0 ? 0 : f;
+d = d < 0 ? 0 : d;
+if (c._rotated) {
+i[0].y = -o;
+i[0].x = -a;
+i[1].y = h * m - o;
+i[1].x = _ * p - a;
+i[2].y = i[1].y + f;
+i[2].x = i[1].x + d;
+i[3].y = r - o;
+i[3].x = s - a;
+} else {
+i[0].x = -o;
+i[0].y = -a;
+i[1].x = l * m - o;
+i[1].y = _ * p - a;
+i[2].x = i[1].x + f;
+i[2].y = i[1].y + d;
+i[3].x = r - o;
+i[3].y = s - a;
+}
+e.vertDirty = !1;
+},
+draw: function(t, e) {
+var i = e.node, r = e._spriteFrame, s = i._worldMatrix, o = s.m00, a = s.m01, c = s.m04, l = s.m05, h = s.m12, u = s.m13;
+t.transform(o, a, c, l, h, u);
+t.scale(1, -1);
+r._rotated && t.rotate(-Math.PI / 2);
+n.context.setGlobalAlpha(t, i.opacity / 255);
+for (var _ = r._texture, f = e._renderData._data, d = n.getColorizedImage(_, i._color), m = 0, p = void 0, v = void 0, y = void 0, g = void 0, x = void 0, C = void 0, b = void 0, A = void 0, S = void 0, w = void 0, T = void 0, E = void 0, M = 0; M < 3; ++M) {
+g = f[M];
+y = f[M + 1];
+for (var B = 0; B < 3; ++B) {
+p = f[B];
+v = f[B + 1];
+x = p.x;
+C = g.y;
+b = v.x - x;
+C = -C - (A = y.y - C);
+S = p.u;
+w = y.v;
+T = v.u - S;
+E = g.v - w;
+if (T > 0 && E > 0 && b > 0 && A > 0) {
+t.drawImage(d, S, w, T, E, x, C, b, A);
+m++;
+}
+}
+}
+return m;
+}
+};
+e.exports = r;
+}), {
+"../utils": 243,
+"./simple": 240
+} ],
+242: [ (function(t, e, i) {
+"use strict";
+var n = t("../utils"), r = {
+createData: function(t) {
+return t.requestRenderData();
+},
+updateRenderData: function(t) {
+t._material || t._activateMaterial();
+},
+draw: function(t, e) {
+var i = e.node, r = i._worldMatrix, s = r.m00, o = r.m01, a = r.m04, c = r.m05, l = r.m12, h = r.m13;
+t.transform(s, o, a, c, l, h);
+t.scale(1, -1);
+n.context.setGlobalAlpha(t, i.opacity / 255);
+var u = e.spriteFrame, _ = u._rect, f = u._texture, d = _.x, m = _.y, p = u._rotated ? _.height : _.width, v = u._rotated ? _.width : _.height, y = n.getFrameCache(f, i._color, d, m, p, v), g = i.width, x = i.height, C = -i.anchorX * g, b = -i.anchorY * x;
+b = -b - x;
+t.translate(C, b);
+t.fillStyle = t.createPattern(y, "repeat");
+t.fillRect(0, 0, g, x);
+return 1;
+}
+};
+e.exports = r;
+}), {
+"../utils": 243
+} ],
+243: [ (function(t, e, i) {
+"use strict";
+function n(t, e, i, n, r, s, o) {
+var a = e._image, c = t.getContext("2d");
+t.width = s;
+t.height = o;
+c.globalCompositeOperation = "source-over";
+c.fillStyle = "rgb(" + i.r + "," + i.g + "," + i.b + ")";
+c.fillRect(0, 0, s, o);
+c.globalCompositeOperation = "multiply";
+c.drawImage(a, n, r, s, o, 0, 0, s, o);
+c.globalCompositeOperation = "destination-atop";
+c.drawImage(a, n, r, s, o, 0, 0, s, o);
+return t;
+}
+var r = {
+canvasMap: {},
+canvasUsed: {},
+canvasPool: [],
+checking: !1,
+check: function() {
+var t = !1;
+for (var e in this.canvasUsed) {
+t = !0;
+if (this.canvasUsed[e]) this.canvasUsed[e] = !1; else {
+var i = this.canvasMap[e];
+i.width = 0;
+i.height = 0;
+this.canvasPool.length < 32 && this.canvasPool.push(i);
+delete this.canvasMap[e];
+delete this.canvasUsed[e];
+}
+}
+if (!t) {
+cc.director.off(cc.Director.EVENT_AFTER_DRAW, this.check, this);
+this.checking = !1;
+}
+},
+startCheck: function() {
+cc.director.on(cc.Director.EVENT_AFTER_DRAW, this.check, this);
+this.checking = !0;
+},
+getCanvas: function(t) {
+this.canvasUsed[t] = !0;
+return this.canvasMap[t];
+},
+cacheCanvas: function(t, e) {
+this.canvasMap[e] = t;
+this.canvasUsed[e] = !0;
+this.checking || this.startCheck();
+},
+dropImage: function(t) {
+this.canvasMap[t] && delete this.canvasMap[t];
+}
+};
+e.exports = {
+getColorizedImage: function(t, e) {
+if (!t) return null;
+if (0 === t.width || 0 === t.height) return t._image;
+var i = 16777215 & e._val;
+if (16777215 === i) return t._image;
+var s = t.url + i, o = r.getCanvas(s);
+if (!o) {
+n(o = r.canvasPool.pop() || document.createElement("canvas"), t, e, 0, 0, t.width, t.height);
+r.cacheCanvas(o, s);
+}
+return o;
+},
+getFrameCache: function(t, e, i, s, o, a) {
+if (!t || !t.url || i < 0 || s < 0 || o <= 0 || a <= 0) return null;
+var c = t.url, l = !1, h = 16777215 & e._val;
+if (16777215 !== h) {
+c += h;
+l = !0;
+}
+if (0 !== i || 0 !== s && o !== t.width && a !== t.height) {
+c += "_" + i + "_" + s + "_" + o + "_" + a;
+l = !0;
+}
+if (!l) return t._image;
+var u = r.getCanvas(c);
+if (!u) {
+n(u = r.canvasPool.pop() || document.createElement("canvas"), t, e, i, s, o, a);
+r.cacheCanvas(u, c);
+}
+return u;
+},
+dropColorizedImage: function(t, e) {
+var i = t.url + (16777215 & e._val);
+r.dropImage(i);
+}
+};
+var s = -1, o = {
+setGlobalAlpha: function(t, e) {
+if (s !== e) {
+s = e;
+t.globalAlpha = s;
+}
+},
+reset: function() {
+s = -1;
+}
+};
+e.exports.context = o;
+}), {} ],
+244: [ (function(t, e, i) {
+"use strict";
+var n = h(t("../../renderer/renderers/forward-renderer")), r = h(t("../../renderer/config")), s = h(t("../../renderer/gfx")), o = h(t("../../renderer/scene/scene")), a = h(t("../../renderer/core/input-assembler")), c = h(t("../../renderer/render-data/ia-render-data")), l = h(t("../../renderer/core/pass"));
+function h(t) {
+return t && t.__esModule ? t : {
+default: t
+};
+}
+var u = t("./render-flow");
+function _(t) {
+return {
+defaultTexture: new s.default.Texture2D(t, {
+images: [],
+width: 128,
+height: 128,
+wrapS: s.default.WRAP_REPEAT,
+wrapT: s.default.WRAP_REPEAT,
+format: s.default.TEXTURE_FMT_RGB8,
+mipmap: !1
+})
+};
+}
+cc.renderer = e.exports = {
+Texture2D: null,
+InputAssembler: a.default,
+IARenderData: c.default,
+Pass: l.default,
+renderEngine: null,
+canvas: null,
+device: null,
+scene: null,
+drawCalls: 0,
+_handle: null,
+_cameraNode: null,
+_camera: null,
+_forward: null,
+initWebGL: function(e, i) {
+t("./webgl/assemblers");
+var a = t("./webgl/model-batcher");
+this.Texture2D = s.default.Texture2D;
+this.canvas = e;
+this.device = new s.default.Device(e, i);
+this.scene = new o.default();
+this._handle = new a(this.device, this.scene);
+u.init(this._handle);
+var c = _(this.device);
+this._forward = new n.default(this.device, c);
+r.default.addStage("shadowcast");
+r.default.addStage("opaque");
+r.default.addStage("transparent");
+},
+initCanvas: function(e) {
+var i = t("./canvas"), n = t("./canvas/Texture2D"), r = t("./canvas/Device");
+this.Device = r;
+this.Texture2D = n;
+this.canvas = e;
+this.device = new r(e);
+this._camera = {
+a: 1,
+b: 0,
+c: 0,
+d: 1,
+tx: 0,
+ty: 0
+};
+this._handle = new i.RenderComponentHandle(this.device, this._camera);
+u.init(this._handle);
+this._forward = new i.ForwardRenderer();
+},
+updateCameraViewport: function() {
+if (cc.director) {
+var t = cc.director.getScene();
+t && t.setScale(1, 1, 1);
+}
+if (cc.game.renderType === cc.game.RENDER_TYPE_CANVAS) {
+var e = cc.view.getViewportRect();
+this.device.setViewport(e.x, e.y, e.width, e.height);
+this._camera.a = cc.view.getScaleX();
+this._camera.d = cc.view.getScaleY();
+this._camera.tx = e.x;
+this._camera.ty = e.y + e.height;
+}
+},
+render: function(t) {
+this.device._stats.drawcalls = 0;
+if (t) {
+u.visit(t);
+this._forward.render(this.scene);
+this.drawCalls = this.device._stats.drawcalls;
+}
+},
+clear: function() {
+this._handle.reset();
+this._forward.clear();
+}
+};
+}), {
+"../../renderer/config": 336,
+"../../renderer/core/input-assembler": 339,
+"../../renderer/core/pass": 340,
+"../../renderer/gfx": 349,
+"../../renderer/render-data/ia-render-data": 368,
+"../../renderer/renderers/forward-renderer": 370,
+"../../renderer/scene/scene": 374,
+"./canvas": 230,
+"./canvas/Device": 227,
+"./canvas/Texture2D": 228,
+"./render-flow": 245,
+"./webgl/assemblers": 256,
+"./webgl/model-batcher": 281
+} ],
+245: [ (function(t, e, i) {
+"use strict";
+var n = 0, r = 1, s = 2, o = r | s, a = 4, c = 8, l = 16, h = 32, u = 64, _ = 128, f = 256, d = 512, m = void 0;
+function p() {
+this._func = b;
+this._next = null;
+}
+var v = p.prototype;
+v._doNothing = function() {};
+v._localTransform = function(t) {
+t._updateLocalMatrix();
+t._renderFlag &= ~r;
+this._next._func(t);
+};
+v._worldTransform = function(t) {
+m.worldMatDirty++;
+var e = t._matrix, i = t._position;
+e.m12 = i.x;
+e.m13 = i.y;
+e.m14 = i.z;
+t._mulMat(t._worldMatrix, t._parent._worldMatrix, e);
+t._renderFlag &= ~s;
+this._next._func(t);
+m.worldMatDirty--;
+};
+v._opacity = function(t) {
+m.parentOpacityDirty++;
+var e = t._renderComponent;
+e && e._updateColor && e._updateColor();
+t._renderFlag &= ~c;
+this._next._func(t);
+m.parentOpacityDirty--;
+};
+v._updateRenderData = function(t) {
+var e = t._renderComponent;
+e._assembler.updateRenderData(e);
+t._renderFlag &= ~a;
+this._next._func(t);
+};
+v._render = function(t) {
+var e = t._renderComponent;
+m._commitComp(e, e._assembler, t._cullingMask);
+this._next._func(t);
+};
+v._customIARender = function(t) {
+var e = t._renderComponent;
+m._commitIA(e, e._assembler, t._cullingMask);
+this._next._func(t);
+};
+v._children = function(t) {
+for (var e = m, i = e.parentOpacity, n = e.parentOpacity *= t._opacity / 255, r = (e.worldMatDirty ? s : 0) | (e.parentOpacityDirty ? c : 0), o = t._children, a = 0, l = o.length; a < l; a++) {
+var h = o[a];
+h._renderFlag |= r;
+if (h._activeInHierarchy && 0 !== h._opacity) {
+var u = h._color._val;
+h._color._fastSetA(h._opacity * n);
+g[h._renderFlag]._func(h);
+h._color._val = u;
+}
+}
+e.parentOpacity = i;
+this._next._func(t);
+};
+v._postUpdateRenderData = function(t) {
+var e = t._renderComponent;
+e._postAssembler && e._postAssembler.updateRenderData(e);
+t._renderFlag &= ~_;
+this._next._func(t);
+};
+v._postRender = function(t) {
+var e = t._renderComponent;
+m._commitComp(e, e._postAssembler, t._cullingMask);
+this._next._func(t);
+};
+var y = new p();
+y._func = y._doNothing;
+y._next = y;
+var g = {};
+function x(t, e) {
+var i = new p();
+i._next = e || y;
+switch (t) {
+case n:
+i._func = i._doNothing;
+break;
+
+case r:
+i._func = i._localTransform;
+break;
+
+case s:
+i._func = i._worldTransform;
+break;
+
+case c:
+i._func = i._opacity;
+break;
+
+case a:
+i._func = i._updateRenderData;
+break;
+
+case l:
+i._func = i._render;
+break;
+
+case h:
+i._func = i._customIARender;
+break;
+
+case u:
+i._func = i._children;
+break;
+
+case _:
+i._func = i._postUpdateRenderData;
+break;
+
+case f:
+i._func = i._postRender;
+}
+return i;
+}
+function C(t) {
+for (var e = null, i = d; i > 0; ) {
+i & t && (e = x(i, e));
+i >>= 1;
+}
+return e;
+}
+function b(t) {
+var e = t._renderFlag;
+(g[e] = C(e))._func(t);
+}
+p.flows = g;
+p.createFlow = x;
+p.visit = function(t) {
+m.reset();
+m.walking = !0;
+1 << t.groupIndex;
+if (t._renderFlag & s) {
+m.worldMatDirty++;
+t._calculWorldMatrix();
+t._renderFlag &= ~s;
+g[t._renderFlag]._func(t);
+m.worldMatDirty--;
+} else g[t._renderFlag]._func(t);
+m.terminate();
+m.walking = !1;
+};
+p.init = function(t) {
+m = t;
+g[0] = y;
+for (var e = 1; e < d; e++) g[e] = new p();
+};
+p.FLAG_DONOTHING = n;
+p.FLAG_LOCAL_TRANSFORM = r;
+p.FLAG_WORLD_TRANSFORM = s;
+p.FLAG_TRANSFORM = o;
+p.FLAG_OPACITY = c;
+p.FLAG_UPDATE_RENDER_DATA = a;
+p.FLAG_RENDER = l;
+p.FLAG_CUSTOM_IA_RENDER = h;
+p.FLAG_CHILDREN = u;
+p.FLAG_POST_UPDATE_RENDER_DATA = _;
+p.FLAG_POST_RENDER = f;
+p.FLAG_FINAL = d;
+e.exports = cc.RenderFlow = p;
+}), {} ],
+246: [ (function(t, e, i) {
+"use strict";
+var n = t("../../../assets/CCRenderTexture"), r = 2;
+function s(t, e) {
+var i = new n();
+i.initWithSize(t, e);
+i.update();
+this._texture = i;
+this._x = r;
+this._y = r;
+this._nexty = r;
+this._width = t;
+this._height = e;
+this._innerTextureInfos = {};
+this._innerSpriteFrames = [];
+}
+s.DEFAULT_HASH = new n()._getHash();
+cc.js.mixin(s.prototype, {
+insertSpriteFrame: function(t) {
+var e = t._rect, i = t._texture, n = this._innerTextureInfos[i._id], s = e.x, o = e.y;
+if (n) {
+s += n.x;
+o += n.y;
+} else {
+var a = i.width, c = i.height;
+if (this._x + a + r > this._width) {
+this._x = r;
+this._y = this._nexty;
+}
+this._y + c + r > this._nexty && (this._nexty = this._y + c + r);
+if (this._nexty > this._height) return null;
+this._texture.drawTextureAt(i, this._x - 1, this._y);
+this._texture.drawTextureAt(i, this._x + 1, this._y);
+this._texture.drawTextureAt(i, this._x, this._y - 1);
+this._texture.drawTextureAt(i, this._x, this._y + 1);
+this._texture.drawTextureAt(i, this._x, this._y);
+this._innerTextureInfos[i._id] = {
+x: this._x,
+y: this._y,
+texture: i
+};
+s += this._x;
+o += this._y;
+this._x += a + r;
+this._dirty = !0;
+}
+var l = {
+x: s,
+y: o,
+texture: this._texture
+};
+this._innerSpriteFrames.push(t);
+return l;
+},
+update: function() {
+if (this._dirty) {
+this._texture.update();
+this._dirty = !1;
+}
+},
+deleteInnerTexture: function(t) {
+t && delete this._innerTextureInfos[t._id];
+},
+reset: function() {
+this._x = r;
+this._y = r;
+this._nexty = r;
+for (var t = this._innerSpriteFrames, e = 0, i = t.length; e < i; e++) {
+var n = t[e];
+n.isValid && n._resetDynamicAtlasFrame();
+}
+this._innerSpriteFrames.length = 0;
+this._innerTextureInfos = {};
+},
+destroy: function() {
+this.reset();
+this._texture.destroy();
+}
+});
+e.exports = s;
+}), {
+"../../../assets/CCRenderTexture": 66
+} ],
+247: [ (function(t, e, i) {
+"use strict";
+var n = t("./atlas"), r = [], s = -1, o = 5, a = 2048, c = 8, l = 512;
+function h() {
+var t = r[++s];
+if (!t) {
+t = new n(a, a);
+r.push(t);
+}
+return t;
+}
+function u() {
+f.reset();
+}
+var _ = !1, f = {
+Atlas: n,
+get enabled() {
+return _;
+},
+set enabled(t) {
+if (_ !== t) {
+if (t) {
+this.reset();
+cc.director.on(cc.Director.EVENT_BEFORE_SCENE_LAUNCH, u);
+} else cc.director.off(cc.Director.EVENT_BEFORE_SCENE_LAUNCH, u);
+_ = t;
+}
+},
+get maxAtlasCount() {
+return o;
+},
+set maxAtlasCount(t) {
+o = t;
+},
+get textureSize() {
+return a;
+},
+set textureSize(t) {
+a = t;
+},
+get maxFrameSize() {
+return l;
+},
+set maxFrameSize(t) {
+l = t;
+},
+get minFrameSize() {
+return c;
+},
+set minFrameSize(t) {
+c = t;
+},
+insertSpriteFrame: function(t) {
+0;
+if (!_ || s === o || !t || t._original) return null;
+if (!t._texture.packable) return null;
+var e = r[s];
+e || (e = h());
+var i = e.insertSpriteFrame(t);
+return i || s === o ? i : (e = h()).insertSpriteFrame(t);
+},
+reset: function() {
+for (var t = 0, e = r.length; t < e; t++) r[t].destroy();
+r.length = 0;
+s = -1;
+},
+deleteAtlasTexture: function(t) {
+if (t._original) {
+var e = t._original._texture;
+if (e) for (var i = 0, n = r.length; i < n; i++) r[i].deleteInnerTexture(e);
+}
+},
+showDebug: !1,
+update: function() {
+if (this.enabled) for (var t = 0; t <= s; t++) r[t].update();
+}
+};
+e.exports = cc.dynamicAtlasManager = f;
+}), {
+"./atlas": 246
+} ],
+248: [ (function(t, e, i) {
+"use strict";
+var n, r = t("../../../platform/CCMacro"), s = t("../../../components/CCLabel").Overflow, o = t("../../../utils/text-utils"), a = t("../utils").shareLabelInfo, c = function() {
+this.char = "";
+this.valid = !0;
+this.x = 0;
+this.y = 0;
+this.line = 0;
+this.hash = "";
+}, l = cc.rect(), h = null, u = [], _ = [], f = [], d = [], m = [], p = [], v = null, y = 0, g = 0, x = 0, C = 0, b = 0, A = 1, S = null, w = cc.size(), T = "", E = 0, M = 0, B = 0, D = 0, I = 0, P = 0, R = 0, L = !1, F = 0, O = 0, V = 0;
+e.exports = ((n = {
+updateRenderData: function(t) {
+if (t._renderData.vertDirty && h !== t) {
+h = t;
+this._updateFontFamily(t);
+this._updateProperties(t);
+this._updateLabelInfo(t);
+this._updateContent();
+h._actualFontSize = E;
+h.node.setContentSize(w);
+h._renderData.vertDirty = h._renderData.uvDirty = !1;
+h = null;
+this._resetProperties();
+}
+},
+_updateFontScale: function() {
+A = E / M;
+},
+_updateFontFamily: function(t) {
+var e = t.font;
+S = e.spriteFrame;
+v = e._fntConfig;
+a.fontAtlas = e._fontDefDictionary;
+},
+_updateLabelInfo: function() {
+a.hash = "";
+a.margin = 0;
+},
+_updateProperties: function(t) {
+T = t.string.toString();
+E = t.fontSize;
+M = v ? v.fontSize : t.fontSize;
+B = t.horizontalAlign;
+D = t.verticalAlign;
+I = t.spacingX;
+R = t.overflow;
+P = t._lineHeight;
+w.width = h.node.width;
+w.height = h.node.height;
+if (R === s.NONE) {
+L = !1;
+w.width += 2 * a.margin;
+w.height += 2 * a.margin;
+} else if (R === s.RESIZE_HEIGHT) {
+L = !0;
+w.height += 2 * a.margin;
+} else L = t.enableWrapText;
+a.lineHeight = P;
+a.fontSize = E;
+this._setupBMFontOverflowMetrics();
+},
+_resetProperties: function() {
+v = null;
+S = null;
+a.hash = "";
+a.margin = 0;
+},
+_updateContent: function() {
+this._updateFontScale();
+this._computeHorizontalKerningForText();
+this._computeVerticalKerningForText();
+this._alignText();
+},
+_computeHorizontalKerningForText: function() {
+for (var t = T, e = t.length, i = v.kerningDict, n = u, r = -1, s = 0; s < e; ++s) {
+var o = t.charCodeAt(s), a = i[r << 16 | 65535 & o] || 0;
+n[s] = s < e - 1 ? a : 0;
+r = o;
+}
+},
+_computeVerticalKerningForText: function() {
+var t = T, e = t.length;
+if (v && v.kerningVDict) for (var i = v.kerningVDict, n = _, r = f, s = -1, o = 0; o < e; ++o) {
+var a = t.charCodeAt(o), c = i[s << 16 | 65535 & a] || 0, l = i[a << 16 | 65535 & s] || 0;
+if (o < e - 1) {
+n[o] = c;
+r[o] = l;
+} else {
+n[o] = 0;
+r[o] = 0;
+}
+s = a;
+}
+},
+_multilineTextWrap: function(t) {
+for (var e = T.length, i = 0, n = 0, r = 0, s = 0, c = 0, l = 0, h = 0, d = null, p = cc.v2(0, 0), x = 0; x < e; ) {
+var S = T.charAt(x);
+if ("\n" !== S) {
+for (var E = t(T, x, e), M = l, B = h, D = c, R = n, N = !1, k = 0; k < E; ++k) {
+var z = x + k;
+if ("\r" !== (S = T.charAt(z))) if (d = a.fontAtlas.getLetterDefinitionForChar(S, a)) {
+var G = R + d.offsetX * A - a.margin;
+if (L && V > 0 && n > 0 && G + d.w * A > V && !o.isUnicodeSpace(S)) {
+m.push(c);
+c = 0;
+i++;
+n = 0;
+r -= P * A + 0;
+N = !0;
+break;
+}
+p.x = G;
+var U = 0, j = 0;
+if (v && v.kerningVDict) {
+z < _.length && z < e && (U = _[z] * A);
+z + 1 < f.length && z < e - 1 && (j = f[z + 1] * A);
+}
+p.y = r - d.offsetY * A + a.margin + U + j;
+this._recordLetterInfo(p, S, z, i);
+z + 1 < u.length && z < e - 1 && (R += u[z + 1]);
+R += d.xAdvance * A + I - 2 * a.margin;
+D = p.x + d.w * A - a.margin;
+M < p.y && (M = p.y);
+B > p.y - d.h * A && (B = p.y - d.h * A);
+} else {
+this._recordPlaceholderInfo(z, S);
+console.log("Can't find letter definition in texture atlas " + v.atlasName + " for letter:" + S);
+} else this._recordPlaceholderInfo(z, S);
+}
+if (!N) {
+n = R;
+c = D;
+l < M && (l = M);
+h > B && (h = B);
+s < c && (s = c);
+x += E;
+}
+} else {
+m.push(c);
+c = 0;
+i++;
+n = 0;
+r -= P * A + 0;
+this._recordPlaceholderInfo(x, S);
+x++;
+}
+}
+m.push(c);
+g = (y = i + 1) * P * A;
+y > 1 && (g += 0 * (y - 1));
+w.width = F;
+w.height = O;
+F <= 0 && (w.width = parseFloat(s.toFixed(2)) + 2 * a.margin);
+O <= 0 && (w.height = parseFloat(g.toFixed(2)) + 2 * a.margin);
+C = w.height;
+b = 0;
+l > 0 && (C = w.height + l);
+h < -g && (b = g + h);
+return !0;
+},
+_getFirstCharLen: function() {
+return 1;
+},
+_getFirstWordLen: function(t, e, i) {
+var n = t.charAt(e);
+if (o.isUnicodeCJK(n) || "\n" === n || o.isUnicodeSpace(n)) return 1;
+var r = 1, s = a.fontAtlas.getLetterDefinitionForChar(n, a);
+if (!s) return r;
+for (var c = s.xAdvance * A + I, l = e + 1; l < i; ++l) {
+n = t.charAt(l);
+if (!(s = a.fontAtlas.getLetterDefinitionForChar(n, a))) break;
+if (c + s.offsetX * A + s.w * A > V && !o.isUnicodeSpace(n) && V > 0) return r;
+c += s.xAdvance * A + I;
+if ("\n" === n || o.isUnicodeSpace(n) || o.isUnicodeCJK(n)) break;
+r++;
+}
+return r;
+},
+_multilineTextWrapByWord: function() {
+return this._multilineTextWrap(this._getFirstWordLen);
+},
+_multilineTextWrapByChar: function() {
+return this._multilineTextWrap(this._getFirstCharLen);
+},
+_recordPlaceholderInfo: function(t, e) {
+if (t >= d.length) {
+var i = new c();
+d.push(i);
+}
+d[t].char = e;
+d[t].hash = e.charCodeAt(0) + a.hash;
+d[t].valid = !1;
+},
+_recordLetterInfo: function(t, e, i, n) {
+if (i >= d.length) {
+var r = new c();
+d.push(r);
+}
+var s = e.charCodeAt(0) + a.hash;
+d[i].line = n;
+d[i].char = e;
+d[i].hash = s;
+d[i].valid = a.fontAtlas.getLetter(s).valid;
+d[i].x = t.x;
+d[i].y = t.y;
+},
+_alignText: function() {
+g = 0;
+m.length = 0;
+this._multilineTextWrapByWord();
+this._computeAlignmentOffset();
+R === s.SHRINK && E > 0 && this._isVerticalClamp() && this._shrinkLabelToContentSize(this._isVerticalClamp);
+this._updateQuads() || R === s.SHRINK && this._shrinkLabelToContentSize(this._isHorizontalClamp);
+},
+_scaleFontSizeDown: function(t) {
+var e = !0;
+if (!t) {
+t = .1;
+e = !1;
+}
+E = t;
+e && this._updateContent();
+},
+_shrinkLabelToContentSize: function(t) {
+for (var e = E, i = 0, n = !0; t(); ) {
+var r = e - ++i;
+n = !1;
+if (r <= 0) break;
+A = r / M;
+this._multilineTextWrapByWord();
+this._computeAlignmentOffset();
+}
+n || e - i >= 0 && this._scaleFontSizeDown(e - i);
+},
+_isVerticalClamp: function() {
+return g > w.height;
+},
+_isHorizontalClamp: function() {
+for (var t = !1, e = 0, i = T.length; e < i; ++e) {
+var n = d[e];
+if (n.valid) {
+var r = a.fontAtlas.getLetter(n.hash), s = n.x + r.w * A, o = n.line;
+if (F > 0) if (L) {
+if (m[o] > w.width && (s > w.width || s < 0)) {
+t = !0;
+break;
+}
+} else if (s > w.width) {
+t = !0;
+break;
+}
+}
+}
+return t;
+},
+_isHorizontalClamped: function(t, e) {
+var i = m[e], n = t > w.width || t < 0;
+return L ? i > w.width && n : n;
+},
+_updateQuads: function() {
+var t = a.fontAtlas.getTexture(), e = h.node, i = h._renderData;
+i.dataLength = i.vertexCount = i.indiceCount = 0;
+for (var n = w, r = e._anchorPoint.x * n.width, o = e._anchorPoint.y * n.height, c = !0, u = 0, _ = T.length; u < _; ++u) {
+var f = d[u];
+if (f.valid) {
+var m = a.fontAtlas.getLetter(f.hash);
+l.height = m.h;
+l.width = m.w;
+l.x = m.u;
+l.y = m.v;
+var v = f.y + x;
+if (O > 0) {
+if (v > C) {
+var y = v - C;
+l.y += y;
+l.height -= y;
+v -= y;
+}
+v - m.h * A < b && R === s.CLAMP && (l.height = v < b ? 0 : v - b);
+}
+var g = f.line, S = f.x + m.w / 2 * A + p[g];
+if (F > 0 && this._isHorizontalClamped(S, g)) if (R === s.CLAMP) l.width = 0; else if (R === s.SHRINK) {
+if (w.width > m.w) {
+c = !1;
+break;
+}
+l.width = 0;
+}
+if (l.height > 0 && l.width > 0) {
+var E = this._determineRect(l), M = f.x + p[f.line];
+this.appendQuad(i, t, l, E, M - r, v - o, A);
+}
+}
+}
+return c;
+},
+appendQuad: function(t, e, i, n, r, s, o) {},
+_determineRect: function(t) {
+var e = S.isRotated(), i = S._originalSize, n = S._rect, r = S._offset, s = r.x + (i.width - n.width) / 2, o = r.y - (i.height - n.height) / 2;
+if (e) {
+var a = t.x;
+t.x = n.x + n.height - t.y - t.height - o;
+t.y = a + n.y - s;
+t.y < 0 && (t.height = t.height + o);
+} else {
+t.x += n.x - s;
+t.y += n.y + o;
+}
+return e;
+},
+_computeAlignmentOffset: function() {
+p.length = 0;
+switch (B) {
+case r.TextAlignment.LEFT:
+for (var t = 0; t < y; ++t) p.push(0);
+break;
+
+case r.TextAlignment.CENTER:
+for (var e = 0, i = m.length; e < i; e++) p.push((w.width - m[e]) / 2);
+break;
+
+case r.TextAlignment.RIGHT:
+for (var n = 0, s = m.length; n < s; n++) p.push(w.width - m[n]);
+}
+x = (w.height + g) / 2;
+if (D !== r.VerticalTextAlignment.TOP) {
+var o = (P - M) * A;
+D === r.VerticalTextAlignment.BOTTOM ? x -= o : x -= o / 2;
+}
+},
+_setupBMFontOverflowMetrics: function() {
+var t = w.width, e = w.height;
+R === s.RESIZE_HEIGHT && (e = 0);
+if (R === s.NONE) {
+t = 0;
+e = 0;
+}
+F = t;
+O = e;
+V = t;
+}
+}).appendQuad = function(t, e, i, n, r, s, o) {}, n);
+}), {
+"../../../components/CCLabel": 97,
+"../../../platform/CCMacro": 206,
+"../../../utils/text-utils": 303,
+"../utils": 252
+} ],
+249: [ (function(t, e, i) {
+"use strict";
+function n() {
+this._rect = null;
+this.uv = [];
+this._texture = null;
+this._original = null;
+}
+n.prototype = {
+constructor: n,
+getRect: function() {
+return cc.rect(this._rect);
+},
+setRect: function(t) {
+this._rect = t;
+this._texture && this._calculateUV();
+},
+_setDynamicAtlasFrame: function(t) {
+if (t) {
+this._original = {
+_texture: this._texture,
+_x: this._rect.x,
+_y: this._rect.y
+};
+this._texture = t.texture;
+this._rect.x = t.x;
+this._rect.y = t.y;
+this._calculateUV();
+}
+},
+_resetDynamicAtlasFrame: function() {
+if (this._original) {
+this._rect.x = this._original._x;
+this._rect.y = this._original._y;
+this._texture = this._original._texture;
+this._original = null;
+this._calculateUV();
+}
+},
+_refreshTexture: function(t) {
+this._texture = t;
+this._rect = cc.rect(0, 0, t.width, t.height);
+this._calculateUV();
+},
+_calculateUV: function() {
+var t = this._rect, e = this._texture, i = this.uv, n = e.width, r = e.height, s = 0 === n ? 0 : t.x / n, o = 0 === n ? 0 : (t.x + t.width) / n, a = 0 === r ? 0 : (t.y + t.height) / r, c = 0 === r ? 0 : t.y / r;
+i[0] = s;
+i[1] = a;
+i[2] = o;
+i[3] = a;
+i[4] = s;
+i[5] = c;
+i[6] = o;
+i[7] = c;
+}
+};
+e.exports = n;
+}), {} ],
+250: [ (function(t, e, i) {
+"use strict";
+var n = t("../../../platform/js"), r = t("./bmfont"), s = t("../../../components/CCLabel"), o = t("../../../components/CCLabelOutline"), a = t("../../../utils/text-utils"), c = t("../../../components/CCComponent"), l = t("../../../assets/CCRenderTexture"), h = cc.js.isChildClassOf(o, c), u = t("../utils").getFontFamily, _ = t("../utils").shareLabelInfo, f = cc.BitmapFont.FontLetterDefinition, d = cc.BitmapFont.FontAtlas, m = cc.Color.WHITE, p = 2, v = (1 / 255).toFixed(3);
+function y(t, e) {
+this._texture = null;
+this._labelInfo = e;
+this._char = t;
+this._hash = null;
+this._data = null;
+this._canvas = null;
+this._context = null;
+this._width = 0;
+this._height = 0;
+this._offsetY = 0;
+this._hash = t.charCodeAt(0) + e.hash;
+}
+y.prototype = {
+constructor: y,
+updateRenderData: function() {
+this._updateProperties();
+this._updateTexture();
+},
+_updateProperties: function() {
+this._texture = new cc.Texture2D();
+this._data = s._canvasPool.get();
+this._canvas = this._data.canvas;
+this._context = this._data.context;
+this._context.font = this._labelInfo.fontDesc;
+var t = a.safeMeasureText(this._context, this._char);
+this._width = parseFloat(t.toFixed(2)) + 2 * this._labelInfo.margin;
+this._height = (1 + a.BASELINE_RATIO) * this._labelInfo.fontSize + 2 * this._labelInfo.margin;
+this._offsetY = -this._labelInfo.fontSize * a.BASELINE_RATIO / 2;
+this._canvas.width !== this._width && (this._canvas.width = this._width);
+this._canvas.height !== this._height && (this._canvas.height = this._height);
+this._texture.initWithElement(this._canvas);
+},
+_updateTexture: function() {
+var t = this._context, e = this._labelInfo, i = this._canvas.width, n = this._canvas.height, r = i / 2, s = n / 2 + this._labelInfo.fontSize * a.MIDDLE_RATIO, o = e.color;
+t.textAlign = "center";
+t.textBaseline = "alphabetic";
+t.clearRect(0, 0, i, n);
+t.fillStyle = "rgba(" + o.r + ", " + o.g + ", " + o.b + ", " + v + ")";
+t.fillRect(0, 0, i, n);
+t.font = e.fontDesc;
+t.lineJoin = "round";
+t.fillStyle = "rgba(" + o.r + ", " + o.g + ", " + o.b + ", 1)";
+if (e.isOutlined) {
+var c = e.out || m;
+t.strokeStyle = "rgba(" + c.r + ", " + c.g + ", " + c.b + ", " + c.a / 255 + ")";
+t.lineWidth = 2 * e.margin;
+t.strokeText(this._char, r, s);
+}
+t.fillText(this._char, r, s);
+this._texture.handleLoadedTexture();
+},
+destroy: function() {
+this._texture.destroy();
+this._texture = null;
+s._canvasPool.put(this._data);
+}
+};
+function g(t, e) {
+var i = new l();
+i.initWithSize(t, e);
+i.update();
+this._fontDefDictionary = new d(i);
+this._x = p;
+this._y = p;
+this._nexty = p;
+this._width = t;
+this._height = e;
+cc.director.on(cc.Director.EVENT_BEFORE_SCENE_LAUNCH, this.beforeSceneLoad, this);
+}
+cc.js.mixin(g.prototype, {
+insertLetterTexture: function(t) {
+var e = t._texture, i = e.width, n = e.height;
+if (this._x + i + p > this._width) {
+this._x = p;
+this._y = this._nexty;
+}
+this._y + n > this._nexty && (this._nexty = this._y + n + p);
+if (this._nexty > this._height) return null;
+this._fontDefDictionary._texture.drawTextureAt(e, this._x, this._y);
+this._dirty = !0;
+var r = new f();
+r.u = this._x;
+r.v = this._y;
+r.texture = this._fontDefDictionary._texture;
+r.valid = !0;
+r.w = t._width;
+r.h = t._height;
+r.xAdvance = t._width;
+r.offsetY = t._offsetY;
+this._x += i + p;
+this._fontDefDictionary.addLetterDefinitions(t._hash, r);
+return r;
+},
+update: function() {
+if (this._dirty) {
+this._fontDefDictionary._texture.update();
+this._dirty = !1;
+}
+},
+reset: function() {
+this._x = p;
+this._y = p;
+this._nexty = p;
+for (var t = this._fontDefDictionary._letterDefinitions, e = 0, i = t.length; e < i; e++) {
+var n = t[e];
+n.isValid && n.destroy();
+}
+this._fontDefDictionary.clear();
+},
+destroy: function() {
+this.reset();
+this._fontDefDictionary._texture.destroy();
+},
+beforeSceneLoad: function() {
+this.destroy();
+var t = new l();
+t.initWithSize(this._width, this._height);
+t.update();
+this._fontDefDictionary._texture = t;
+},
+getLetter: function(t) {
+return this._fontDefDictionary._letterDefinitions[t];
+},
+getTexture: function() {
+return this._fontDefDictionary.getTexture();
+},
+getLetterDefinitionForChar: function(t, e) {
+var i = t.charCodeAt(0) + e.hash, n = this._fontDefDictionary._letterDefinitions[i];
+if (!n) {
+var r = new y(t, e);
+r.updateRenderData();
+n = this.insertLetterTexture(r);
+r.destroy();
+}
+return n;
+}
+});
+function x(t) {
+var e = t.color.toHEX("#rrggbb"), i = "";
+t.isOutlined && (i = i + t.margin + t.out.toHEX("#rrggbb"));
+return "" + t.fontSize + t.fontFamily + e + i;
+}
+var C = null;
+e.exports = n.addon({
+_getAssemblerData: function() {
+C || (C = new g(2048, 2048));
+return C.getTexture();
+},
+_updateFontFamily: function(t) {
+_.fontAtlas = C;
+_.fontFamily = u(t);
+var e = h && t.getComponent(o);
+if (e && e.enabled) {
+_.isOutlined = !0;
+_.margin = e.width;
+_.out = e.color;
+_.out.a = e.color.a * t.node.color.a / 255;
+} else {
+_.isOutlined = !1;
+_.margin = 0;
+}
+},
+_updateLabelInfo: function(t) {
+_.fontDesc = this._getFontDesc();
+_.color = t.node.color;
+_.hash = x(_);
+},
+_getFontDesc: function() {
+var t = _.fontSize.toString() + "px ";
+0;
+return t += _.fontFamily;
+},
+_computeHorizontalKerningForText: function() {},
+_determineRect: function(t) {
+return !1;
+}
+}, r);
+}), {
+"../../../assets/CCRenderTexture": 66,
+"../../../components/CCComponent": 95,
+"../../../components/CCLabel": 97,
+"../../../components/CCLabelOutline": 98,
+"../../../platform/js": 221,
+"../../../utils/text-utils": 303,
+"../utils": 252,
+"./bmfont": 248
+} ],
+251: [ (function(t, e, i) {
+"use strict";
+var n = t("../../../platform/CCMacro"), r = t("../../../utils/text-utils"), s = t("../../../components/CCLabel"), o = t("../../../components/CCLabelOutline"), a = t("../../../components/CCLabelShadow"), c = s.Overflow, l = t("../utils").packToDynamicAtlas, h = t("../utils").deleteFromDynamicAtlas, u = t("../utils").getFontFamily, _ = (1 / 255).toFixed(3), f = null, d = null, m = null, p = "", v = "", y = 0, g = 0, x = [], C = cc.Size.ZERO, b = 0, A = 0, S = 0, w = null, T = "", E = c.NONE, M = !1, B = null, D = cc.Color.WHITE, I = null, P = cc.Color.BLACK, R = cc.rect(), L = cc.Size.ZERO, F = cc.Size.ZERO, O = !1, V = !1, N = !1, k = 0, z = cc.Vec2.ZERO, G = 0, U = void 0;
+e.exports = {
+_getAssemblerData: function() {
+(U = s._canvasPool.get()).canvas.width = U.canvas.height = 1;
+return U;
+},
+_resetAssemblerData: function(t) {
+t && s._canvasPool.put(t);
+},
+updateRenderData: function(t) {
+if (t._renderData.vertDirty) {
+this._updateFontFamily(t);
+this._updateProperties(t);
+this._calculateLabelFont();
+this._calculateSplitedStrings();
+this._updateLabelDimensions();
+this._calculateTextBaseline();
+this._updateTexture(t);
+this._calDynamicAtlas(t);
+t._actualFontSize = y;
+t.node.setContentSize(F);
+this._updateVerts(t);
+t._renderData.vertDirty = t._renderData.uvDirty = !1;
+f = null;
+d = null;
+m = null;
+}
+},
+_updateVerts: function() {},
+_updatePaddingRect: function() {
+var t = 0, e = 0, i = 0, n = 0, r = 0;
+L.width = L.height = 0;
+if (B) {
+t = e = i = n = r = B.width;
+L.width = L.height = 2 * r;
+}
+if (I) {
+var s = I.blur + r;
+i = Math.max(i, -I._offset.x + s);
+n = Math.max(n, I._offset.x + s);
+t = Math.max(t, I._offset.y + s);
+e = Math.max(e, -I._offset.y + s);
+}
+if (V) {
+var o = g * Math.tan(.20943951);
+n += o;
+L.width += o;
+}
+R.x = i;
+R.y = t;
+R.width = i + n;
+R.height = t + e;
+},
+_updateFontFamily: function(t) {
+T = u(t);
+},
+_updateProperties: function(t) {
+var e = t._assemblerData;
+f = e.context;
+d = e.canvas;
+m = t._frame._original ? t._frame._original._texture : t._frame._texture;
+v = t.string.toString();
+y = t._fontSize;
+k = (g = y) / 8;
+E = t.overflow;
+C.width = t.node.width;
+C.height = t.node.height;
+F = t.node.getContentSize();
+b = t._lineHeight;
+A = t.horizontalAlign;
+S = t.verticalAlign;
+w = t.node.color;
+O = t._isBold;
+V = t._isItalic;
+N = t._isUnderline;
+M = E !== c.NONE && (E === c.RESIZE_HEIGHT || t.enableWrapText);
+(B = (B = o && t.getComponent(o)) && B.enabled && B.width > 0 ? B : null) && D.set(B.color);
+if (I = (I = a && t.getComponent(a)) && I.enabled ? I : null) {
+P.set(I.color);
+P.a = P.a * t.node.color.a / 255;
+}
+this._updatePaddingRect();
+},
+_calculateFillTextStartPosition: function() {
+var t = 0;
+A === n.TextAlignment.RIGHT ? t = C.width - R.width : A === n.TextAlignment.CENTER && (t = (C.width - R.width) / 2);
+var e = 0, i = this._getLineHeight() * (x.length - 1);
+e = S === n.VerticalTextAlignment.TOP ? y : S === n.VerticalTextAlignment.CENTER ? .5 * (C.height - i) + y * r.MIDDLE_RATIO - R.height / 2 : C.height - i - y * r.BASELINE_RATIO - R.height;
+return cc.v2(t + R.x, e + R.y);
+},
+_setupOutline: function() {
+f.strokeStyle = "rgba(" + D.r + ", " + D.g + ", " + D.b + ", " + D.a / 255 + ")";
+f.lineWidth = 2 * B.width;
+},
+_setupShadow: function() {
+f.shadowColor = "rgba(" + P.r + ", " + P.g + ", " + P.b + ", " + P.a / 255 + ")";
+f.shadowBlur = I.blur;
+f.shadowOffsetX = I.offset.x;
+f.shadowOffsetY = -I.offset.y;
+},
+_drawUnderline: function(t) {
+if (B) {
+this._setupOutline();
+f.strokeRect(z.x, z.y, t, k);
+}
+f.lineWidth = k;
+f.fillStyle = "rgba(" + w.r + ", " + w.g + ", " + w.b + ", " + w.a / 255 + ")";
+f.fillRect(z.x, z.y, t, k);
+},
+_updateTexture: function() {
+f.clearRect(0, 0, d.width, d.height);
+var t = B ? D : w;
+f.fillStyle = "rgba(" + t.r + ", " + t.g + ", " + t.b + ", " + _ + ")";
+f.fillRect(0, 0, d.width, d.height);
+f.font = p;
+var e = this._calculateFillTextStartPosition(), i = this._getLineHeight();
+f.lineJoin = "round";
+f.fillStyle = "rgba(" + w.r + ", " + w.g + ", " + w.b + ", 1)";
+var r = x.length > 1, s = this._measureText(f), o = 0, a = 0;
+I && this._setupShadow();
+B && this._setupOutline();
+for (var c = 0; c < x.length; ++c) {
+o = e.x;
+a = e.y + c * i;
+if (I && r) {
+B && f.strokeText(x[c], o, a);
+f.fillText(x[c], o, a);
+}
+if (N) {
+G = s(x[c]);
+A === n.TextAlignment.RIGHT ? z.x = e.x - G : A === n.TextAlignment.CENTER ? z.x = e.x - G / 2 : z.x = e.x;
+z.y = a;
+this._drawUnderline(G);
+}
+}
+I && r && (f.shadowColor = "transparent");
+for (var l = 0; l < x.length; ++l) {
+o = e.x;
+a = e.y + l * i;
+B && f.strokeText(x[l], o, a);
+f.fillText(x[l], o, a);
+}
+I && (f.shadowColor = "transparent");
+m.handleLoadedTexture();
+},
+_calDynamicAtlas: function(t) {
+if (t.cacheMode === s.CacheMode.BITMAP) {
+var e = t._frame;
+h(t, e);
+e._original || e.setRect(cc.rect(0, 0, d.width, d.height));
+l(t, e);
+}
+},
+_updateLabelDimensions: function() {
+var t = v.split("\n");
+if (E === c.RESIZE_HEIGHT) {
+var e = (x.length + r.BASELINE_RATIO) * this._getLineHeight();
+C.height = e + R.height;
+F.height = e + L.height;
+} else if (E === c.NONE) {
+x = t;
+for (var i = 0, n = 0, s = 0; s < t.length; ++s) {
+var o = r.safeMeasureText(f, t[s]);
+i = i > o ? i : o;
+}
+n = (x.length + r.BASELINE_RATIO) * this._getLineHeight();
+var a = parseFloat(i.toFixed(2)), l = parseFloat(n.toFixed(2));
+C.width = a + R.width;
+C.height = l + R.height;
+F.width = a + L.width;
+F.height = l + L.height;
+}
+C.width = Math.min(C.width, 2048);
+C.height = Math.min(C.height, 2048);
+d.width !== C.width && (d.width = C.width);
+d.height !== C.height && (d.height = C.height);
+},
+_calculateTextBaseline: function() {
+this._node;
+var t = void 0;
+t = A === n.TextAlignment.RIGHT ? "right" : A === n.TextAlignment.CENTER ? "center" : "left";
+f.textAlign = t;
+f.textBaseline = "alphabetic";
+},
+_calculateSplitedStrings: function() {
+var t = v.split("\n");
+if (M) {
+x = [];
+for (var e = F.width, i = 0; i < t.length; ++i) {
+var n = r.safeMeasureText(f, t[i]), s = r.fragmentText(t[i], n, e, this._measureText(f));
+x = x.concat(s);
+}
+} else x = t;
+},
+_getFontDesc: function() {
+var t = y.toString() + "px ";
+t += T;
+O && (t = "bold " + t);
+V && (t = "italic " + t);
+return t;
+},
+_getLineHeight: function() {
+var t = b;
+return 0 | (t = 0 === t ? y : t * y / g);
+},
+_calculateParagraphLength: function(t, e) {
+for (var i = [], n = 0; n < t.length; ++n) {
+var s = r.safeMeasureText(e, t[n]);
+i.push(s);
+}
+return i;
+},
+_measureText: function(t) {
+return function(e) {
+return r.safeMeasureText(t, e);
+};
+},
+_calculateLabelFont: function() {
+p = this._getFontDesc();
+f.font = p;
+if (E === c.SHRINK) {
+var t = v.split("\n"), e = this._calculateParagraphLength(t, f), i = 0, n = 0, s = 0;
+if (M) {
+var o = F.width, a = F.height;
+if (o < 0 || a < 0) {
+p = this._getFontDesc();
+f.font = p;
+return;
+}
+n = a + 1;
+s = o + 1;
+for (var l = y + 1, h = "", u = !0, _ = 0 | l; n > a || s > o; ) {
+u ? l = _ / 2 | 0 : _ = l = _ - 1;
+if (l <= 0) {
+cc.logID(4003);
+break;
+}
+y = l;
+p = this._getFontDesc();
+f.font = p;
+n = 0;
+for (i = 0; i < t.length; ++i) {
+var d = 0, m = r.safeMeasureText(f, t[i]);
+h = r.fragmentText(t[i], m, o, this._measureText(f));
+for (;d < h.length; ) {
+s = r.safeMeasureText(f, h[d]);
+n += this._getLineHeight();
+++d;
+}
+}
+if (u) if (n > a) _ = 0 | l; else {
+u = !1;
+n = a + 1;
+}
+}
+} else {
+n = t.length * this._getLineHeight();
+for (i = 0; i < t.length; ++i) s < e[i] && (s = e[i]);
+var x = (C.width - R.width) / s, b = C.height / n;
+y = g * Math.min(1, x, b) | 0;
+p = this._getFontDesc();
+f.font = p;
+}
+}
+}
+};
+}), {
+"../../../components/CCLabel": 97,
+"../../../components/CCLabelOutline": 98,
+"../../../components/CCLabelShadow": 99,
+"../../../platform/CCMacro": 206,
+"../../../utils/text-utils": 303,
+"../utils": 252
+} ],
+252: [ (function(t, e, i) {
+"use strict";
+var n = t("./dynamic-atlas/manager"), r = cc.Color.WHITE, s = {
+fontAtlas: null,
+fontSize: 0,
+lineHeight: 0,
+hAlign: 0,
+vAlign: 0,
+hash: "",
+fontFamily: "",
+fontDesc: "Arial",
+color: r,
+isOutlined: !1,
+out: r,
+margin: 0
+};
+e.exports = {
+packToDynamicAtlas: function(t, e) {
+if (e) {
+if (!e._original && n) {
+var i = n.insertSpriteFrame(e);
+i && e._setDynamicAtlasFrame(i);
+}
+t.sharedMaterials[0].getProperty("texture") !== e._texture && t._activateMaterial(!0);
+}
+},
+deleteFromDynamicAtlas: function(t, e) {
+if (e && e._original && n) {
+n.deleteAtlasTexture(e);
+e._resetDynamicAtlasFrame();
+}
+},
+getFontFamily: function(t) {
+if (t.useSystemFont) return t.fontFamily;
+if (t.font) {
+if (t.font._nativeAsset) return t.font._nativeAsset;
+cc.loader.load(t.font.nativeUrl, (function(e, i) {
+t.font._nativeAsset = i;
+t._updateRenderData(!0);
+}));
+return "Arial";
+}
+return "Arial";
+},
+shareLabelInfo: s
+};
+}), {
+"./dynamic-atlas/manager": 247
+} ],
+253: [ (function(t, e, i) {
+"use strict";
+e.exports = n;
+function n(t, e, i) {
+i = i || 2;
+var n, s, a, c, l, h, _, f = e && e.length, d = f ? e[0] * i : t.length, m = r(t, 0, d, i, !0), p = [];
+if (!m) return p;
+f && (m = u(t, e, m, i));
+if (t.length > 80 * i) {
+n = a = t[0];
+s = c = t[1];
+for (var v = i; v < d; v += i) {
+l = t[v];
+h = t[v + 1];
+l < n && (n = l);
+h < s && (s = h);
+l > a && (a = l);
+h > c && (c = h);
+}
+_ = Math.max(a - n, c - s);
+}
+o(m, p, i, n, s, _);
+return p;
+}
+function r(t, e, i, n, r) {
+var s, o;
+if (r === I(t, e, i, n) > 0) for (s = e; s < i; s += n) o = M(s, t[s], t[s + 1], o); else for (s = i - n; s >= e; s -= n) o = M(s, t[s], t[s + 1], o);
+if (o && b(o, o.next)) {
+B(o);
+o = o.next;
+}
+return o;
+}
+function s(t, e) {
+if (!t) return t;
+e || (e = t);
+var i, n = t;
+do {
+i = !1;
+if (n.steiner || !b(n, n.next) && 0 !== C(n.prev, n, n.next)) n = n.next; else {
+B(n);
+if ((n = e = n.prev) === n.next) return null;
+i = !0;
+}
+} while (i || n !== e);
+return e;
+}
+function o(t, e, i, n, r, u, _) {
+if (t) {
+!_ && u && m(t, n, r, u);
+for (var f, d, p = t; t.prev !== t.next; ) {
+f = t.prev;
+d = t.next;
+if (u ? c(t, n, r, u) : a(t)) {
+e.push(f.i / i);
+e.push(t.i / i);
+e.push(d.i / i);
+B(t);
+t = d.next;
+p = d.next;
+} else if ((t = d) === p) {
+_ ? 1 === _ ? o(t = l(t, e, i), e, i, n, r, u, 2) : 2 === _ && h(t, e, i, n, r, u) : o(s(t), e, i, n, r, u, 1);
+break;
+}
+}
+}
+}
+function a(t) {
+var e = t.prev, i = t, n = t.next;
+if (C(e, i, n) >= 0) return !1;
+for (var r = t.next.next; r !== t.prev; ) {
+if (g(e.x, e.y, i.x, i.y, n.x, n.y, r.x, r.y) && C(r.prev, r, r.next) >= 0) return !1;
+r = r.next;
+}
+return !0;
+}
+function c(t, e, i, n) {
+var r = t.prev, s = t, o = t.next;
+if (C(r, s, o) >= 0) return !1;
+for (var a = r.x < s.x ? r.x < o.x ? r.x : o.x : s.x < o.x ? s.x : o.x, c = r.y < s.y ? r.y < o.y ? r.y : o.y : s.y < o.y ? s.y : o.y, l = r.x > s.x ? r.x > o.x ? r.x : o.x : s.x > o.x ? s.x : o.x, h = r.y > s.y ? r.y > o.y ? r.y : o.y : s.y > o.y ? s.y : o.y, u = v(a, c, e, i, n), _ = v(l, h, e, i, n), f = t.nextZ; f && f.z <= _; ) {
+if (f !== t.prev && f !== t.next && g(r.x, r.y, s.x, s.y, o.x, o.y, f.x, f.y) && C(f.prev, f, f.next) >= 0) return !1;
+f = f.nextZ;
+}
+f = t.prevZ;
+for (;f && f.z >= u; ) {
+if (f !== t.prev && f !== t.next && g(r.x, r.y, s.x, s.y, o.x, o.y, f.x, f.y) && C(f.prev, f, f.next) >= 0) return !1;
+f = f.prevZ;
+}
+return !0;
+}
+function l(t, e, i) {
+var n = t;
+do {
+var r = n.prev, s = n.next.next;
+if (!b(r, s) && A(r, n, n.next, s) && w(r, s) && w(s, r)) {
+e.push(r.i / i);
+e.push(n.i / i);
+e.push(s.i / i);
+B(n);
+B(n.next);
+n = t = s;
+}
+n = n.next;
+} while (n !== t);
+return n;
+}
+function h(t, e, i, n, r, a) {
+var c = t;
+do {
+for (var l = c.next.next; l !== c.prev; ) {
+if (c.i !== l.i && x(c, l)) {
+var h = E(c, l);
+c = s(c, c.next);
+h = s(h, h.next);
+o(c, e, i, n, r, a);
+o(h, e, i, n, r, a);
+return;
+}
+l = l.next;
+}
+c = c.next;
+} while (c !== t);
+}
+function u(t, e, i, n) {
+var o, a, c, l = [];
+for (o = 0, a = e.length; o < a; o++) {
+(c = r(t, e[o] * n, o < a - 1 ? e[o + 1] * n : t.length, n, !1)) === c.next && (c.steiner = !0);
+l.push(y(c));
+}
+l.sort(_);
+for (o = 0; o < l.length; o++) {
+f(l[o], i);
+i = s(i, i.next);
+}
+return i;
+}
+function _(t, e) {
+return t.x - e.x;
+}
+function f(t, e) {
+if (e = d(t, e)) {
+var i = E(e, t);
+s(i, i.next);
+}
+}
+function d(t, e) {
+var i, n = e, r = t.x, s = t.y, o = -Infinity;
+do {
+if (s <= n.y && s >= n.next.y) {
+var a = n.x + (s - n.y) * (n.next.x - n.x) / (n.next.y - n.y);
+if (a <= r && a > o) {
+o = a;
+if (a === r) {
+if (s === n.y) return n;
+if (s === n.next.y) return n.next;
+}
+i = n.x < n.next.x ? n : n.next;
+}
+}
+n = n.next;
+} while (n !== e);
+if (!i) return null;
+if (r === o) return i.prev;
+var c, l = i, h = i.x, u = i.y, _ = Infinity;
+n = i.next;
+for (;n !== l; ) {
+if (r >= n.x && n.x >= h && g(s < u ? r : o, s, h, u, s < u ? o : r, s, n.x, n.y) && ((c = Math.abs(s - n.y) / (r - n.x)) < _ || c === _ && n.x > i.x) && w(n, t)) {
+i = n;
+_ = c;
+}
+n = n.next;
+}
+return i;
+}
+function m(t, e, i, n) {
+var r = t;
+do {
+null === r.z && (r.z = v(r.x, r.y, e, i, n));
+r.prevZ = r.prev;
+r.nextZ = r.next;
+r = r.next;
+} while (r !== t);
+r.prevZ.nextZ = null;
+r.prevZ = null;
+p(r);
+}
+function p(t) {
+var e, i, n, r, s, o, a, c, l = 1;
+do {
+i = t;
+t = null;
+s = null;
+o = 0;
+for (;i; ) {
+o++;
+n = i;
+a = 0;
+for (e = 0; e < l; e++) {
+a++;
+if (!(n = n.nextZ)) break;
+}
+c = l;
+for (;a > 0 || c > 0 && n; ) {
+if (0 === a) {
+r = n;
+n = n.nextZ;
+c--;
+} else if (0 !== c && n) if (i.z <= n.z) {
+r = i;
+i = i.nextZ;
+a--;
+} else {
+r = n;
+n = n.nextZ;
+c--;
+} else {
+r = i;
+i = i.nextZ;
+a--;
+}
+s ? s.nextZ = r : t = r;
+r.prevZ = s;
+s = r;
+}
+i = n;
+}
+s.nextZ = null;
+l *= 2;
+} while (o > 1);
+return t;
+}
+function v(t, e, i, n, r) {
+return (t = 1431655765 & ((t = 858993459 & ((t = 252645135 & ((t = 16711935 & ((t = 32767 * (t - i) / r) | t << 8)) | t << 4)) | t << 2)) | t << 1)) | (e = 1431655765 & ((e = 858993459 & ((e = 252645135 & ((e = 16711935 & ((e = 32767 * (e - n) / r) | e << 8)) | e << 4)) | e << 2)) | e << 1)) << 1;
+}
+function y(t) {
+var e = t, i = t;
+do {
+e.x < i.x && (i = e);
+e = e.next;
+} while (e !== t);
+return i;
+}
+function g(t, e, i, n, r, s, o, a) {
+return (r - o) * (e - a) - (t - o) * (s - a) >= 0 && (t - o) * (n - a) - (i - o) * (e - a) >= 0 && (i - o) * (s - a) - (r - o) * (n - a) >= 0;
+}
+function x(t, e) {
+return t.next.i !== e.i && t.prev.i !== e.i && !S(t, e) && w(t, e) && w(e, t) && T(t, e);
+}
+function C(t, e, i) {
+return (e.y - t.y) * (i.x - e.x) - (e.x - t.x) * (i.y - e.y);
+}
+function b(t, e) {
+return t.x === e.x && t.y === e.y;
+}
+function A(t, e, i, n) {
+return !!(b(t, e) && b(i, n) || b(t, n) && b(i, e)) || C(t, e, i) > 0 != C(t, e, n) > 0 && C(i, n, t) > 0 != C(i, n, e) > 0;
+}
+function S(t, e) {
+var i = t;
+do {
+if (i.i !== t.i && i.next.i !== t.i && i.i !== e.i && i.next.i !== e.i && A(i, i.next, t, e)) return !0;
+i = i.next;
+} while (i !== t);
+return !1;
+}
+function w(t, e) {
+return C(t.prev, t, t.next) < 0 ? C(t, e, t.next) >= 0 && C(t, t.prev, e) >= 0 : C(t, e, t.prev) < 0 || C(t, t.next, e) < 0;
+}
+function T(t, e) {
+var i = t, n = !1, r = (t.x + e.x) / 2, s = (t.y + e.y) / 2;
+do {
+i.y > s != i.next.y > s && r < (i.next.x - i.x) * (s - i.y) / (i.next.y - i.y) + i.x && (n = !n);
+i = i.next;
+} while (i !== t);
+return n;
+}
+function E(t, e) {
+var i = new D(t.i, t.x, t.y), n = new D(e.i, e.x, e.y), r = t.next, s = e.prev;
+t.next = e;
+e.prev = t;
+i.next = r;
+r.prev = i;
+n.next = i;
+i.prev = n;
+s.next = n;
+n.prev = s;
+return n;
+}
+function M(t, e, i, n) {
+var r = new D(t, e, i);
+if (n) {
+r.next = n.next;
+r.prev = n;
+n.next.prev = r;
+n.next = r;
+} else {
+r.prev = r;
+r.next = r;
+}
+return r;
+}
+function B(t) {
+t.next.prev = t.prev;
+t.prev.next = t.next;
+t.prevZ && (t.prevZ.nextZ = t.nextZ);
+t.nextZ && (t.nextZ.prevZ = t.prevZ);
+}
+function D(t, e, i) {
+this.i = t;
+this.x = e;
+this.y = i;
+this.prev = null;
+this.next = null;
+this.z = null;
+this.prevZ = null;
+this.nextZ = null;
+this.steiner = !1;
+}
+n.deviation = function(t, e, i, n) {
+var r = e && e.length, s = r ? e[0] * i : t.length, o = Math.abs(I(t, 0, s, i));
+if (r) for (var a = 0, c = e.length; a < c; a++) {
+var l = e[a] * i, h = a < c - 1 ? e[a + 1] * i : t.length;
+o -= Math.abs(I(t, l, h, i));
+}
+var u = 0;
+for (a = 0; a < n.length; a += 3) {
+var _ = n[a] * i, f = n[a + 1] * i, d = n[a + 2] * i;
+u += Math.abs((t[_] - t[d]) * (t[f + 1] - t[_ + 1]) - (t[_] - t[f]) * (t[d + 1] - t[_ + 1]));
+}
+return 0 === o && 0 === u ? 0 : Math.abs((u - o) / o);
+};
+function I(t, e, i, n) {
+for (var r = 0, s = e, o = i - n; s < i; s += n) {
+r += (t[o] - t[s]) * (t[s + 1] + t[o + 1]);
+o = s;
+}
+return r;
+}
+n.flatten = function(t) {
+for (var e = t[0][0].length, i = {
+vertices: [],
+holes: [],
+dimensions: e
+}, n = 0, r = 0; r < t.length; r++) {
+for (var s = 0; s < t[r].length; s++) for (var o = 0; o < e; o++) i.vertices.push(t[r][s][o]);
+if (r > 0) {
+n += t[r - 1].length;
+i.holes.push(n);
+}
+}
+return i;
+};
+}), {} ],
+254: [ (function(t, e, i) {
+"use strict";
+var n = s(t("../../../../../renderer/core/input-assembler")), r = s(t("../../../../../renderer/render-data/ia-render-data"));
+function s(t) {
+return t && t.__esModule ? t : {
+default: t
+};
+}
+var o = t("../../../../graphics/helper"), a = t("../../../../graphics/types").PointFlags, c = t("../../mesh-buffer"), l = t("../../vertex-format").vfmtPosColor, h = t("../../../index"), u = cc.Class({
+name: "cc.GraphicsPoint",
+extends: cc.Vec2,
+ctor: function(t, e) {
+this.reset();
+},
+reset: function() {
+this.dx = 0;
+this.dy = 0;
+this.dmx = 0;
+this.dmy = 0;
+this.flags = 0;
+this.len = 0;
+}
+});
+function _() {
+this.reset();
+}
+cc.js.mixin(_.prototype, {
+reset: function() {
+this.closed = !1;
+this.nbevel = 0;
+this.complex = !0;
+this.points ? this.points.length = 0 : this.points = [];
+}
+});
+function f(t) {
+this._tessTol = .25;
+this._distTol = .01;
+this._updatePathOffset = !1;
+this._paths = null;
+this._pathLength = 0;
+this._pathOffset = 0;
+this._points = null;
+this._pointsOffset = 0;
+this._commandx = 0;
+this._commandy = 0;
+this._paths = [];
+this._points = [];
+this._renderDatas = [];
+this._dataOffset = 0;
+}
+cc.js.mixin(f.prototype, {
+moveTo: function(t, e) {
+if (this._updatePathOffset) {
+this._pathOffset = this._pathLength;
+this._updatePathOffset = !1;
+}
+this._addPath();
+this._addPoint(t, e, a.PT_CORNER);
+this._commandx = t;
+this._commandy = e;
+},
+lineTo: function(t, e) {
+this._addPoint(t, e, a.PT_CORNER);
+this._commandx = t;
+this._commandy = e;
+},
+bezierCurveTo: function(t, e, i, n, r, s) {
+var c = this._curPath, l = c.points[c.points.length - 1];
+if (l.x !== t || l.y !== e || i !== r || n !== s) {
+o.tesselateBezier(this, l.x, l.y, t, e, i, n, r, s, 0, a.PT_CORNER);
+this._commandx = r;
+this._commandy = s;
+} else this.lineTo(r, s);
+},
+quadraticCurveTo: function(t, e, i, n) {
+var r = this._commandx, s = this._commandy;
+this.bezierCurveTo(r + 2 / 3 * (t - r), s + 2 / 3 * (e - s), i + 2 / 3 * (t - i), n + 2 / 3 * (e - n), i, n);
+},
+arc: function(t, e, i, n, r, s) {
+o.arc(this, t, e, i, n, r, s);
+},
+ellipse: function(t, e, i, n) {
+o.ellipse(this, t, e, i, n);
+this._curPath.complex = !1;
+},
+circle: function(t, e, i) {
+o.ellipse(this, t, e, i, i);
+this._curPath.complex = !1;
+},
+rect: function(t, e, i, n) {
+this.moveTo(t, e);
+this.lineTo(t, e + n);
+this.lineTo(t + i, e + n);
+this.lineTo(t + i, e);
+this.close();
+this._curPath.complex = !1;
+},
+roundRect: function(t, e, i, n, r) {
+o.roundRect(this, t, e, i, n, r);
+this._curPath.complex = !1;
+},
+clear: function(t, e) {
+this._pathLength = 0;
+this._pathOffset = 0;
+this._pointsOffset = 0;
+this._dataOffset = 0;
+this._curPath = null;
+var i = this._renderDatas;
+if (e) {
+this._paths.length = 0;
+this._points.length = 0;
+for (var n = 0, r = i.length; n < r; n++) {
+var s = i[n];
+s.meshbuffer.destroy();
+s.meshbuffer = null;
+}
+i.length = 0;
+} else for (var o = 0, a = i.length; o < a; o++) {
+i[o].meshbuffer.reset();
+}
+},
+close: function() {
+this._curPath.closed = !0;
+},
+_addPath: function() {
+var t = this._pathLength, e = this._paths[t];
+if (e) e.reset(); else {
+e = new _();
+this._paths.push(e);
+}
+this._pathLength++;
+this._curPath = e;
+return e;
+},
+_addPoint: function(t, e, i) {
+var n = this._curPath;
+if (n) {
+var r, s = this._points, o = n.points;
+if (r = s[this._pointsOffset++]) {
+r.x = t;
+r.y = e;
+} else {
+r = new u(t, e);
+s.push(r);
+}
+r.flags = i;
+o.push(r);
+}
+},
+requestRenderData: function() {
+var t = new r.default(), e = new c(h._handle, l);
+t.meshbuffer = e;
+this._renderDatas.push(t);
+var i = new n.default();
+i._vertexBuffer = e._vb;
+i._indexBuffer = e._ib;
+i._start = 0;
+t.ia = i;
+return t;
+},
+getRenderDatas: function() {
+0 === this._renderDatas.length && this.requestRenderData();
+return this._renderDatas;
+}
+});
+e.exports = f;
+}), {
+"../../../../../renderer/core/input-assembler": 339,
+"../../../../../renderer/render-data/ia-render-data": 368,
+"../../../../graphics/helper": 143,
+"../../../../graphics/types": 145,
+"../../../index": 244,
+"../../mesh-buffer": 280,
+"../../vertex-format": 284
+} ],
+255: [ (function(t, e, i) {
+"use strict";
+var n = t("../../../../graphics/graphics"), r = t("../../../../graphics/types").PointFlags, s = n.LineJoin, o = n.LineCap, a = t("./earcut"), c = t("./impl"), l = Math.PI, h = Math.min, u = Math.max, _ = Math.ceil, f = Math.acos, d = Math.cos, m = Math.sin, p = Math.atan2, v = (Math.abs,
+null), y = null, g = 0;
+function x(t, e, i) {
+var n = 2 * f(t / (t + i));
+return u(2, _(e / n));
+}
+function C(t, e, i) {
+return t < e ? e : t > i ? i : t;
+}
+var b = {
+createImpl: function(t) {
+return new c(t);
+},
+updateRenderData: function(t) {
+for (var e = t._impl.getRenderDatas(), i = 0, n = e.length; i < n; i++) e[i].material = t.sharedMaterials[0];
+},
+fillBuffers: function(t, e) {
+e._flush();
+var i = e.node;
+e.node = t.node;
+this.renderIA(t, e);
+e.node = i;
+},
+renderIA: function(t, e) {
+for (var i = t._impl.getRenderDatas(), n = 0, r = i.length; n < r; n++) {
+var s = i[n], o = s.meshbuffer;
+s.ia._count = o.indiceStart;
+e._flushIA(s);
+o.uploadData();
+}
+},
+genRenderData: function(t, e) {
+var i = y.getRenderDatas(), n = i[y._dataOffset], r = n.meshbuffer, s = r.vertexStart + e;
+if (s > 65535 || 3 * s > 131070) {
+++y._dataOffset;
+s = e;
+if (y._dataOffset < i.length) n = i[y._dataOffset]; else {
+n = y.requestRenderData(t);
+i[y._dataOffset] = n;
+}
+n.material = t.sharedMaterials[0];
+r = n.meshbuffer;
+}
+s > r.vertexOffset && r.requestStatic(e, 3 * e);
+return n;
+},
+stroke: function(t) {
+g = t._strokeColor._val;
+this._flattenPaths(t._impl);
+this._expandStroke(t);
+t._impl._updatePathOffset = !0;
+},
+fill: function(t) {
+g = t._fillColor._val;
+this._expandFill(t);
+t._impl._updatePathOffset = !0;
+},
+_expandStroke: function(t) {
+var e = .5 * t.lineWidth, i = t.lineCap, n = t.lineJoin, a = t.miterLimit;
+y = t._impl;
+var c = x(e, l, y._tessTol);
+this._calculateJoins(y, e, n, a);
+for (var h = y._paths, u = 0, _ = y._pathOffset, f = y._pathLength; _ < f; _++) {
+var d = h[_], m = d.points.length;
+n === s.ROUND ? u += 2 * (m + d.nbevel * (c + 2) + 1) : u += 2 * (m + 5 * d.nbevel + 1);
+d.closed || (i === o.ROUND ? u += 2 * (2 * c + 2) : u += 12);
+}
+for (var p = (v = this.genRenderData(t, u)).meshbuffer, g = p._vData, C = p._iData, b = y._pathOffset, A = y._pathLength; b < A; b++) {
+var S, w = h[b], T = w.points, E = T.length, M = p.vertexStart, B = void 0, D = void 0, I = void 0, P = void 0;
+if (S = w.closed) {
+B = T[E - 1];
+D = T[0];
+I = 0;
+P = E;
+} else {
+B = T[0];
+D = T[1];
+I = 1;
+P = E - 1;
+}
+if (!S) {
+var R = D.sub(B);
+R.normalizeSelf();
+var L = R.x, F = R.y;
+i === o.BUTT ? this._buttCap(B, L, F, e, 0) : i === o.SQUARE ? this._buttCap(B, L, F, e, e) : i === o.ROUND && this._roundCapStart(B, L, F, e, c);
+}
+for (var O = I; O < P; ++O) {
+if (n === s.ROUND) this._roundJoin(B, D, e, e, c); else if (0 != (D.flags & (r.PT_BEVEL | r.PT_INNERBEVEL))) this._bevelJoin(B, D, e, e); else {
+this._vset(D.x + D.dmx * e, D.y + D.dmy * e);
+this._vset(D.x - D.dmx * e, D.y - D.dmy * e);
+}
+B = D;
+D = T[O + 1];
+}
+if (S) {
+var V = 3 * M;
+this._vset(g[V], g[V + 1]);
+this._vset(g[V + 3], g[V + 4]);
+} else {
+var N = D.sub(B);
+N.normalizeSelf();
+var k = N.x, z = N.y;
+i === o.BUTT ? this._buttCap(D, k, z, e, 0) : i === o.BUTT || i === o.SQUARE ? this._buttCap(D, k, z, e, e) : i === o.ROUND && this._roundCapEnd(D, k, z, e, c);
+}
+for (var G = p.indiceStart, U = M + 2, j = p.vertexStart; U < j; U++) {
+C[G++] = U - 2;
+C[G++] = U - 1;
+C[G++] = U;
+}
+p.indiceStart = G;
+}
+v = null;
+y = null;
+},
+_expandFill: function(t) {
+for (var e = (y = t._impl)._paths, i = 0, n = y._pathOffset, r = y._pathLength; n < r; n++) {
+i += e[n].points.length;
+}
+for (var s = (v = this.genRenderData(t, i)).meshbuffer, o = s._vData, c = s._iData, l = y._pathOffset, h = y._pathLength; l < h; l++) {
+var u = e[l], _ = u.points, f = _.length;
+if (0 !== f) {
+for (var d = s.vertexStart, m = 0; m < f; ++m) this._vset(_[m].x, _[m].y);
+var p = s.indiceStart;
+if (u.complex) {
+for (var g = [], x = d, C = s.vertexStart; x < C; x++) {
+var b = 3 * x;
+g.push(o[b]);
+g.push(o[b + 1]);
+}
+var A = a(g, null, 2);
+if (!A || 0 === A.length) continue;
+for (var S = 0, w = A.length; S < w; S++) c[p++] = A[S] + d;
+} else for (var T = d, E = d + 2, M = s.vertexStart; E < M; E++) {
+c[p++] = T;
+c[p++] = E - 1;
+c[p++] = E;
+}
+s.indiceStart = p;
+}
+}
+v = null;
+y = null;
+},
+_calculateJoins: function(t, e, i, n) {
+var o = 0;
+e > 0 && (o = 1 / e);
+for (var a = t._paths, c = t._pathOffset, l = t._pathLength; c < l; c++) {
+var _ = a[c], f = _.points, d = f.length, m = f[d - 1], p = f[0];
+_.nbevel = 0;
+for (var v = 0; v < d; v++) {
+var y, g, x = m.dy, C = -m.dx, b = p.dy, A = -p.dx;
+p.dmx = .5 * (x + b);
+p.dmy = .5 * (C + A);
+if ((y = p.dmx * p.dmx + p.dmy * p.dmy) > 1e-6) {
+var S = 1 / y;
+S > 600 && (S = 600);
+p.dmx *= S;
+p.dmy *= S;
+}
+if (p.dx * m.dy - m.dx * p.dy > 0) {
+0;
+p.flags |= r.PT_LEFT;
+}
+y * (g = u(11, h(m.len, p.len) * o)) * g < 1 && (p.flags |= r.PT_INNERBEVEL);
+p.flags & r.PT_CORNER && (y * n * n < 1 || i === s.BEVEL || i === s.ROUND) && (p.flags |= r.PT_BEVEL);
+0 != (p.flags & (r.PT_BEVEL | r.PT_INNERBEVEL)) && _.nbevel++;
+m = p;
+p = f[v + 1];
+}
+}
+},
+_flattenPaths: function(t) {
+for (var e = t._paths, i = t._pathOffset, n = t._pathLength; i < n; i++) {
+var r = e[i], s = r.points, o = s[s.length - 1], a = s[0];
+if (o.equals(a)) {
+r.closed = !0;
+s.pop();
+o = s[s.length - 1];
+}
+for (var c = 0, l = s.length; c < l; c++) {
+var h = a.sub(o);
+o.len = h.mag();
+(h.x || h.y) && h.normalizeSelf();
+o.dx = h.x;
+o.dy = h.y;
+o = a;
+a = s[c + 1];
+}
+}
+},
+_chooseBevel: function(t, e, i, n) {
+var r = i.x, s = i.y, o = void 0, a = void 0, c = void 0, l = void 0;
+if (0 !== t) {
+o = r + e.dy * n;
+a = s - e.dx * n;
+c = r + i.dy * n;
+l = s - i.dx * n;
+} else {
+o = c = r + i.dmx * n;
+a = l = s + i.dmy * n;
+}
+return [ o, a, c, l ];
+},
+_buttCap: function(t, e, i, n, r) {
+var s = t.x - e * r, o = t.y - i * r, a = i, c = -e;
+this._vset(s + a * n, o + c * n);
+this._vset(s - a * n, o - c * n);
+},
+_roundCapStart: function(t, e, i, n, r) {
+for (var s = t.x, o = t.y, a = i, c = -e, h = 0; h < r; h++) {
+var u = h / (r - 1) * l, _ = d(u) * n, f = m(u) * n;
+this._vset(s - a * _ - e * f, o - c * _ - i * f);
+this._vset(s, o);
+}
+this._vset(s + a * n, o + c * n);
+this._vset(s - a * n, o - c * n);
+},
+_roundCapEnd: function(t, e, i, n, r) {
+var s = t.x, o = t.y, a = i, c = -e;
+this._vset(s + a * n, o + c * n);
+this._vset(s - a * n, o - c * n);
+for (var h = 0; h < r; h++) {
+var u = h / (r - 1) * l, _ = d(u) * n, f = m(u) * n;
+this._vset(s, o);
+this._vset(s - a * _ + e * f, o - c * _ + i * f);
+}
+},
+_roundJoin: function(t, e, i, n, s) {
+var o = t.dy, a = -t.dx, c = e.dy, h = -e.dx, u = e.x, f = e.y;
+if (0 != (e.flags & r.PT_LEFT)) {
+var v = this._chooseBevel(e.flags & r.PT_INNERBEVEL, t, e, i), y = v[0], g = v[1], x = v[2], b = v[3], A = p(-a, -o), S = p(-h, -c);
+S > A && (S -= 2 * l);
+this._vset(y, g);
+this._vset(u - o * n, e.y - a * n);
+for (var w = C(_((A - S) / l) * s, 2, s), T = 0; T < w; T++) {
+var E = A + T / (w - 1) * (S - A), M = u + d(E) * n, B = f + m(E) * n;
+this._vset(u, f);
+this._vset(M, B);
+}
+this._vset(x, b);
+this._vset(u - c * n, f - h * n);
+} else {
+var D = this._chooseBevel(e.flags & r.PT_INNERBEVEL, t, e, -n), I = D[0], P = D[1], R = D[2], L = D[3], F = p(a, o), O = p(h, c);
+O < F && (O += 2 * l);
+this._vset(u + o * n, f + a * n);
+this._vset(I, P);
+for (var V = C(_((O - F) / l) * s, 2, s), N = 0; N < V; N++) {
+var k = F + N / (V - 1) * (O - F), z = u + d(k) * i, G = f + m(k) * i;
+this._vset(z, G);
+this._vset(u, f);
+}
+this._vset(u + c * n, f + h * n);
+this._vset(R, L);
+}
+},
+_bevelJoin: function(t, e, i, n) {
+var s = void 0, o = void 0, a = void 0, c = void 0, l = void 0, h = void 0, u = void 0, _ = void 0, f = t.dy, d = -t.dx, m = e.dy, p = -e.dx;
+if (e.flags & r.PT_LEFT) {
+var v = this._chooseBevel(e.flags & r.PT_INNERBEVEL, t, e, i);
+l = v[0];
+h = v[1];
+u = v[2];
+_ = v[3];
+this._vset(l, h);
+this._vset(e.x - f * n, e.y - d * n);
+this._vset(u, _);
+this._vset(e.x - m * n, e.y - p * n);
+} else {
+var y = this._chooseBevel(e.flags & r.PT_INNERBEVEL, t, e, -n);
+s = y[0];
+o = y[1];
+a = y[2];
+c = y[3];
+this._vset(e.x + f * i, e.y + d * i);
+this._vset(s, o);
+this._vset(e.x + m * i, e.y + p * i);
+this._vset(a, c);
+}
+},
+_vset: function(t, e) {
+var i = v.meshbuffer, n = 3 * i.vertexStart, r = i._vData, s = i._uintVData;
+r[n] = t;
+r[n + 1] = e;
+s[n + 2] = g;
+i.vertexStart++;
+i._dirty = !0;
+}
+};
+n._assembler = b;
+e.exports = b;
+}), {
+"../../../../graphics/graphics": 142,
+"../../../../graphics/types": 145,
+"./earcut": 253,
+"./impl": 254
+} ],
+256: [ (function(t, e, i) {
+"use strict";
+t("./sprite");
+t("./mask-assembler");
+t("./graphics");
+t("./label");
+t("./motion-streak");
+}), {
+"./graphics": 255,
+"./label": 263,
+"./mask-assembler": 264,
+"./motion-streak": 265,
+"./sprite": 278
+} ],
+257: [ (function(t, e, i) {
+"use strict";
+var n = t("../../../../../platform/js"), r = t("../../../../utils/label/bmfont"), s = t("../../utils").fillMeshVertices;
+e.exports = n.addon({
+createData: function(t) {
+return t.requestRenderData();
+},
+fillBuffers: function(t, e) {
+var i = t.node;
+s(i, e._meshBuffer, t._renderData, i._color._val);
+},
+appendQuad: function(t, e, i, n, r, s, o) {
+var a = t.dataLength;
+t.dataLength += 4;
+t.vertexCount = t.dataLength;
+t.indiceCount = t.dataLength / 2 * 3;
+var c = t._data, l = e.width, h = e.height, u = i.width, _ = i.height, f = void 0, d = void 0, m = void 0, p = void 0;
+if (n) {
+f = i.x / l;
+m = (i.x + _) / l;
+d = (i.y + u) / h;
+p = i.y / h;
+c[a].u = f;
+c[a].v = p;
+c[a + 1].u = f;
+c[a + 1].v = d;
+c[a + 2].u = m;
+c[a + 2].v = p;
+c[a + 3].u = m;
+c[a + 3].v = d;
+} else {
+f = i.x / l;
+m = (i.x + u) / l;
+d = (i.y + _) / h;
+p = i.y / h;
+c[a].u = f;
+c[a].v = d;
+c[a + 1].u = m;
+c[a + 1].v = d;
+c[a + 2].u = f;
+c[a + 2].v = p;
+c[a + 3].u = m;
+c[a + 3].v = p;
+}
+c[a].x = r;
+c[a].y = s - _ * o;
+c[a + 1].x = r + u * o;
+c[a + 1].y = s - _ * o;
+c[a + 2].x = r;
+c[a + 2].y = s;
+c[a + 3].x = r + u * o;
+c[a + 3].y = s;
+}
+}, r);
+}), {
+"../../../../../platform/js": 221,
+"../../../../utils/label/bmfont": 248,
+"../../utils": 279
+} ],
+258: [ (function(t, e, i) {
+"use strict";
+var n = t("../../../../../platform/js"), r = t("./bmfont"), s = t("../../../../utils/label/letter-font"), o = t("../../utils").fillMeshVertices, a = cc.color(255, 255, 255, 255);
+e.exports = n.addon({
+createData: function(t) {
+return t.requestRenderData();
+},
+fillBuffers: function(t, e) {
+var i = t.node;
+a._fastSetA(i.color.a);
+o(i, e._meshBuffer, t._renderData, a._val);
+},
+appendQuad: r.appendQuad
+}, s);
+}), {
+"../../../../../platform/js": 221,
+"../../../../utils/label/letter-font": 250,
+"../../utils": 279,
+"./bmfont": 257
+} ],
+259: [ (function(t, e, i) {
+"use strict";
+var n = t("../../../../../platform/js"), r = t("../../../../utils/label/ttf"), s = t("../../../../../components/CCLabelShadow"), o = t("../../utils").fillMeshVertices, a = cc.color(255, 255, 255, 255);
+e.exports = n.addon({
+createData: function(t) {
+var e = t.requestRenderData();
+e.dataLength = 4;
+e.vertexCount = 4;
+e.indiceCount = 6;
+return e;
+},
+fillBuffers: function(t, e) {
+var i = t.node;
+a._fastSetA(i.color.a);
+o(i, e._meshBuffer, t._renderData, a._val);
+},
+_updateVerts: function(t) {
+var e = t._renderData, i = t._frame.uv, n = t.node, r = t._ttfTexture.width, o = t._ttfTexture.height, a = n.anchorX * n.width, c = n.anchorY * n.height, l = s && t.getComponent(s);
+if (l && l._enabled) {
+var h = (r - n.width) / 2, u = (o - n.height) / 2, _ = l.offset;
+-_.x > h ? a += r - n.width : h > _.x && (a += h - _.x);
+-_.y > u ? c += o - n.height : u > _.y && (c += u - _.y);
+}
+var f = e._data;
+f[0].x = -a;
+f[0].y = -c;
+f[1].x = r - a;
+f[1].y = -c;
+f[2].x = -a;
+f[2].y = o - c;
+f[3].x = r - a;
+f[3].y = o - c;
+f[0].u = i[0];
+f[0].v = i[1];
+f[1].u = i[2];
+f[1].v = i[3];
+f[2].u = i[4];
+f[2].v = i[5];
+f[3].u = i[6];
+f[3].v = i[7];
+}
+}, r);
+}), {
+"../../../../../components/CCLabelShadow": 99,
+"../../../../../platform/js": 221,
+"../../../../utils/label/ttf": 251,
+"../../utils": 279
+} ],
+260: [ (function(t, e, i) {
+"use strict";
+var n = t("../../../../../platform/js"), r = t("../2d/bmfont"), s = t("../../utils").fillMeshVertices3D;
+e.exports = n.addon({
+fillBuffers: function(t, e) {
+var i = t.node;
+s(i, e._meshBuffer3D, t._renderData, i._color._val);
+}
+}, r);
+}), {
+"../../../../../platform/js": 221,
+"../../utils": 279,
+"../2d/bmfont": 257
+} ],
+261: [ (function(t, e, i) {
+"use strict";
+var n = t("../../../../../platform/js"), r = t("../2d/letter"), s = t("../../utils").fillMeshVertices3D, o = cc.color(255, 255, 255, 255);
+e.exports = n.addon({
+fillBuffers: function(t, e) {
+var i = t.node;
+o._fastSetA(i.color.a);
+s(t.node, e._meshBuffer3D, t._renderData, o._val);
+}
+}, r);
+}), {
+"../../../../../platform/js": 221,
+"../../utils": 279,
+"../2d/letter": 258
+} ],
+262: [ (function(t, e, i) {
+"use strict";
+var n = t("../../../../../platform/js"), r = t("../2d/ttf"), s = t("../../utils").fillMeshVertices3D, o = cc.color(255, 255, 255, 255);
+e.exports = n.addon({
+fillBuffers: function(t, e) {
+var i = t.node;
+o._fastSetA(i.color.a);
+s(t.node, e._meshBuffer3D, t._renderData, o._val);
+}
+}, r);
+}), {
+"../../../../../platform/js": 221,
+"../../utils": 279,
+"../2d/ttf": 259
+} ],
+263: [ (function(t, e, i) {
+"use strict";
+var n = t("../../../../components/CCLabel"), r = t("./2d/ttf"), s = t("./2d/bmfont"), o = t("./2d/letter"), a = t("./3d/ttf"), c = t("./3d/bmfont"), l = t("./3d/letter"), h = {
+pool: [],
+get: function() {
+var t = this.pool.pop();
+if (!t) {
+var e = document.createElement("canvas");
+t = {
+canvas: e,
+context: e.getContext("2d")
+};
+}
+return t;
+},
+put: function(t) {
+this.pool.length >= 32 || this.pool.push(t);
+}
+}, u = {
+getAssembler: function(t) {
+var e = t.node.is3DNode, i = e ? a : r;
+t.font instanceof cc.BitmapFont ? i = e ? c : s : t.cacheMode === n.CacheMode.CHAR && (cc.sys.browserType === cc.sys.BROWSER_TYPE_WECHAT_GAME_SUB ? cc.warn("sorry, subdomain does not support CHAR mode currently!") : i = e ? l : o);
+return i;
+},
+updateRenderData: function(t) {
+return t.__allocedDatas;
+}
+};
+n._assembler = u;
+n._canvasPool = h;
+e.exports = u;
+}), {
+"../../../../components/CCLabel": 97,
+"./2d/bmfont": 257,
+"./2d/letter": 258,
+"./2d/ttf": 259,
+"./3d/bmfont": 260,
+"./3d/letter": 261,
+"./3d/ttf": 262
+} ],
+264: [ (function(t, e, i) {
+"use strict";
+var n = t("../../../components/CCMask"), r = t("../../render-flow"), s = t("./sprite/2d/simple"), o = t("./graphics"), a = t("../../../../renderer/gfx"), c = t("../vertex-format").vfmtPos, l = 8, h = [];
+function u() {
+return 1 << h.length - 1;
+}
+function _() {
+for (var t = 0, e = 0; e < h.length; ++e) t += 1 << e;
+return t;
+}
+function f(t, e, i, n, r, s) {
+for (var o = t.effect.getDefaultTechnique().passes, c = a.STENCIL_OP_KEEP, l = a.STENCIL_OP_KEEP, h = 0; h < o.length; ++h) {
+var u = o[h];
+u.setStencilFront(a.STENCIL_ENABLE, e, n, r, i, c, l, s);
+u.setStencilBack(a.STENCIL_ENABLE, e, n, r, i, c, l, s);
+}
+}
+function d(t) {
+h.length + 1 > l && cc.errorID(9e3, l);
+h.push(t);
+}
+function m(t, e) {
+0 === h.length && cc.errorID(9001);
+h.pop();
+0 === h.length ? e._flushMaterial(t._exitMaterial) : y(e);
+}
+function p(t, e) {
+var i = a.DS_FUNC_NEVER, n = u(), r = n, s = n, o = t.inverted ? a.STENCIL_OP_REPLACE : a.STENCIL_OP_ZERO;
+f(t._clearMaterial, i, o, n, r, s);
+var l = e.getBuffer("mesh", c), h = l.request(4, 6), _ = h.indiceOffset, d = h.byteOffset >> 2, m = h.vertexOffset, p = l._vData, v = l._iData;
+p[d++] = -1;
+p[d++] = -1;
+p[d++] = -1;
+p[d++] = 1;
+p[d++] = 1;
+p[d++] = 1;
+p[d++] = 1;
+p[d++] = -1;
+v[_++] = m;
+v[_++] = m + 3;
+v[_++] = m + 1;
+v[_++] = m + 1;
+v[_++] = m + 3;
+v[_++] = m + 2;
+e.node = e._dummyNode;
+e.material = t._clearMaterial;
+e._flush();
+}
+function v(t, e) {
+var i = a.DS_FUNC_NEVER, r = u(), c = r, l = r, h = t.inverted ? a.STENCIL_OP_ZERO : a.STENCIL_OP_REPLACE;
+f(t.sharedMaterials[0], i, h, r, c, l);
+e.node = t.node;
+e.material = t.sharedMaterials[0];
+if (t._type === n.Type.IMAGE_STENCIL) {
+s.fillBuffers(t, e);
+e._flush();
+} else o.fillBuffers(t._graphics, e);
+}
+function y(t) {
+var e = a.DS_FUNC_EQUAL, i = a.STENCIL_OP_KEEP, n = _(), r = n, s = u(), o = h[h.length - 1];
+f(o._enableMaterial, e, i, n, r, s);
+t._flushMaterial(o._enableMaterial);
+}
+var g = {
+updateRenderData: function(t) {
+t._renderData || (t._type === n.Type.IMAGE_STENCIL ? t._renderData = s.createData(t) : t._renderData = t.requestRenderData());
+var e = t._renderData;
+if (t._type === n.Type.IMAGE_STENCIL) if (t.spriteFrame) {
+var i = t.node._contentSize, r = t.node._anchorPoint;
+e.updateSizeNPivot(i.width, i.height, r.x, r.y);
+e.dataLength = 4;
+s.updateRenderData(t);
+e.material = t.sharedMaterials[0];
+} else t.setMaterial(0, null); else {
+t._graphics.setMaterial(0, t.sharedMaterials[0]);
+o.updateRenderData(t._graphics);
+}
+},
+fillBuffers: function(t, e) {
+if (t._type !== n.Type.IMAGE_STENCIL || t.spriteFrame) {
+d(t);
+p(t, e);
+v(t, e);
+y(e);
+}
+t.node._renderFlag |= r.FLAG_UPDATE_RENDER_DATA;
+}
+}, x = {
+fillBuffers: function(t, e) {
+(t._type !== n.Type.IMAGE_STENCIL || t.spriteFrame) && m(t, e);
+t.node._renderFlag |= r.FLAG_UPDATE_RENDER_DATA;
+}
+};
+n._assembler = g;
+n._postAssembler = x;
+e.exports = {
+front: g,
+end: x
+};
+}), {
+"../../../../renderer/gfx": 349,
+"../../../components/CCMask": 101,
+"../../render-flow": 245,
+"../vertex-format": 284,
+"./graphics": 255,
+"./sprite/2d/simple": 269
+} ],
+265: [ (function(t, e, i) {
+"use strict";
+var n = t("../../../components/CCMotionStreak"), r = t("../../render-flow");
+function s(t, e) {
+this.point = t || cc.v2();
+this.dir = e || cc.v2();
+this.distance = 0;
+this.time = 0;
+}
+s.prototype.setPoint = function(t, e) {
+this.point.x = t;
+this.point.y = e;
+};
+s.prototype.setDir = function(t, e) {
+this.dir.x = t;
+this.dir.y = e;
+};
+cc.v2(), cc.v2();
+var o = cc.v2(), a = cc.v2();
+function c(t, e) {
+t.x = -e.y;
+t.y = e.x;
+return t;
+}
+var l = {
+updateRenderData: function(t) {
+var e = cc.director.getDeltaTime();
+this.update(t, e);
+var i = t._renderData, n = t.node._contentSize, r = t.node._anchorPoint;
+i.updateSizeNPivot(n.width, n.height, r.x, r.y);
+i.material = t.sharedMaterials[0];
+},
+update: function(t, e) {
+var i = t._renderData;
+i || (i = t._renderData = t.requestRenderData());
+0;
+var n = t._stroke / 2, r = t.node._worldMatrix, l = (r.m00, r.m01, r.m04, r.m05,
+r.m12), h = r.m13, u = t._points, _ = void 0;
+if (u.length > 1) {
+var f = u[0].point.x - l, d = u[0].point.y - h;
+f * f + d * d < t.minSeg && (_ = u[0]);
+}
+if (!_) {
+_ = new s();
+u.splice(0, 0, _);
+}
+_.setPoint(l, h);
+_.time = t._fadeTime + e;
+i.dataLength = 0;
+if (!(u.length < 2)) {
+var m = i._data, p = t._color, v = p.r, y = p.g, g = p.b, x = p.a, C = u[1];
+C.distance = _.point.sub(C.point, a).mag();
+a.normalizeSelf();
+C.setDir(a.x, a.y);
+_.setDir(a.x, a.y);
+for (var b = t._fadeTime, A = !1, S = u.length - 1; S >= 0; S--) {
+var w = u[S], T = w.point, E = w.dir;
+w.time -= e;
+if (w.time < 0) u.splice(S, 1); else {
+var M = w.time / b, B = u[S - 1];
+if (!A) {
+if (!B) {
+u.splice(S, 1);
+continue;
+}
+T.x = B.point.x - E.x * M;
+T.y = B.point.y - E.y * M;
+}
+A = !0;
+c(o, E);
+i.dataLength += 2;
+var D = (M * x << 24 >>> 0) + (g << 16) + (y << 8) + v, I = m.length - 1;
+m[I].x = T.x - o.x * n;
+m[I].y = T.y - o.y * n;
+m[I].u = 0;
+m[I].v = M;
+m[I].color = D;
+m[--I].x = T.x + o.x * n;
+m[I].y = T.y + o.y * n;
+m[I].u = 1;
+m[I].v = M;
+m[I].color = D;
+}
+}
+i.vertexCount = i.dataLength;
+i.indiceCount = i.vertexCount <= 2 ? 0 : 3 * (i.vertexCount - 2);
+}
+},
+fillBuffers: function(t, e) {
+t.node;
+for (var i = t._renderData, n = i._data, s = e._meshBuffer, o = i.vertexCount, a = s.request(o, i.indiceCount), c = a.indiceOffset, l = a.byteOffset >> 2, h = a.vertexOffset, u = s._vData, _ = s._uintVData, f = s._iData, d = void 0, m = 0, p = i.vertexCount; m < p; m++) {
+d = n[m];
+u[l++] = d.x;
+u[l++] = d.y;
+u[l++] = d.u;
+u[l++] = d.v;
+_[l++] = d.color;
+}
+for (var v = 0, y = i.vertexCount; v < y; v += 2) {
+var g = h + v;
+f[c++] = g;
+f[c++] = g + 2;
+f[c++] = g + 1;
+f[c++] = g + 1;
+f[c++] = g + 2;
+f[c++] = g + 3;
+}
+t.node._renderFlag |= r.FLAG_UPDATE_RENDER_DATA;
+}
+};
+e.exports = n._assembler = l;
+}), {
+"../../../components/CCMotionStreak": 102,
+"../../render-flow": 245
+} ],
+266: [ (function(t, e, i) {
+"use strict";
+var n = t("../../../../../components/CCSprite").FillType, r = t("../../../../utils/utils").packToDynamicAtlas, s = t("../../utils").fillVerticesWithoutCalc;
+e.exports = {
+updateRenderData: function(t) {
+r(t, t._spriteFrame);
+var e = t._renderData;
+if (e && t.spriteFrame) {
+var i = e.uvDirty, n = e.vertDirty;
+if (!i && !n) return t.__allocedDatas;
+var s = t._fillStart, o = t._fillRange;
+if (o < 0) {
+s += o;
+o = -o;
+}
+o = s + o;
+s = (s = s > 1 ? 1 : s) < 0 ? 0 : s;
+o = (o = o > 1 ? 1 : o) < 0 ? 0 : o;
+var a = s + (o = (o -= s) < 0 ? 0 : o);
+a = a > 1 ? 1 : a;
+i && this.updateUVs(t, s, a);
+if (n) {
+this.updateVerts(t, s, a);
+this.updateWorldVerts(t);
+}
+}
+},
+updateUVs: function(t, e, i) {
+var r = t._spriteFrame, s = t._renderData, o = s._data, a = r._texture.width, c = r._texture.height, l = r._rect, h = void 0, u = void 0, _ = void 0, f = void 0, d = void 0, m = void 0, p = void 0, v = void 0, y = void 0, g = void 0, x = void 0, C = void 0;
+if (r._rotated) {
+h = l.x / a;
+u = (l.y + l.width) / c;
+_ = (l.x + l.height) / a;
+f = l.y / c;
+d = p = h;
+y = x = _;
+v = C = u;
+m = g = f;
+} else {
+h = l.x / a;
+u = (l.y + l.height) / c;
+_ = (l.x + l.width) / a;
+f = l.y / c;
+d = y = h;
+p = x = _;
+m = v = u;
+g = C = f;
+}
+switch (t._fillType) {
+case n.HORIZONTAL:
+o[0].u = d + (p - d) * e;
+o[0].v = m + (v - m) * e;
+o[1].u = d + (p - d) * i;
+o[1].v = m + (v - m) * i;
+o[2].u = y + (x - y) * e;
+o[2].v = g + (C - g) * e;
+o[3].u = y + (x - y) * i;
+o[3].v = g + (C - g) * i;
+break;
+
+case n.VERTICAL:
+o[0].u = d + (y - d) * e;
+o[0].v = m + (g - m) * e;
+o[1].u = p + (x - p) * e;
+o[1].v = v + (C - v) * e;
+o[2].u = d + (y - d) * i;
+o[2].v = m + (g - m) * i;
+o[3].u = p + (x - p) * i;
+o[3].v = v + (C - v) * i;
+break;
+
+default:
+cc.errorID(2626);
+}
+s.uvDirty = !1;
+},
+updateVerts: function(t, e, i) {
+var r = t._renderData, s = r._data, o = t.node, a = o.width, c = o.height, l = o.anchorX * a, h = o.anchorY * c, u = -l, _ = -h, f = a - l, d = c - h, m = void 0;
+switch (t._fillType) {
+case n.HORIZONTAL:
+m = u + (f - u) * i;
+u = u + (f - u) * e;
+f = m;
+break;
+
+case n.VERTICAL:
+m = _ + (d - _) * i;
+_ = _ + (d - _) * e;
+d = m;
+break;
+
+default:
+cc.errorID(2626);
+}
+s[4].x = u;
+s[4].y = _;
+s[5].x = f;
+s[5].y = _;
+s[6].x = u;
+s[6].y = d;
+s[7].x = f;
+s[7].y = d;
+r.vertDirty = !1;
+},
+createData: function(t) {
+var e = t.requestRenderData();
+e.dataLength = 8;
+e.vertexCount = 4;
+e.indiceCount = 6;
+for (var i = e._data, n = 0; n < i.length; n++) i[n].z = 0;
+return e;
+},
+updateWorldVerts: function(t) {
+for (var e = t.node, i = t._renderData._data, n = e._worldMatrix, r = n.m00, s = n.m01, o = n.m04, a = n.m05, c = n.m12, l = n.m13, h = 0; h < 4; h++) {
+var u = i[h + 4], _ = i[h];
+_.x = u.x * r + u.y * o + c;
+_.y = u.x * s + u.y * a + l;
+}
+},
+fillBuffers: function(t, e) {
+e.worldMatDirty && this.updateWorldVerts(t);
+var i = e._meshBuffer, n = t.node, r = s(n, i, t._renderData, n._color._val), o = i._iData, a = r.indiceOffset, c = r.vertexOffset;
+o[a++] = c;
+o[a++] = c + 1;
+o[a++] = c + 2;
+o[a++] = c + 1;
+o[a++] = c + 3;
+o[a++] = c + 2;
+}
+};
+}), {
+"../../../../../components/CCSprite": 111,
+"../../../../utils/utils": 252,
+"../../utils": 279
+} ],
+267: [ (function(t, e, i) {
+"use strict";
+var n = t("../../utils").fillVerticesWithoutCalc, r = t("../../../../utils/utils").packToDynamicAtlas;
+e.exports = {
+createData: function(t) {
+return t.requestRenderData();
+},
+updateRenderData: function(t) {
+r(t, t._spriteFrame);
+var e = t._renderData, i = t.spriteFrame;
+if (e && i) {
+var n = i.vertices;
+if (n) {
+if (e.vertexCount !== n.x.length) {
+e.vertexCount = n.x.length;
+e.dataLength = 2 * e.vertexCount;
+e.uvDirty = e.vertDirty = !0;
+}
+e.indiceCount = n.triangles.length;
+e.uvDirty && this.updateUVs(t);
+if (e.vertDirty) {
+this.updateVerts(t);
+this.updateWorldVerts(t);
+}
+}
+}
+},
+updateUVs: function(t) {
+for (var e = t.spriteFrame.vertices, i = e.nu, n = e.nv, r = t._renderData, s = r._data, o = 0, a = i.length; o < a; o++) {
+var c = s[o];
+c.u = i[o];
+c.v = n[o];
+}
+r.uvDirty = !1;
+},
+updateVerts: function(t) {
+var e = t.node, i = Math.abs(e.width), n = Math.abs(e.height), r = e.anchorX * i, s = e.anchorY * n, o = t.spriteFrame, a = o.vertices, c = a.x, l = a.y, h = o._originalSize.width, u = o._originalSize.height, _ = o._rect.width, f = o._rect.height, d = o._offset.x + (h - _) / 2, m = o._offset.y + (u - f) / 2, p = i / (t.trim ? _ : h), v = n / (t.trim ? f : u), y = t._renderData, g = y._data;
+if (t.trim) for (var x = 0, C = c.length; x < C; x++) {
+var b = g[x + C];
+b.x = (c[x] - d) * p - r;
+b.y = (u - l[x] - m) * v - s;
+} else for (var A = 0, S = c.length; A < S; A++) {
+var w = g[A + S];
+w.x = c[A] * p - r;
+w.y = (u - l[A]) * v - s;
+}
+y.vertDirty = !1;
+},
+updateWorldVerts: function(t) {
+for (var e = t.node, i = t._renderData, n = i._data, r = e._worldMatrix, s = r.m00, o = r.m01, a = r.m04, c = r.m05, l = r.m12, h = r.m13, u = 0, _ = i.vertexCount; u < _; u++) {
+var f = n[u + _], d = n[u];
+d.x = f.x * s + f.y * a + l;
+d.y = f.x * o + f.y * c + h;
+}
+},
+fillBuffers: function(t, e) {
+var i = t.spriteFrame.vertices;
+if (i) {
+e.worldMatDirty && this.updateWorldVerts(t);
+for (var r = e._meshBuffer, s = t.node, o = n(s, r, t._renderData, s._color._val), a = r._iData, c = o.indiceOffset, l = o.vertexOffset, h = i.triangles, u = 0, _ = h.length; u < _; u++) a[c++] = l + h[u];
+}
+}
+};
+}), {
+"../../../../utils/utils": 252,
+"../../utils": 279
+} ],
+268: [ (function(t, e, i) {
+"use strict";
+var n = t("../../utils").fillVertices, r = t("../../../../utils/utils").packToDynamicAtlas, s = 2 * Math.PI, o = [ cc.v2(0, 0), cc.v2(0, 0), cc.v2(0, 0), cc.v2(0, 0) ], a = [ 0, 0, 0, 0 ], c = [ 0, 0, 0, 0, 0, 0, 0, 0 ], l = [ cc.v2(0, 0), cc.v2(0, 0), cc.v2(0, 0), cc.v2(0, 0) ], h = [ cc.v2(0, 0), cc.v2(0, 0), cc.v2(0, 0), cc.v2(0, 0) ], u = cc.v2(0, 0), _ = [];
+function f(t, e, i, n, r, s, o) {
+var a = Math.sin(s), c = Math.cos(s), l = void 0, h = void 0;
+if (0 !== Math.cos(s)) {
+l = a / c;
+if ((t - r.x) * c > 0) {
+var u = r.y + l * (t - r.x);
+o[0].x = t;
+o[0].y = u;
+}
+if ((e - r.x) * c > 0) {
+var _ = r.y + l * (e - r.x);
+o[2].x = e;
+o[2].y = _;
+}
+}
+if (0 !== Math.sin(s)) {
+h = c / a;
+if ((n - r.y) * a > 0) {
+var f = r.x + h * (n - r.y);
+o[3].x = f;
+o[3].y = n;
+}
+if ((i - r.y) * a > 0) {
+var d = r.x + h * (i - r.y);
+o[1].x = d;
+o[1].y = i;
+}
+}
+}
+function d(t) {
+var e = t.node, i = e.width, n = e.height, r = e.anchorX * i, s = e.anchorY * n, c = -r, l = -s, h = i - r, f = n - s, d = a;
+d[0] = c;
+d[1] = l;
+d[2] = h;
+d[3] = f;
+var m = t._fillCenter, p = u.x = Math.min(Math.max(0, m.x), 1) * (h - c) + c, v = u.y = Math.min(Math.max(0, m.y), 1) * (f - l) + l;
+o[0].x = o[3].x = c;
+o[1].x = o[2].x = h;
+o[0].y = o[1].y = l;
+o[2].y = o[3].y = f;
+_.length = 0;
+p !== d[0] && (_[0] = [ 3, 0 ]);
+p !== d[2] && (_[2] = [ 1, 2 ]);
+v !== d[1] && (_[1] = [ 0, 1 ]);
+v !== d[3] && (_[3] = [ 2, 3 ]);
+}
+function m(t) {
+var e = t._texture.width, i = t._texture.height, n = t._rect, r = void 0, s = void 0, o = void 0, a = void 0, l = c;
+if (t._rotated) {
+r = n.x / e;
+s = (n.x + n.height) / e;
+o = n.y / i;
+a = (n.y + n.width) / i;
+l[0] = l[2] = r;
+l[4] = l[6] = s;
+l[3] = l[7] = a;
+l[1] = l[5] = o;
+} else {
+r = n.x / e;
+s = (n.x + n.width) / e;
+o = n.y / i;
+a = (n.y + n.height) / i;
+l[0] = l[4] = r;
+l[2] = l[6] = s;
+l[1] = l[3] = a;
+l[5] = l[7] = o;
+}
+}
+function p(t, e) {
+var i, n;
+i = e.x - t.x;
+n = e.y - t.y;
+if (0 !== i || 0 !== n) {
+if (0 === i) return n > 0 ? .5 * Math.PI : 1.5 * Math.PI;
+var r = Math.atan(n / i);
+i < 0 && (r += Math.PI);
+return r;
+}
+}
+function v(t, e, i, n, r) {
+var s = a, o = s[0], c = s[1], l = s[2], h = s[3];
+t[e].x = i.x;
+t[e].y = i.y;
+t[e + 1].x = n.x;
+t[e + 1].y = n.y;
+t[e + 2].x = r.x;
+t[e + 2].y = r.y;
+y((i.x - o) / (l - o), (i.y - c) / (h - c), t, e);
+y((n.x - o) / (l - o), (n.y - c) / (h - c), t, e + 1);
+y((r.x - o) / (l - o), (r.y - c) / (h - c), t, e + 2);
+}
+function y(t, e, i, n) {
+var r = c, s = r[0] + (r[2] - r[0]) * t, o = r[4] + (r[6] - r[4]) * t, a = r[1] + (r[3] - r[1]) * t, l = r[5] + (r[7] - r[5]) * t, h = i[n];
+h.u = s + (o - s) * e;
+h.v = a + (l - a) * e;
+}
+e.exports = {
+createData: function(t) {
+return t.requestRenderData();
+},
+updateRenderData: function(t) {
+var e = t._renderData, i = t.spriteFrame;
+if (e && i && (e.vertDirty || e.uvDirty)) {
+var n = e._data;
+r(t, i);
+var c = t._fillStart, y = t._fillRange;
+if (y < 0) {
+c += y;
+y = -y;
+}
+for (;c >= 1; ) c -= 1;
+for (;c < 0; ) c += 1;
+var g = (c *= s) + (y *= s);
+d(t);
+m(i);
+f(a[0], a[2], a[1], a[3], u, c, l);
+f(a[0], a[2], a[1], a[3], u, c + y, h);
+for (var x = 0, C = 0; C < 4; ++C) {
+var b = _[C];
+if (b) if (y >= s) {
+e.dataLength = x + 3;
+v(n, x, u, o[b[0]], o[b[1]]);
+x += 3;
+} else {
+var A = p(u, o[b[0]]), S = p(u, o[b[1]]);
+S < A && (S += s);
+A -= s;
+S -= s;
+for (var w = 0; w < 3; ++w) {
+if (A >= g) ; else if (A >= c) {
+e.dataLength = x + 3;
+v(n, x, u, o[b[0]], S >= g ? h[C] : o[b[1]]);
+x += 3;
+} else if (S <= c) ; else if (S <= g) {
+e.dataLength = x + 3;
+v(n, x, u, l[C], o[b[1]]);
+x += 3;
+} else {
+e.dataLength = x + 3;
+v(n, x, u, l[C], h[C]);
+x += 3;
+}
+A += s;
+S += s;
+}
+}
+}
+e.indiceCount = e.vertexCount = x;
+e.vertDirty = e.uvDirty = !1;
+}
+},
+fillBuffers: function(t, e) {
+for (var i = t.node, r = i._color._val, s = e._meshBuffer, o = t._renderData, a = n(i, s, o, r), c = a.indiceOffset, l = a.vertexOffset, h = s._iData, u = 0; u < o.dataLength; u++) h[c + u] = l + u;
+}
+};
+}), {
+"../../../../utils/utils": 252,
+"../../utils": 279
+} ],
+269: [ (function(t, e, i) {
+"use strict";
+var n = t("../../../../utils/utils").packToDynamicAtlas;
+e.exports = {
+updateRenderData: function(t) {
+n(t, t._spriteFrame);
+var e = t._renderData;
+e && t.spriteFrame && e.vertDirty && this.updateVerts(t);
+},
+fillBuffers: function(t, e) {
+var i = t._renderData._data, n = t.node, r = n._color._val, s = n._worldMatrix, o = s.m00, a = s.m01, c = s.m04, l = s.m05, h = s.m12, u = s.m13, _ = e._meshBuffer, f = _.request(4, 6), d = f.indiceOffset, m = f.byteOffset >> 2, p = f.vertexOffset, v = _._vData, y = _._uintVData, g = _._iData, x = t._spriteFrame.uv;
+v[m + 2] = x[0];
+v[m + 3] = x[1];
+v[m + 7] = x[2];
+v[m + 8] = x[3];
+v[m + 12] = x[4];
+v[m + 13] = x[5];
+v[m + 17] = x[6];
+v[m + 18] = x[7];
+var C = i[0], b = i[3], A = C.x, S = b.x, w = C.y, T = b.y, E = o * A, M = o * S, B = a * A, D = a * S, I = c * w, P = c * T, R = l * w, L = l * T;
+v[m] = E + I + h;
+v[m + 1] = B + R + u;
+v[m + 5] = M + I + h;
+v[m + 6] = D + R + u;
+v[m + 10] = E + P + h;
+v[m + 11] = B + L + u;
+v[m + 15] = M + P + h;
+v[m + 16] = D + L + u;
+y[m + 4] = r;
+y[m + 9] = r;
+y[m + 14] = r;
+y[m + 19] = r;
+g[d++] = p;
+g[d++] = p + 1;
+g[d++] = p + 2;
+g[d++] = p + 1;
+g[d++] = p + 3;
+g[d++] = p + 2;
+},
+createData: function(t) {
+var e = t.requestRenderData();
+e.dataLength = 4;
+e.vertexCount = 4;
+e.indiceCount = 6;
+return e;
+},
+updateVerts: function(t) {
+var e = t._renderData, i = t.node, n = e._data, r = i.width, s = i.height, o = i.anchorX * r, a = i.anchorY * s, c = void 0, l = void 0, h = void 0, u = void 0;
+if (t.trim) {
+c = -o;
+l = -a;
+h = r - o;
+u = s - a;
+} else {
+var _ = t.spriteFrame, f = _._originalSize.width, d = _._originalSize.height, m = _._rect.width, p = _._rect.height, v = _._offset, y = r / f, g = s / d, x = v.x + (f - m) / 2, C = v.x - (f - m) / 2, b = v.y + (d - p) / 2, A = v.y - (d - p) / 2;
+c = x * y - o;
+l = b * g - a;
+h = r + C * y - o;
+u = s + A * g - a;
+}
+n[0].x = c;
+n[0].y = l;
+n[3].x = h;
+n[3].y = u;
+e.vertDirty = !1;
+}
+};
+}), {
+"../../../../utils/utils": 252
+} ],
+270: [ (function(t, e, i) {
+"use strict";
+var n = t("../../../../utils/utils").packToDynamicAtlas;
+e.exports = {
+createData: function(t) {
+var e = t.requestRenderData();
+e.dataLength = 20;
+e.vertexCount = 16;
+e.indiceCount = 54;
+return e;
+},
+updateRenderData: function(t) {
+n(t, t._spriteFrame);
+var e = t._renderData;
+if (e && t.spriteFrame) {
+if (e.vertDirty) {
+this.updateVerts(t);
+this.updateWorldVerts(t);
+}
+}
+},
+updateVerts: function(t) {
+var e = t._renderData, i = e._data, n = t.node, r = n.width, s = n.height, o = n.anchorX * r, a = n.anchorY * s, c = t.spriteFrame, l = c.insetLeft, h = c.insetRight, u = c.insetTop, _ = c.insetBottom, f = r - l - h, d = s - u - _, m = r / (l + h), p = s / (u + _);
+m = isNaN(m) || m > 1 ? 1 : m;
+p = isNaN(p) || p > 1 ? 1 : p;
+f = f < 0 ? 0 : f;
+d = d < 0 ? 0 : d;
+i[0].x = -o;
+i[0].y = -a;
+i[1].x = l * m - o;
+i[1].y = _ * p - a;
+i[2].x = i[1].x + f;
+i[2].y = i[1].y + d;
+i[3].x = r - o;
+i[3].y = s - a;
+e.vertDirty = !1;
+},
+fillBuffers: function(t, e) {
+e.worldMatDirty && this.updateWorldVerts(t);
+for (var i = t._renderData, n = t.node._color._val, r = i._data, s = e._meshBuffer, o = i.vertexCount, a = t.spriteFrame.uvSliced, c = s.request(o, i.indiceCount), l = c.indiceOffset, h = c.byteOffset >> 2, u = c.vertexOffset, _ = s._vData, f = s._uintVData, d = s._iData, m = 4; m < 20; ++m) {
+var p = r[m], v = a[m - 4];
+_[h++] = p.x;
+_[h++] = p.y;
+_[h++] = v.u;
+_[h++] = v.v;
+f[h++] = n;
+}
+for (var y = 0; y < 3; ++y) for (var g = 0; g < 3; ++g) {
+var x = u + 4 * y + g;
+d[l++] = x;
+d[l++] = x + 1;
+d[l++] = x + 4;
+d[l++] = x + 1;
+d[l++] = x + 5;
+d[l++] = x + 4;
+}
+},
+updateWorldVerts: function(t) {
+for (var e = t.node, i = t._renderData._data, n = e._worldMatrix, r = n.m00, s = n.m01, o = n.m04, a = n.m05, c = n.m12, l = n.m13, h = 0; h < 4; ++h) for (var u = i[h], _ = 0; _ < 4; ++_) {
+var f = i[_], d = i[4 + 4 * h + _];
+d.x = f.x * r + u.y * o + c;
+d.y = f.x * s + u.y * a + l;
+}
+}
+};
+}), {
+"../../../../utils/utils": 252
+} ],
+271: [ (function(t, e, i) {
+"use strict";
+var n = t("../../../../utils/utils").packToDynamicAtlas;
+e.exports = {
+vertexOffset: 5,
+uvOffset: 2,
+colorOffset: 4,
+createData: function(t) {
+return t.requestRenderData();
+},
+updateRenderData: function(t) {
+n(t, t._spriteFrame);
+var e = t._renderData, i = t.spriteFrame;
+if (i && e && (e.uvDirty || e.vertDirty)) {
+var r = t.node, s = Math.abs(r.width), o = Math.abs(r.height), a = r.anchorX * s, c = r.anchorY * o, l = i._rect, h = l.width, u = l.height, _ = s / h, f = o / u, d = Math.ceil(f), m = Math.ceil(_), p = e._data;
+e.dataLength = Math.max(8, d + 1, m + 1);
+for (var v = 0; v <= m; ++v) p[v].x = Math.min(h * v, s) - a;
+for (var y = 0; y <= d; ++y) p[y].y = Math.min(u * y, o) - c;
+e.vertexCount = d * m * 4;
+e.indiceCount = d * m * 6;
+e.uvDirty = !1;
+e.vertDirty = !1;
+}
+},
+fillVertices: function(t, e, i, n, r, s) {
+for (var o = i.m00, a = i.m01, c = i.m04, l = i.m05, h = i.m12, u = i.m13, _ = void 0, f = void 0, d = void 0, m = void 0, p = 0, v = n; p < v; ++p) {
+d = s[p].y;
+m = s[p + 1].y;
+for (var y = 0, g = r; y < g; ++y) {
+_ = s[y].x;
+f = s[y + 1].x;
+t[e] = _ * o + d * c + h;
+t[e + 1] = _ * a + d * l + u;
+t[e + 5] = f * o + d * c + h;
+t[e + 6] = f * a + d * l + u;
+t[e + 10] = _ * o + m * c + h;
+t[e + 11] = _ * a + m * l + u;
+t[e + 15] = f * o + m * c + h;
+t[e + 16] = f * a + m * l + u;
+e += 20;
+}
+}
+},
+fillBuffers: function(t, e) {
+var i = t.node, n = i.is3DNode, r = i._color._val, s = t._renderData, o = s._data, a = n ? e._meshBuffer3D : e._meshBuffer, c = a.request(s.vertexCount, s.indiceCount), l = c.indiceOffset, h = c.byteOffset >> 2, u = c.vertexOffset, _ = a._vData, f = a._uintVData, d = a._iData, m = t.spriteFrame._rotated, p = t.spriteFrame.uv, v = t.spriteFrame._rect, y = Math.abs(i.width), g = Math.abs(i.height), x = y / v.width, C = g / v.height, b = Math.ceil(C), A = Math.ceil(x), S = i._worldMatrix;
+this.fillVertices(_, h, S, b, A, o);
+for (var w = this.vertexOffset, T = this.uvOffset, E = this.colorOffset, M = w, B = 2 * w, D = 3 * w, I = 4 * w, P = void 0, R = void 0, L = 0, F = b; L < F; ++L) {
+R = Math.min(1, C - L);
+for (var O = 0, V = A; O < V; ++O) {
+P = Math.min(1, x - O);
+var N = h + T, k = N + 1;
+if (m) {
+_[N] = p[0];
+_[k] = p[1];
+_[N + M] = p[0];
+_[k + M] = p[1] + (p[7] - p[1]) * P;
+_[N + B] = p[0] + (p[6] - p[0]) * R;
+_[k + B] = p[1];
+_[N + D] = _[N + B];
+_[k + D] = _[k + M];
+} else {
+_[N] = p[0];
+_[k] = p[1];
+_[N + M] = p[0] + (p[6] - p[0]) * P;
+_[k + M] = p[1];
+_[N + B] = p[0];
+_[k + B] = p[1] + (p[7] - p[1]) * R;
+_[N + D] = _[N + M];
+_[k + D] = _[k + B];
+}
+f[h + E] = r;
+f[h + E + M] = r;
+f[h + E + B] = r;
+f[h + E + D] = r;
+h += I;
+}
+}
+for (var z = s.indiceCount, G = 0; G < z; G += 6) {
+d[l++] = u;
+d[l++] = u + 1;
+d[l++] = u + 2;
+d[l++] = u + 1;
+d[l++] = u + 3;
+d[l++] = u + 2;
+u += 4;
+}
+}
+};
+}), {
+"../../../../utils/utils": 252
+} ],
+272: [ (function(t, e, i) {
+"use strict";
+var n = t("../../../../../platform/js"), r = t("../2d/bar-filled"), s = t("../../utils").fillVerticesWithoutCalc3D, o = cc.vmath.vec3;
+e.exports = n.addon({
+updateWorldVerts: function(t) {
+for (var e = t.node, i = t._renderData._data, n = e._worldMatrix, r = 0; r < 4; r++) {
+var s = i[r + 4], a = i[r];
+o.transformMat4(a, s, n);
+}
+},
+fillBuffers: function(t, e) {
+e.worldMatDirty && this.updateWorldVerts(t);
+var i = e._meshBuffer3D, n = t.node, r = s(n, i, t._renderData, n._color._val), o = i._iData, a = r.indiceOffset, c = r.vertexOffset;
+o[a++] = c;
+o[a++] = c + 1;
+o[a++] = c + 2;
+o[a++] = c + 1;
+o[a++] = c + 3;
+o[a++] = c + 2;
+}
+}, r);
+}), {
+"../../../../../platform/js": 221,
+"../../utils": 279,
+"../2d/bar-filled": 266
+} ],
+273: [ (function(t, e, i) {
+"use strict";
+var n = t("../../../../../platform/js"), r = t("../2d/mesh"), s = t("../../utils").fillVerticesWithoutCalc3D, o = cc.vmath.vec3, a = o.create();
+e.exports = n.addon({
+updateWorldVerts: function(t) {
+for (var e = t.node, i = t._renderData, n = i._data, r = e._worldMatrix, s = 0, c = i.vertexCount; s < c; s++) {
+var l = n[s + c], h = n[s];
+o.set(a, l.x, l.y, 0);
+o.transformMat4(h, a, r);
+}
+},
+fillBuffers: function(t, e) {
+var i = t.spriteFrame.vertices;
+if (i) {
+e.worldMatDirty && this.updateWorldVerts(t);
+for (var n = e._meshBuffer3D, r = t.node, o = s(r, n, t._renderData, r._color._val), a = n._iData, c = o.indiceOffset, l = o.vertexOffset, h = i.triangles, u = 0, _ = h.length; u < _; u++) a[c++] = l + h[u];
+}
+}
+}, r);
+}), {
+"../../../../../platform/js": 221,
+"../../utils": 279,
+"../2d/mesh": 267
+} ],
+274: [ (function(t, e, i) {
+"use strict";
+var n = t("../../../../../platform/js"), r = t("../2d/radial-filled"), s = t("../../utils").fillVertices3D;
+e.exports = n.addon({
+fillBuffers: function(t, e) {
+for (var i = t.node, n = i._color._val, r = e._meshBuffer3D, o = t._renderData, a = s(i, r, o, n), c = a.indiceOffset, l = a.vertexOffset, h = r._iData, u = 0; u < o.dataLength; u++) h[c + u] = l + u;
+}
+}, r);
+}), {
+"../../../../../platform/js": 221,
+"../../utils": 279,
+"../2d/radial-filled": 268
+} ],
+275: [ (function(t, e, i) {
+"use strict";
+var n = t("../../../../../platform/js"), r = t("../2d/simple"), s = cc.vmath.vec3;
+e.exports = n.addon({
+fillBuffers: (function() {
+for (var t = [], e = 0; e < 4; e++) t.push(s.create());
+return function(e, i) {
+var n = e._renderData._data, r = e.node, o = r._color._val, a = r._worldMatrix, c = i._meshBuffer3D, l = c.request(4, 6), h = l.byteOffset >> 2, u = l.indiceOffset, _ = l.vertexOffset, f = c._vData, d = c._uintVData, m = c._iData, p = n[0], v = n[3];
+s.set(t[0], p.x, p.y, 0);
+s.set(t[1], v.x, p.y, 0);
+s.set(t[2], p.x, v.y, 0);
+s.set(t[3], v.x, v.y, 0);
+for (var y = e._spriteFrame.uv, g = 0; g < 4; g++) {
+var x = t[g];
+s.transformMat4(x, x, a);
+f[h++] = x.x;
+f[h++] = x.y;
+f[h++] = x.z;
+var C = 2 * g;
+f[h++] = y[0 + C];
+f[h++] = y[1 + C];
+d[h++] = o;
+}
+m[u++] = _;
+m[u++] = _ + 1;
+m[u++] = _ + 2;
+m[u++] = _ + 1;
+m[u++] = _ + 3;
+m[u++] = _ + 2;
+};
+})()
+}, r);
+}), {
+"../../../../../platform/js": 221,
+"../2d/simple": 269
+} ],
+276: [ (function(t, e, i) {
+"use strict";
+var n = t("../../../../../platform/js"), r = t("../2d/sliced"), s = cc.vmath.vec3, o = s.create();
+e.exports = n.addon({
+fillBuffers: function(t, e) {
+e.worldMatDirty && this.updateWorldVerts(t);
+for (var i = t._renderData, n = t.node._color._val, r = i._data, s = e._meshBuffer3D, o = i.vertexCount, a = t.spriteFrame.uvSliced, c = s.request(o, i.indiceCount), l = c.byteOffset >> 2, h = c.indiceOffset, u = c.vertexOffset, _ = s._vData, f = s._uintVData, d = s._iData, m = 4; m < 20; ++m) {
+var p = r[m], v = a[m - 4];
+_[l++] = p.x;
+_[l++] = p.y;
+_[l++] = p.z;
+_[l++] = v.u;
+_[l++] = v.v;
+f[l++] = n;
+}
+for (var y = 0; y < 3; ++y) for (var g = 0; g < 3; ++g) {
+var x = u + 4 * y + g;
+d[h++] = x;
+d[h++] = x + 1;
+d[h++] = x + 4;
+d[h++] = x + 1;
+d[h++] = x + 5;
+d[h++] = x + 4;
+}
+},
+updateWorldVerts: function(t) {
+for (var e = t.node, i = t._renderData._data, n = e._worldMatrix, r = 0; r < 4; ++r) for (var a = i[r], c = 0; c < 4; ++c) {
+var l = i[c], h = i[4 + 4 * r + c];
+s.set(o, l.x, a.y, 0);
+s.transformMat4(h, o, n);
+}
+}
+}, r);
+}), {
+"../../../../../platform/js": 221,
+"../2d/sliced": 270
+} ],
+277: [ (function(t, e, i) {
+"use strict";
+var n = t("../../../../../platform/js"), r = t("../2d/tiled"), s = cc.vmath.vec3;
+e.exports = n.addon({
+vertexOffset: 6,
+uvOffset: 3,
+colorOffset: 5,
+fillVertices: (function() {
+for (var t = [], e = 0; e < 4; e++) t.push(s.create());
+return function(e, i, n, r, o, a) {
+for (var c = void 0, l = void 0, h = void 0, u = void 0, _ = 0, f = r; _ < f; ++_) {
+h = a[_].y;
+u = a[_ + 1].y;
+for (var d = 0, m = o; d < m; ++d) {
+c = a[d].x;
+l = a[d + 1].x;
+s.set(t[0], c, h, 0);
+s.set(t[1], l, h, 0);
+s.set(t[2], c, u, 0);
+s.set(t[3], l, u, 0);
+for (var p = 0; p < 4; p++) {
+var v = t[p];
+s.transformMat4(v, v, n);
+var y = 6 * p;
+e[i + y] = v.x;
+e[i + y + 1] = v.y;
+e[i + y + 2] = v.z;
+}
+i += 24;
+}
+}
+};
+})()
+}, r);
+}), {
+"../../../../../platform/js": 221,
+"../2d/tiled": 271
+} ],
+278: [ (function(t, e, i) {
+"use strict";
+var n = t("../../../../components/CCSprite"), r = n.Type, s = n.FillType, o = t("./2d/simple"), a = t("./2d/sliced"), c = t("./2d/tiled"), l = t("./2d/radial-filled"), h = t("./2d/bar-filled"), u = t("./2d/mesh"), _ = t("./3d/simple"), f = t("./3d/sliced"), d = t("./3d/tiled"), m = t("./3d/radial-filled"), p = t("./3d/bar-filled"), v = t("./3d/mesh"), y = {
+getAssembler: function(t) {
+var e = t.node.is3DNode, i = e ? _ : o;
+switch (t.type) {
+case r.SLICED:
+i = e ? f : a;
+break;
+
+case r.TILED:
+i = e ? d : c;
+break;
+
+case r.FILLED:
+i = t._fillType === s.RADIAL ? e ? m : l : e ? p : h;
+break;
+
+case r.MESH:
+i = e ? v : u;
+}
+return i;
+},
+updateRenderData: function(t) {
+return t.__allocedDatas;
+}
+};
+n._assembler = y;
+e.exports = y;
+}), {
+"../../../../components/CCSprite": 111,
+"./2d/bar-filled": 266,
+"./2d/mesh": 267,
+"./2d/radial-filled": 268,
+"./2d/simple": 269,
+"./2d/sliced": 270,
+"./2d/tiled": 271,
+"./3d/bar-filled": 272,
+"./3d/mesh": 273,
+"./3d/radial-filled": 274,
+"./3d/simple": 275,
+"./3d/sliced": 276,
+"./3d/tiled": 277
+} ],
+279: [ (function(t, e, i) {
+"use strict";
+var n = cc.vmath.vec3, r = n.create();
+e.exports = {
+fillVertices: function(t, e, i, n) {
+for (var r = i.vertexCount, s = e.request(r, i.indiceCount), o = s.byteOffset >> 2, a = e._vData, c = e._uintVData, l = t._worldMatrix, h = l.m00, u = l.m01, _ = l.m04, f = l.m05, d = l.m12, m = l.m13, p = i._data, v = 0; v < r; v++) {
+var y = p[v];
+a[o++] = y.x * h + y.y * _ + d;
+a[o++] = y.x * u + y.y * f + m;
+a[o++] = y.u;
+a[o++] = y.v;
+c[o++] = n;
+}
+return s;
+},
+fillMeshVertices: function(t, e, i, n) {
+for (var r = i.vertexCount, s = e.request(r, i.indiceCount), o = s.indiceOffset, a = s.byteOffset >> 2, c = s.vertexOffset, l = e._vData, h = e._uintVData, u = e._iData, _ = t._worldMatrix, f = _.m00, d = _.m01, m = _.m04, p = _.m05, v = _.m12, y = _.m13, g = i._data, x = 0; x < r; x++) {
+var C = g[x];
+l[a++] = C.x * f + C.y * m + v;
+l[a++] = C.x * d + C.y * p + y;
+l[a++] = C.u;
+l[a++] = C.v;
+h[a++] = n;
+}
+for (var b = 0, A = r / 4; b < A; b++) {
+var S = c + 4 * b;
+u[o++] = S;
+u[o++] = S + 1;
+u[o++] = S + 2;
+u[o++] = S + 1;
+u[o++] = S + 3;
+u[o++] = S + 2;
+}
+return s;
+},
+fillVertices3D: function(t, e, i, s) {
+for (var o = i.vertexCount, a = e.request(o, i.indiceCount), c = a.byteOffset >> 2, l = e._vData, h = e._uintVData, u = t._worldMatrix, _ = i._data, f = 0; f < o; f++) {
+var d = _[f];
+n.set(r, d.x, d.y, 0);
+n.transformMat4(r, r, u);
+l[c++] = r.x;
+l[c++] = r.y;
+l[c++] = r.z;
+l[c++] = d.u;
+l[c++] = d.v;
+h[c++] = s;
+}
+return a;
+},
+fillMeshVertices3D: function(t, e, i, s) {
+for (var o = i.vertexCount, a = e.request(o, i.indiceCount), c = a.indiceOffset, l = a.vertexOffset, h = a.byteOffset >> 2, u = e._vData, _ = e._uintVData, f = e._iData, d = t._worldMatrix, m = i._data, p = 0; p < o; p++) {
+var v = m[p];
+n.set(r, v.x, v.y, 0);
+n.transformMat4(r, r, d);
+u[h++] = r.x;
+u[h++] = r.y;
+u[h++] = r.z;
+u[h++] = v.u;
+u[h++] = v.v;
+_[h++] = s;
+}
+for (var y = 0, g = o / 4; y < g; y++) {
+var x = l + 4 * y;
+f[c++] = x;
+f[c++] = x + 1;
+f[c++] = x + 2;
+f[c++] = x + 1;
+f[c++] = x + 3;
+f[c++] = x + 2;
+}
+return a;
+},
+fillVerticesWithoutCalc: function(t, e, i, n) {
+for (var r = i.vertexCount, s = e.request(r, i.indiceCount), o = s.byteOffset >> 2, a = e._vData, c = e._uintVData, l = i._data, h = 0; h < r; h++) {
+var u = l[h];
+a[o++] = u.x;
+a[o++] = u.y;
+a[o++] = u.u;
+a[o++] = u.v;
+c[o++] = n;
+}
+return s;
+},
+fillVerticesWithoutCalc3D: function(t, e, i, n) {
+for (var r = i.vertexCount, s = e.request(r, i.indiceCount).byteOffset >> 2, o = e._vData, a = e._uintVData, c = i._data, l = 0; l < r; l++) {
+var h = c[l];
+o[s++] = h.x;
+o[s++] = h.y;
+o[s++] = h.z;
+o[s++] = h.u;
+o[s++] = h.v;
+a[s++] = n;
+}
+}
+};
+}), {} ],
+280: [ (function(t, e, i) {
+"use strict";
+var n = (function(t) {
+return t && t.__esModule ? t : {
+default: t
+};
+})(t("../../../renderer/gfx"));
+var r = cc.Class({
+name: "cc.MeshBuffer",
+ctor: function(t, e) {
+this.byteStart = 0;
+this.byteOffset = 0;
+this.indiceStart = 0;
+this.indiceOffset = 0;
+this.vertexStart = 0;
+this.vertexOffset = 0;
+this._vertexFormat = e;
+this._vertexBytes = this._vertexFormat._bytes;
+this._arrOffset = 0;
+this._vbArr = [];
+this._vb = new n.default.VertexBuffer(t._device, e, n.default.USAGE_DYNAMIC, new ArrayBuffer(), 0);
+this._vbArr[0] = this._vb;
+this._ibArr = [];
+this._ib = new n.default.IndexBuffer(t._device, n.default.INDEX_FMT_UINT16, n.default.USAGE_STATIC, new ArrayBuffer(), 0);
+this._ibArr[0] = this._ib;
+this._vData = null;
+this._uintVData = null;
+this._iData = null;
+this._batcher = t;
+if (cc.sys.os === cc.sys.OS_IOS && cc.sys.isBrowser && cc.sys.isMobile && /iPhone OS 14/.test(window.navigator.userAgent)) {
+this._initVDataCount = 256 * e._bytes * 4;
+this._initIDataCount = 76800;
+} else {
+this._initVDataCount = 256 * e._bytes;
+this._initIDataCount = 1536;
+}
+this._offsetInfo = {
+byteOffset: 0,
+vertexOffset: 0,
+indiceOffset: 0
+};
+this._reallocBuffer();
+},
+uploadData: function() {
+if (0 !== this.byteOffset && this._dirty) {
+var t = new Float32Array(this._vData.buffer, 0, this.byteOffset >> 2), e = new Uint16Array(this._iData.buffer, 0, this.indiceOffset);
+this._vb.update(0, t);
+this._ib.update(0, e);
+this._dirty = !1;
+}
+},
+switchBuffer: function() {
+var t = ++this._arrOffset;
+this.byteStart = 0;
+this.byteOffset = 0;
+this.vertexStart = 0;
+this.vertexOffset = 0;
+this.indiceStart = 0;
+this.indiceOffset = 0;
+if (t < this._vbArr.length) {
+this._vb = this._vbArr[t];
+this._ib = this._ibArr[t];
+} else {
+this._vb = new n.default.VertexBuffer(this._batcher._device, this._vertexFormat, n.default.USAGE_DYNAMIC, new ArrayBuffer(), 0);
+this._vbArr[t] = this._vb;
+this._vb._bytes = this._vData.byteLength;
+this._ib = new n.default.IndexBuffer(this._batcher._device, n.default.INDEX_FMT_UINT16, n.default.USAGE_STATIC, new ArrayBuffer(), 0);
+this._ibArr[t] = this._ib;
+this._ib._bytes = this._iData.byteLength;
+}
+},
+checkAndSwitchBuffer: function(t) {
+if (this.vertexOffset + t > 65535) {
+this.uploadData();
+this._batcher._flush();
+cc.sys.os === cc.sys.OS_IOS && cc.sys.isBrowser && cc.sys.isMobile && /iPhone OS 14/.test(window.navigator.userAgent) || this.switchBuffer();
+}
+},
+requestStatic: function(t, e) {
+this.checkAndSwitchBuffer(t);
+var i = this.byteOffset + t * this._vertexBytes, n = this.indiceOffset + e, r = this._vData.byteLength, s = this._iData.length;
+if (i > r || n > s) {
+for (;r < i || s < n; ) {
+this._initVDataCount *= 2;
+this._initIDataCount *= 2;
+r = 4 * this._initVDataCount;
+s = this._initIDataCount;
+}
+this._reallocBuffer();
+}
+var o = this._offsetInfo;
+o.vertexOffset = this.vertexOffset;
+this.vertexOffset += t;
+o.indiceOffset = this.indiceOffset;
+this.indiceOffset += e;
+o.byteOffset = this.byteOffset;
+this.byteOffset = i;
+this._dirty = !0;
+},
+request: function(t, e) {
+if (this._batcher._buffer !== this) {
+this._batcher._flush();
+this._batcher._buffer = this;
+}
+this.requestStatic(t, e);
+return this._offsetInfo;
+},
+_reallocBuffer: function() {
+this._reallocVData(!0);
+this._reallocIData(!0);
+},
+_reallocVData: function(t) {
+var e = void 0;
+this._vData && (e = new Uint8Array(this._vData.buffer));
+this._vData = new Float32Array(this._initVDataCount);
+this._uintVData = new Uint32Array(this._vData.buffer);
+var i = new Uint8Array(this._uintVData.buffer);
+if (e && t) for (var n = 0, r = e.length; n < r; n++) i[n] = e[n];
+this._vb._bytes = this._vData.byteLength;
+},
+_reallocIData: function(t) {
+var e = this._iData;
+this._iData = new Uint16Array(this._initIDataCount);
+if (e && t) for (var i = this._iData, n = 0, r = e.length; n < r; n++) i[n] = e[n];
+this._ib._bytes = this._iData.byteLength;
+},
+reset: function() {
+this._arrOffset = 0;
+this._vb = this._vbArr[0];
+this._ib = this._ibArr[0];
+this.byteStart = 0;
+this.byteOffset = 0;
+this.indiceStart = 0;
+this.indiceOffset = 0;
+this.vertexStart = 0;
+this.vertexOffset = 0;
+this._dirty = !1;
+},
+destroy: function() {
+for (var t = 0; t < this._vbArr.length; t++) {
+this._vbArr[t].destroy();
+}
+this._vbArr = null;
+for (var e = 0; e < this._ibArr.length; e++) {
+this._ibArr[e].destroy();
+}
+this._ibArr = null;
+this._ib = null;
+this._vb = null;
+}
+});
+cc.MeshBuffer = e.exports = r;
+}), {
+"../../../renderer/gfx": 349
+} ],
+281: [ (function(t, e, i) {
+"use strict";
+var n = o(t("../../../renderer/core/input-assembler")), r = o(t("../../../renderer/memop/recycle-pool")), s = o(t("../../../renderer/scene/model"));
+function o(t) {
+return t && t.__esModule ? t : {
+default: t
+};
+}
+var a = t("./vertex-format"), c = a.vfmtPosUvColor, l = a.vfmt3D, h = t("./quad-buffer"), u = t("./mesh-buffer"), _ = t("./spine-buffer"), f = t("../../assets/material/CCMaterial"), d = new (t("../../platform/id-generater"))("VertextFormat"), m = {}, p = new f(), v = new n.default();
+v._count = 0;
+var y = function(t, e) {
+this._renderScene = e;
+this._device = t;
+this.walking = !1;
+this.material = p;
+this.cullingMask = 1;
+this._iaPool = new r.default(function() {
+return new n.default();
+}, 16);
+this._modelPool = new r.default(function() {
+return new s.default();
+}, 16);
+this._quadBuffer = this.getBuffer("quad", c);
+this._meshBuffer = this.getBuffer("mesh", c);
+this._quadBuffer3D = this.getBuffer("quad", l);
+this._meshBuffer3D = this.getBuffer("mesh", l);
+this._buffer = this._quadBuffer;
+this._batchedModels = [];
+this._dummyNode = new cc.Node();
+this._sortKey = 0;
+this.node = this._dummyNode;
+this.parentOpacity = 1;
+this.parentOpacityDirty = 0;
+this.worldMatDirty = 0;
+this.customProperties = null;
+}, g = cc.sys.os === cc.sys.OS_IOS && cc.sys.isBrowser && cc.sys.isMobile && /iPhone OS 14/.test(window.navigator.userAgent);
+y.prototype = {
+constructor: y,
+reset: function() {
+this._iaPool.reset();
+for (var t = this._renderScene, e = this._batchedModels, i = 0; i < e.length; ++i) {
+e[i].setInputAssembler(null);
+e[i].setEffect(null);
+t.removeModel(e[i]);
+}
+this._modelPool.reset();
+e.length = 0;
+this._sortKey = 0;
+for (var n in m) m[n].reset();
+this._buffer = this._quadBuffer;
+this.node = this._dummyNode;
+this.material = p;
+this.cullingMask = 1;
+this.parentOpacity = 1;
+this.parentOpacityDirty = 0;
+this.worldMatDirty = 0;
+this.customProperties = null;
+},
+_flushMaterial: function(t) {
+this.material = t;
+var e = t.effect;
+if (e) {
+var i = this._modelPool.add();
+this._batchedModels.push(i);
+i.sortKey = this._sortKey++;
+i._cullingMask = this.cullingMask;
+i.setNode(this.node);
+i.setEffect(e, null);
+i.setInputAssembler(v);
+this._renderScene.addModel(i);
+}
+},
+_flush: function() {
+var t = this.material, e = this._buffer, i = e.indiceStart, n = e.indiceOffset - i;
+if (this.walking && t && !(n <= 0)) {
+var r = t.effect;
+if (r) {
+var s = this._iaPool.add();
+s._vertexBuffer = e._vb;
+s._indexBuffer = e._ib;
+s._start = i;
+s._count = n;
+var o = this._modelPool.add();
+this._batchedModels.push(o);
+o.sortKey = this._sortKey++;
+o._cullingMask = this.cullingMask;
+o.setNode(this.node);
+o.setEffect(r, this.customProperties);
+o.setInputAssembler(s);
+this._renderScene.addModel(o);
+if (g) {
+e.uploadData();
+e.switchBuffer();
+} else {
+e.byteStart = e.byteOffset;
+e.indiceStart = e.indiceOffset;
+e.vertexStart = e.vertexOffset;
+}
+}
+}
+},
+_flushIA: function(t) {
+var e = t.material;
+if (t.ia && e) {
+this.material = e;
+var i = e.effect;
+if (i) {
+var n = this._modelPool.add();
+this._batchedModels.push(n);
+n.sortKey = this._sortKey++;
+n._cullingMask = this.cullingMask;
+n.setNode(this.node);
+n.setEffect(i, this.customProperties);
+n.setInputAssembler(t.ia);
+this._renderScene.addModel(n);
+}
+}
+},
+_commitComp: function(t, e, i) {
+var n = t.sharedMaterials[0];
+if (n && n.getHash() !== this.material.getHash() || this.cullingMask !== i) {
+this._flush();
+this.node = n.getDefine("_USE_MODEL") ? t.node : this._dummyNode;
+this.material = n;
+this.cullingMask = i;
+}
+e.fillBuffers(t, this);
+},
+_commitIA: function(t, e, i) {
+this._flush();
+this.cullingMask = i;
+this.material = t.sharedMaterials[0] || p;
+this.node = this.material.getDefine("_USE_MODEL") ? t.node : this._dummyNode;
+e.renderIA(t, this);
+},
+terminate: function() {
+cc.dynamicAtlasManager && cc.dynamicAtlasManager.enabled && cc.dynamicAtlasManager.update();
+this._flush();
+for (var t in m) m[t].uploadData();
+},
+getBuffer: function(t, e) {
+e.name || (e.name = d.getNewId());
+var i = t + e.name, n = m[i];
+if (!n) {
+if ("mesh" === t) n = new u(this, e); else if ("quad" === t) n = new h(this, e); else {
+if ("spine" !== t) {
+cc.error("Not support buffer type [" + t + "]");
+return null;
+}
+n = new _(this, e);
+}
+m[i] = n;
+}
+return n;
+}
+};
+e.exports = y;
+}), {
+"../../../renderer/core/input-assembler": 339,
+"../../../renderer/memop/recycle-pool": 364,
+"../../../renderer/scene/model": 373,
+"../../assets/material/CCMaterial": 75,
+"../../platform/id-generater": 217,
+"./mesh-buffer": 280,
+"./quad-buffer": 282,
+"./spine-buffer": 283,
+"./vertex-format": 284
+} ],
+282: [ (function(t, e, i) {
+"use strict";
+var n = t("./mesh-buffer"), r = cc.Class({
+name: "cc.QuadBuffer",
+extends: n,
+_fillQuadBuffer: function() {
+for (var t = this._initIDataCount / 6, e = this._iData, i = 0, n = 0; i < t; i++) {
+var r = 4 * i;
+e[n++] = r;
+e[n++] = r + 1;
+e[n++] = r + 2;
+e[n++] = r + 1;
+e[n++] = r + 3;
+e[n++] = r + 2;
+}
+var s = new Uint16Array(this._iData.buffer, 0, 6 * t);
+this._ib.update(0, s);
+},
+uploadData: function() {
+if (0 !== this.byteOffset && this._dirty) {
+var t = new Float32Array(this._vData.buffer, 0, this.byteOffset >> 2);
+this._vb.update(0, t);
+this._dirty = !1;
+}
+},
+switchBuffer: function() {
+this._super();
+if (this.indiceOffset > 0) {
+var t = new Uint16Array(this._iData.buffer, 0, this.indiceOffset);
+this._ib.update(0, t);
+}
+},
+_reallocBuffer: function() {
+this._reallocVData(!0);
+this._reallocIData();
+this._fillQuadBuffer();
+}
+});
+cc.QuadBuffer = e.exports = r;
+}), {
+"./mesh-buffer": 280
+} ],
+283: [ (function(t, e, i) {
+"use strict";
+var n = cc.Class({
+name: "cc.SpineBuffer",
+extends: t("./mesh-buffer"),
+requestStatic: function(t, e) {
+this.checkAndSwitchBuffer(t);
+var i = this.byteOffset + t * this._vertexBytes, n = this.indiceOffset + e, r = this._vData.byteLength, s = this._iData.length;
+if (i > r || n > s) {
+for (;r < i || s < n; ) {
+this._initVDataCount *= 2;
+this._initIDataCount *= 2;
+r = 4 * this._initVDataCount;
+s = this._initIDataCount;
+}
+this._reallocBuffer();
+}
+var o = this._offsetInfo;
+o.vertexOffset = this.vertexOffset;
+o.indiceOffset = this.indiceOffset;
+o.byteOffset = this.byteOffset;
+},
+adjust: function(t, e) {
+this.vertexOffset += t;
+this.indiceOffset += e;
+this.byteOffset = this.byteOffset + t * this._vertexBytes;
+this._dirty = !0;
+}
+});
+cc.SpineBuffer = e.exports = n;
+}), {
+"./mesh-buffer": 280
+} ],
+284: [ (function(t, e, i) {
+"use strict";
+var n = (function(t) {
+return t && t.__esModule ? t : {
+default: t
+};
+})(t("../../../renderer/gfx"));
+var r = new n.default.VertexFormat([ {
+name: n.default.ATTR_POSITION,
+type: n.default.ATTR_TYPE_FLOAT32,
+num: 3
+}, {
+name: n.default.ATTR_UV0,
+type: n.default.ATTR_TYPE_FLOAT32,
+num: 2
+}, {
+name: n.default.ATTR_COLOR,
+type: n.default.ATTR_TYPE_UINT8,
+num: 4,
+normalize: !0
+} ]);
+r.name = "vfmt3D";
+n.default.VertexFormat.XYZ_UV_Color = r;
+var s = new n.default.VertexFormat([ {
+name: n.default.ATTR_POSITION,
+type: n.default.ATTR_TYPE_FLOAT32,
+num: 2
+}, {
+name: n.default.ATTR_UV0,
+type: n.default.ATTR_TYPE_FLOAT32,
+num: 2
+}, {
+name: n.default.ATTR_COLOR,
+type: n.default.ATTR_TYPE_UINT8,
+num: 4,
+normalize: !0
+} ]);
+s.name = "vfmtPosUvColor";
+n.default.VertexFormat.XY_UV_Color = s;
+var o = new n.default.VertexFormat([ {
+name: n.default.ATTR_POSITION,
+type: n.default.ATTR_TYPE_FLOAT32,
+num: 2
+}, {
+name: n.default.ATTR_UV0,
+type: n.default.ATTR_TYPE_FLOAT32,
+num: 2
+}, {
+name: n.default.ATTR_COLOR,
+type: n.default.ATTR_TYPE_UINT8,
+num: 4,
+normalize: !0
+}, {
+name: n.default.ATTR_COLOR0,
+type: n.default.ATTR_TYPE_UINT8,
+num: 4,
+normalize: !0
+} ]);
+o.name = "vfmtPosUvTwoColor";
+n.default.VertexFormat.XY_UV_Two_Color = o;
+var a = new n.default.VertexFormat([ {
+name: n.default.ATTR_POSITION,
+type: n.default.ATTR_TYPE_FLOAT32,
+num: 2
+}, {
+name: n.default.ATTR_UV0,
+type: n.default.ATTR_TYPE_FLOAT32,
+num: 2
+} ]);
+a.name = "vfmtPosUv";
+n.default.VertexFormat.XY_UV = a;
+var c = new n.default.VertexFormat([ {
+name: n.default.ATTR_POSITION,
+type: n.default.ATTR_TYPE_FLOAT32,
+num: 2
+}, {
+name: n.default.ATTR_COLOR,
+type: n.default.ATTR_TYPE_UINT8,
+num: 4,
+normalize: !0
+} ]);
+c.name = "vfmtPosColor";
+n.default.VertexFormat.XY_Color = c;
+var l = new n.default.VertexFormat([ {
+name: n.default.ATTR_POSITION,
+type: n.default.ATTR_TYPE_FLOAT32,
+num: 2
+} ]);
+l.name = "vfmtPos";
+n.default.VertexFormat.XY = l;
+e.exports = {
+vfmt3D: r,
+vfmtPosUvColor: s,
+vfmtPosUvTwoColor: o,
+vfmtPosUv: a,
+vfmtPosColor: c,
+vfmtPos: l
+};
+}), {
+"../../../renderer/gfx": 349
+} ],
+285: [ (function(t, e, i) {
+"use strict";
+t("../platform/CCSys");
+var n = /(\.[^\.\/\?\\]*)(\?.*)?$/, r = /((.*)(\/|\\|\\\\))?(.*?\..*$)?/, s = /[^\.\/]+\/\.\.\//;
+cc.path = {
+join: function() {
+for (var t = arguments.length, e = "", i = 0; i < t; i++) e = (e + ("" === e ? "" : "/") + arguments[i]).replace(/(\/|\\\\)$/, "");
+return e;
+},
+extname: function(t) {
+var e = n.exec(t);
+return e ? e[1] : "";
+},
+mainFileName: function(t) {
+if (t) {
+var e = t.lastIndexOf(".");
+if (-1 !== e) return t.substring(0, e);
+}
+return t;
+},
+basename: function(t, e) {
+var i = t.indexOf("?");
+i > 0 && (t = t.substring(0, i));
+var n = /(\/|\\)([^\/\\]+)$/g.exec(t.replace(/(\/|\\)$/, ""));
+if (!n) return null;
+var r = n[2];
+return e && t.substring(t.length - e.length).toLowerCase() === e.toLowerCase() ? r.substring(0, r.length - e.length) : r;
+},
+dirname: function(t) {
+var e = r.exec(t);
+return e ? e[2] : "";
+},
+changeExtname: function(t, e) {
+e = e || "";
+var i = t.indexOf("?"), n = "";
+if (i > 0) {
+n = t.substring(i);
+t = t.substring(0, i);
+}
+return (i = t.lastIndexOf(".")) < 0 ? t + e + n : t.substring(0, i) + e + n;
+},
+changeBasename: function(t, e, i) {
+if (0 === e.indexOf(".")) return this.changeExtname(t, e);
+var n = t.indexOf("?"), r = "", s = i ? this.extname(t) : "";
+if (n > 0) {
+r = t.substring(n);
+t = t.substring(0, n);
+}
+n = (n = t.lastIndexOf("/")) <= 0 ? 0 : n + 1;
+return t.substring(0, n) + e + s + r;
+},
+_normalize: function(t) {
+var e = t = String(t);
+do {
+e = t;
+t = t.replace(s, "");
+} while (e.length !== t.length);
+return t;
+},
+sep: cc.sys.os === cc.sys.OS_WINDOWS ? "\\" : "/",
+stripSep: function(t) {
+return t.replace(/[\/\\]$/, "");
+}
+};
+e.exports = cc.path;
+}), {
+"../platform/CCSys": 210
+} ],
+286: [ (function(t, e, i) {
+"use strict";
+var n = function(t, e, i, n, r, s) {
+this.a = t;
+this.b = e;
+this.c = i;
+this.d = n;
+this.tx = r;
+this.ty = s;
+};
+n.create = function(t, e, i, n, r, s) {
+return {
+a: t,
+b: e,
+c: i,
+d: n,
+tx: r,
+ty: s
+};
+};
+n.identity = function() {
+return {
+a: 1,
+b: 0,
+c: 0,
+d: 1,
+tx: 0,
+ty: 0
+};
+};
+n.clone = function(t) {
+return {
+a: t.a,
+b: t.b,
+c: t.c,
+d: t.d,
+tx: t.tx,
+ty: t.ty
+};
+};
+n.concat = function(t, e, i) {
+var n = e.a, r = e.b, s = e.c, o = e.d, a = e.tx, c = e.ty;
+t.a = n * i.a + r * i.c;
+t.b = n * i.b + r * i.d;
+t.c = s * i.a + o * i.c;
+t.d = s * i.b + o * i.d;
+t.tx = a * i.a + c * i.c + i.tx;
+t.ty = a * i.b + c * i.d + i.ty;
+return t;
+};
+n.invert = function(t, e) {
+var i = e.a, n = e.b, r = e.c, s = e.d, o = 1 / (i * s - n * r), a = e.tx, c = e.ty;
+t.a = o * s;
+t.b = -o * n;
+t.c = -o * r;
+t.d = o * i;
+t.tx = o * (r * c - s * a);
+t.ty = o * (n * a - i * c);
+return t;
+};
+n.fromMat4 = function(t, e) {
+t.a = e.m00;
+t.b = e.m01;
+t.c = e.m04;
+t.d = e.m05;
+t.tx = e.m12;
+t.ty = e.m13;
+return t;
+};
+n.transformVec2 = function(t, e, i, n) {
+var r, s;
+if (void 0 === n) {
+n = i;
+r = e.x;
+s = e.y;
+} else {
+r = e;
+s = i;
+}
+t.x = n.a * r + n.c * s + n.tx;
+t.y = n.b * r + n.d * s + n.ty;
+return t;
+};
+n.transformSize = function(t, e, i) {
+t.width = i.a * e.width + i.c * e.height;
+t.height = i.b * e.width + i.d * e.height;
+return t;
+};
+n.transformRect = function(t, e, i) {
+var n = e.x, r = e.y, s = n + e.width, o = r + e.height, a = i.a * n + i.c * r + i.tx, c = i.b * n + i.d * r + i.ty, l = i.a * s + i.c * r + i.tx, h = i.b * s + i.d * r + i.ty, u = i.a * n + i.c * o + i.tx, _ = i.b * n + i.d * o + i.ty, f = i.a * s + i.c * o + i.tx, d = i.b * s + i.d * o + i.ty, m = Math.min(a, l, u, f), p = Math.max(a, l, u, f), v = Math.min(c, h, _, d), y = Math.max(c, h, _, d);
+t.x = m;
+t.y = v;
+t.width = p - m;
+t.height = y - v;
+return t;
+};
+n.transformObb = function(t, e, i, n, r, s) {
+var o = r.x, a = r.y, c = r.width, l = r.height, h = s.a * o + s.c * a + s.tx, u = s.b * o + s.d * a + s.ty, _ = s.a * c, f = s.b * c, d = s.c * l, m = s.d * l;
+e.x = h;
+e.y = u;
+i.x = _ + h;
+i.y = f + u;
+t.x = d + h;
+t.y = m + u;
+n.x = _ + d + h;
+n.y = f + m + u;
+};
+cc.AffineTransform = e.exports = n;
+}), {} ],
+287: [ (function(i, n, r) {
+"use strict";
+var s = i("../platform/CCObject").Flags, o = i("./misc"), a = i("../platform/js"), c = i("../platform/id-generater"), l = i("../event-manager"), h = i("../renderer/render-flow"), u = s.Destroying, _ = s.DontDestroy, f = s.Deactivating, d = new c("Node");
+function m(i) {
+if (!i) {
+cc.errorID(3804);
+return null;
+}
+return "string" === ("object" === (e = typeof i) ? t(i) : e) ? a.getClassByName(i) : i;
+}
+function p(t, e) {
+if (e._sealed) for (var i = 0; i < t._components.length; ++i) {
+var n = t._components[i];
+if (n.constructor === e) return n;
+} else for (var r = 0; r < t._components.length; ++r) {
+var s = t._components[r];
+if (s instanceof e) return s;
+}
+return null;
+}
+function v(t, e, i) {
+if (e._sealed) for (var n = 0; n < t._components.length; ++n) {
+var r = t._components[n];
+r.constructor === e && i.push(r);
+} else for (var s = 0; s < t._components.length; ++s) {
+var o = t._components[s];
+o instanceof e && i.push(o);
+}
+}
+function y(t, e) {
+for (var i = 0; i < t.length; ++i) {
+var n = t[i], r = p(n, e);
+if (r) return r;
+if (n._children.length > 0 && (r = y(n._children, e))) return r;
+}
+return null;
+}
+function g(t, e, i) {
+for (var n = 0; n < t.length; ++n) {
+var r = t[n];
+v(r, e, i);
+r._children.length > 0 && g(r._children, e, i);
+}
+}
+var x = cc.Class({
+name: "cc._BaseNode",
+extends: cc.Object,
+properties: {
+_parent: null,
+_children: [],
+_active: !0,
+_level: 0,
+_components: [],
+_prefab: null,
+_persistNode: {
+get: function() {
+return (this._objFlags & _) > 0;
+},
+set: function(t) {
+t ? this._objFlags |= _ : this._objFlags &= ~_;
+}
+},
+name: {
+get: function() {
+return this._name;
+},
+set: function(t) {
+0;
+this._name = t;
+}
+},
+uuid: {
+get: function() {
+return this._id;
+}
+},
+children: {
+get: function() {
+return this._children;
+}
+},
+childrenCount: {
+get: function() {
+return this._children.length;
+}
+},
+active: {
+get: function() {
+return this._active;
+},
+set: function(t) {
+t = !!t;
+if (this._active !== t) {
+this._active = t;
+var e = this._parent;
+if (e) {
+e._activeInHierarchy && cc.director._nodeActivator.activateNode(this, t);
+}
+}
+}
+},
+activeInHierarchy: {
+get: function() {
+return this._activeInHierarchy;
+}
+}
+},
+ctor: function(t) {
+this._name = void 0 !== t ? t : "New Node";
+this._activeInHierarchy = !1;
+this._id = d.getNewId();
+cc.director._scheduler && cc.director._scheduler.enableForTarget(this);
+this.__eventTargets = [];
+this._renderFlag = h.FLAG_TRANSFORM;
+},
+getParent: function() {
+return this._parent;
+},
+setParent: function(t) {
+if (this._parent !== t) {
+0;
+var e = this._parent;
+0;
+this._parent = t || null;
+this._onSetParent(t);
+if (t) {
+0;
+this._level = t._level + 1;
+l._setDirtyForNode(this);
+t._children.push(this);
+t.emit && t.emit("child-added", this);
+t._renderFlag |= h.FLAG_CHILDREN;
+}
+if (e) {
+if (!(e._objFlags & u)) {
+var i = e._children.indexOf(this);
+0;
+e._children.splice(i, 1);
+e.emit && e.emit("child-removed", this);
+this._onHierarchyChanged(e);
+0 === e._children.length && (e._renderFlag &= ~h.FLAG_CHILDREN);
+}
+} else t && this._onHierarchyChanged(null);
+}
+},
+attr: function(t) {
+a.mixin(this, t);
+},
+getChildByUuid: function(t) {
+if (!t) {
+cc.log("Invalid uuid");
+return null;
+}
+for (var e = this._children, i = 0, n = e.length; i < n; i++) if (e[i]._id === t) return e[i];
+return null;
+},
+getChildByName: function(t) {
+if (!t) {
+cc.log("Invalid name");
+return null;
+}
+for (var e = this._children, i = 0, n = e.length; i < n; i++) if (e[i]._name === t) return e[i];
+return null;
+},
+addChild: function(t) {
+0;
+cc.assertID(t, 1606);
+cc.assertID(null === t._parent, 1605);
+t.setParent(this);
+},
+insertChild: function(t, e) {
+t.parent = this;
+t.setSiblingIndex(e);
+},
+getSiblingIndex: function() {
+return this._parent ? this._parent._children.indexOf(this) : 0;
+},
+setSiblingIndex: function(t) {
+if (this._parent) if (this._parent._objFlags & f) cc.errorID(3821); else {
+var e = this._parent._children;
+t = -1 !== t ? t : e.length - 1;
+var i = e.indexOf(this);
+if (t !== i) {
+e.splice(i, 1);
+t < e.length ? e.splice(t, 0, this) : e.push(this);
+this._onSiblingIndexChanged && this._onSiblingIndexChanged(t);
+}
+}
+},
+walk: function(t, e) {
+var i, n, r, s, o = cc._BaseNode, a = 1, c = o._stacks[o._stackId];
+if (!c) {
+c = [];
+o._stacks.push(c);
+}
+o._stackId++;
+c.length = 0;
+c[0] = this;
+var l = null;
+s = !1;
+for (;a; ) if (n = c[--a]) {
+!s && t ? t(n) : s && e && e(n);
+c[a] = null;
+if (s) {
+s = !1;
+if (i) if (i[++r]) {
+c[a] = i[r];
+a++;
+} else if (l) {
+c[a] = l;
+a++;
+s = !0;
+if (l._parent) {
+r = (i = l._parent._children).indexOf(l);
+l = l._parent;
+} else {
+l = null;
+i = null;
+}
+if (r < 0) break;
+}
+} else if (n._children.length > 0) {
+l = n;
+i = n._children;
+r = 0;
+c[a] = i[r];
+a++;
+} else {
+c[a] = n;
+a++;
+s = !0;
+}
+}
+c.length = 0;
+o._stackId--;
+},
+cleanup: function() {},
+removeFromParent: function(t) {
+if (this._parent) {
+void 0 === t && (t = !0);
+this._parent.removeChild(this, t);
+}
+},
+removeChild: function(t, e) {
+if (this._children.indexOf(t) > -1) {
+(e || void 0 === e) && t.cleanup();
+t.parent = null;
+}
+},
+removeAllChildren: function(t) {
+var e = this._children;
+void 0 === t && (t = !0);
+for (var i = e.length - 1; i >= 0; i--) {
+var n = e[i];
+if (n) {
+t && n.cleanup();
+n.parent = null;
+}
+}
+this._children.length = 0;
+},
+isChildOf: function(t) {
+var e = this;
+do {
+if (e === t) return !0;
+e = e._parent;
+} while (e);
+return !1;
+},
+getComponent: function(t) {
+var e = m(t);
+return e ? p(this, e) : null;
+},
+getComponents: function(t) {
+var e = m(t), i = [];
+e && v(this, e, i);
+return i;
+},
+getComponentInChildren: function(t) {
+var e = m(t);
+return e ? y(this._children, e) : null;
+},
+getComponentsInChildren: function(t) {
+var e = m(t), i = [];
+if (e) {
+v(this, e, i);
+g(this._children, e, i);
+}
+return i;
+},
+_checkMultipleComp: !1,
+addComponent: function(i) {
+0;
+var n;
+if ("string" === ("object" === (e = typeof i) ? t(i) : e)) {
+if (!(n = a.getClassByName(i))) {
+cc.errorID(3807, i);
+cc._RFpeek() && cc.errorID(3808, i);
+return null;
+}
+} else {
+if (!i) {
+cc.errorID(3804);
+return null;
+}
+n = i;
+}
+if ("function" !== ("object" === (e = typeof n) ? t(n) : e)) {
+cc.errorID(3809);
+return null;
+}
+if (!a.isChildClassOf(n, cc.Component)) {
+cc.errorID(3810);
+return null;
+}
+0;
+var r = n._requireComponent;
+if (r && !this.getComponent(r)) {
+if (!this.addComponent(r)) return null;
+}
+var s = new n();
+s.node = this;
+this._components.push(s);
+0;
+this._activeInHierarchy && cc.director._nodeActivator.activateComp(s);
+return s;
+},
+_addComponentAt: !1,
+removeComponent: function(t) {
+if (t) {
+t instanceof cc.Component || (t = this.getComponent(t));
+t && t.destroy();
+} else cc.errorID(3813);
+},
+_getDependComponent: !1,
+_removeComponent: function(t) {
+if (t) {
+if (!(this._objFlags & u)) {
+var e = this._components.indexOf(t);
+if (-1 !== e) {
+this._components.splice(e, 1);
+0;
+} else t.node !== this && cc.errorID(3815);
+}
+} else cc.errorID(3814);
+},
+destroy: function() {
+cc.Object.prototype.destroy.call(this) && (this.active = !1);
+},
+destroyAllChildren: function() {
+for (var t = this._children, e = 0; e < t.length; ++e) t[e].destroy();
+},
+_onSetParent: function(t) {},
+_onPostActivated: function() {},
+_onBatchRestored: function() {},
+_onBatchCreated: function() {},
+_onHierarchyChanged: function(t) {
+var e = this._parent;
+if (this._persistNode && !(e instanceof cc.Scene)) {
+cc.game.removePersistRootNode(this);
+0;
+}
+var i = this._active && !(!e || !e._activeInHierarchy);
+this._activeInHierarchy !== i && cc.director._nodeActivator.activateNode(this, i);
+},
+_instantiate: function(t) {
+t || (t = cc.instantiate._clone(this, this));
+var e = this._prefab;
+e && this === e.root && e.sync;
+t._parent = null;
+t._onBatchRestored();
+return t;
+},
+_registerIfAttached: !1,
+_onPreDestroy: function() {
+var t, e;
+this._objFlags |= u;
+var i = this._parent, n = i && i._objFlags & u;
+0;
+var r = this._children;
+for (t = 0, e = r.length; t < e; ++t) r[t]._destroyImmediate();
+for (t = 0, e = this._components.length; t < e; ++t) {
+this._components[t]._destroyImmediate();
+}
+var s = this.__eventTargets;
+for (t = 0, e = s.length; t < e; ++t) {
+var o = s[t];
+o && o.targetOff(this);
+}
+s.length = 0;
+this._persistNode && cc.game.removePersistRootNode(this);
+if (!n && i) {
+var a = i._children.indexOf(this);
+i._children.splice(a, 1);
+i.emit && i.emit("child-removed", this);
+}
+return n;
+},
+onRestore: !1
+});
+x.idGenerater = d;
+x._stacks = [ [] ];
+x._stackId = 0;
+x.prototype._onPreDestroyBase = x.prototype._onPreDestroy;
+0;
+x.prototype._onHierarchyChangedBase = x.prototype._onHierarchyChanged;
+0;
+o.propertyDefine(x, [ "parent", "name", "children", "childrenCount" ], {});
+0;
+cc._BaseNode = n.exports = x;
+}), {
+"../event-manager": 131,
+"../platform/CCObject": 207,
+"../platform/id-generater": 217,
+"../platform/js": 221,
+"../renderer/render-flow": 245,
+"./misc": 297
+} ],
+288: [ (function(t, e, i) {
+"use strict";
+var n = 1e-6;
+e.exports = {
+binarySearchEpsilon: function(t, e) {
+for (var i = 0, r = t.length - 1, s = r >>> 1; i <= r; s = i + r >>> 1) {
+var o = t[s];
+if (o > e + n) r = s - 1; else {
+if (!(o < e - n)) return s;
+i = s + 1;
+}
+}
+return ~i;
+}
+};
+}), {} ],
+289: [ (function(t, e, i) {
+"use strict";
+var n = t("../components/CCRenderComponent"), r = t("../platform/CCMacro").BlendFactor, s = t("../../renderer/gfx"), o = cc.Class({
+properties: {
+_srcBlendFactor: r.SRC_ALPHA,
+_dstBlendFactor: r.ONE_MINUS_SRC_ALPHA,
+srcBlendFactor: {
+get: function() {
+return this._srcBlendFactor;
+},
+set: function(t) {
+if (this._srcBlendFactor !== t) {
+this._srcBlendFactor = t;
+this._updateBlendFunc();
+}
+},
+animatable: !1,
+type: r,
+tooltip: !1,
+visible: !0
+},
+dstBlendFactor: {
+get: function() {
+return this._dstBlendFactor;
+},
+set: function(t) {
+if (this._dstBlendFactor !== t) {
+this._dstBlendFactor = t;
+this._updateBlendFunc();
+}
+},
+animatable: !1,
+type: r,
+tooltip: !1,
+visible: !0
+}
+},
+setMaterial: function(t, e) {
+n.prototype.setMaterial.call(this, t, e);
+e && this._updateMaterialBlendFunc(e);
+},
+_updateBlendFunc: function() {
+for (var t = this._materials, e = 0; e < t.length; e++) {
+var i = t[e];
+this._updateMaterialBlendFunc(i);
+}
+},
+_updateMaterialBlendFunc: function(t) {
+for (var e = t._effect.getDefaultTechnique().passes, i = 0; i < e.length; i++) {
+e[i].setBlend(!0, s.BLEND_FUNC_ADD, this._srcBlendFactor, this._dstBlendFactor, s.BLEND_FUNC_ADD, this._srcBlendFactor, this._dstBlendFactor);
+}
+t.setDirty(!0);
+}
+});
+e.exports = cc.BlendFunc = o;
+}), {
+"../../renderer/gfx": 349,
+"../components/CCRenderComponent": 106,
+"../platform/CCMacro": 206
+} ],
+290: [ (function(t, e, i) {
+"use strict";
+var n = t("./misc").BASE64_VALUES, r = "0123456789abcdef".split(""), s = [ "", "", "", "" ], o = s.concat(s, "-", s, "-", s, "-", s, "-", s, s, s), a = o.map((function(t, e) {
+return "-" === t ? NaN : e;
+})).filter(isFinite);
+e.exports = function(t) {
+if (22 !== t.length) return t;
+o[0] = t[0];
+o[1] = t[1];
+for (var e = 2, i = 2; e < 22; e += 2) {
+var s = n[t.charCodeAt(e)], c = n[t.charCodeAt(e + 1)];
+o[a[i++]] = r[s >> 2];
+o[a[i++]] = r[(3 & s) << 2 | c >> 4];
+o[a[i++]] = r[15 & c];
+}
+return o.join("");
+};
+0;
+}), {
+"./misc": 297
+} ],
+291: [ (function(t, e, i) {
+"use strict";
+cc.find = e.exports = function(t, e) {
+if (null == t) {
+cc.errorID(5600);
+return null;
+}
+if (e) 0; else {
+var i = cc.director.getScene();
+if (!i) {
+0;
+return null;
+}
+0;
+e = i;
+}
+for (var n = e, r = "/" !== t[0] ? 0 : 1, s = t.split("/"), o = r; o < s.length; o++) {
+var a = s[o], c = n._children;
+n = null;
+for (var l = 0, h = c.length; l < h; ++l) {
+var u = c[l];
+if (u.name === a) {
+n = u;
+break;
+}
+}
+if (!n) return null;
+}
+return n;
+};
+}), {} ],
+292: [ (function(t, e, i) {
+"use strict";
+var n = t("../assets/material/CCMaterial");
+function r() {
+this._graySpriteMaterial = null;
+this._spriteMaterial = null;
+}
+r.prototype._switchGrayMaterial = function(t, e) {
+if (cc.game.renderType !== cc.game.RENDER_TYPE_CANVAS) {
+var i = void 0;
+if (t) {
+(i = this._graySpriteMaterial) || (i = n.getBuiltinMaterial("2d-gray-sprite"));
+i = this._graySpriteMaterial = n.getInstantiatedMaterial(i, e);
+} else {
+(i = this._spriteMaterial) || (i = n.getBuiltinMaterial("2d-sprite", e));
+i = this._spriteMaterial = n.getInstantiatedMaterial(i, e);
+}
+e.setMaterial(0, i);
+}
+};
+e.exports = r;
+}), {
+"../assets/material/CCMaterial": 75
+} ],
+293: [ (function(t, e, i) {
+"use strict";
+var n = /^(click)(\s)*=|(param)(\s)*=/, r = /(\s)*src(\s)*=|(\s)*height(\s)*=|(\s)*width(\s)*=|(\s)*click(\s)*=|(\s)*param(\s)*=/, s = function() {
+this._parsedObject = {};
+this._specialSymbolArray = [];
+this._specialSymbolArray.push([ /</g, "<" ]);
+this._specialSymbolArray.push([ />/g, ">" ]);
+this._specialSymbolArray.push([ /&/g, "&" ]);
+this._specialSymbolArray.push([ /"/g, '"' ]);
+this._specialSymbolArray.push([ /'/g, "'" ]);
+};
+s.prototype = {
+constructor: s,
+parse: function(t) {
+this._resultObjectArray = [];
+this._stack = [];
+for (var e = 0, i = t.length; e < i; ) {
+var n = t.indexOf("<", e);
+if (n < 0) {
+this._stack.pop();
+this._processResult(t.substring(e));
+e = i;
+} else {
+this._processResult(t.substring(e, n));
+var r = t.indexOf(">", e);
+-1 === r ? r = n : "/" === t.charAt(n + 1) ? this._stack.pop() : this._addToStack(t.substring(n + 1, r));
+e = r + 1;
+}
+}
+return this._resultObjectArray;
+},
+_attributeToObject: function(t) {
+var e, i, n, s, o = {}, a = (t = t.trim()).match(/^(color|size)(\s)*=/);
+if (a) {
+e = a[0];
+if ("" === (t = t.substring(e.length).trim())) return o;
+i = t.indexOf(" ");
+switch (e[0]) {
+case "c":
+o.color = i > -1 ? t.substring(0, i).trim() : t;
+break;
+
+case "s":
+o.size = parseInt(t);
+}
+if (i > -1) {
+s = t.substring(i + 1).trim();
+n = this._processEventHandler(s);
+o.event = n;
+}
+return o;
+}
+if ((a = t.match(/^(br(\s)*\/)/)) && a[0].length > 0 && (e = a[0].trim()).startsWith("br") && "/" === e[e.length - 1]) {
+o.isNewLine = !0;
+this._resultObjectArray.push({
+text: "",
+style: {
+newline: !0
+}
+});
+return o;
+}
+if ((a = t.match(/^(img(\s)*src(\s)*=[^>]+\/)/)) && a[0].length > 0 && (e = a[0].trim()).startsWith("img") && "/" === e[e.length - 1]) {
+a = t.match(r);
+for (var c, l = !1; a; ) {
+e = (t = t.substring(t.indexOf(a[0]))).substr(0, a[0].length);
+u = (i = (c = t.substring(e.length).trim()).indexOf(" ")) > -1 ? c.substr(0, i) : c;
+e = (e = e.replace(/[^a-zA-Z]/g, "").trim()).toLocaleLowerCase();
+t = c.substring(i).trim();
+if ("src" === e) {
+o.isImage = !0;
+u.endsWith("/") && (u = u.substring(0, u.length - 1));
+if (0 === u.indexOf("'")) {
+l = !0;
+u = u.substring(1, u.length - 1);
+} else if (0 === u.indexOf('"')) {
+l = !0;
+u = u.substring(1, u.length - 1);
+}
+o.src = u;
+} else "height" === e ? o.imageHeight = parseInt(u) : "width" === e ? o.imageWidth = parseInt(u) : "click" === e && (o.event = this._processEventHandler(e + "=" + u));
+o.event && "param" === e && (o.event.param = u.replace(/^\"|\"$/g, ""));
+a = t.match(r);
+}
+l && o.isImage && this._resultObjectArray.push({
+text: "",
+style: o
+});
+return {};
+}
+if (a = t.match(/^(outline(\s)*[^>]*)/)) {
+var h = {
+color: "#ffffff",
+width: 1
+};
+if (t = a[0].substring("outline".length).trim()) {
+var u, _ = /(\s)*color(\s)*=|(\s)*width(\s)*=|(\s)*click(\s)*=|(\s)*param(\s)*=/;
+a = t.match(_);
+for (;a; ) {
+e = (t = t.substring(t.indexOf(a[0]))).substr(0, a[0].length);
+u = (i = (c = t.substring(e.length).trim()).indexOf(" ")) > -1 ? c.substr(0, i) : c;
+e = (e = e.replace(/[^a-zA-Z]/g, "").trim()).toLocaleLowerCase();
+t = c.substring(i).trim();
+"click" === e ? o.event = this._processEventHandler(e + "=" + u) : "color" === e ? h.color = u : "width" === e && (h.width = parseInt(u));
+o.event && "param" === e && (o.event.param = u.replace(/^\"|\"$/g, ""));
+a = t.match(_);
+}
+}
+o.outline = h;
+}
+if ((a = t.match(/^(on|u|b|i)(\s)*/)) && a[0].length > 0) {
+e = a[0];
+t = t.substring(e.length).trim();
+switch (e[0]) {
+case "u":
+o.underline = !0;
+break;
+
+case "i":
+o.italic = !0;
+break;
+
+case "b":
+o.bold = !0;
+}
+if ("" === t) return o;
+n = this._processEventHandler(t);
+o.event = n;
+}
+return o;
+},
+_processEventHandler: function(t) {
+for (var e = 0, i = {}, r = t.match(n), s = !1; r; ) {
+var o = r[0], a = "";
+s = !1;
+if ('"' === (t = t.substring(o.length).trim()).charAt(0)) {
+if ((e = t.indexOf('"', 1)) > -1) {
+a = t.substring(1, e).trim();
+s = !0;
+}
+e++;
+} else if ("'" === t.charAt(0)) {
+if ((e = t.indexOf("'", 1)) > -1) {
+a = t.substring(1, e).trim();
+s = !0;
+}
+e++;
+} else {
+var c = t.match(/(\S)+/);
+e = (a = c ? c[0] : "").length;
+}
+s && (i[o = o.substring(0, o.length - 1).trim()] = a);
+r = (t = t.substring(e).trim()).match(n);
+}
+return i;
+},
+_addToStack: function(t) {
+var e = this._attributeToObject(t);
+if (0 === this._stack.length) this._stack.push(e); else {
+if (e.isNewLine || e.isImage) return;
+var i = this._stack[this._stack.length - 1];
+for (var n in i) e[n] || (e[n] = i[n]);
+this._stack.push(e);
+}
+},
+_processResult: function(t) {
+if ("" !== t) {
+t = this._escapeSpecialSymbol(t);
+this._stack.length > 0 ? this._resultObjectArray.push({
+text: t,
+style: this._stack[this._stack.length - 1]
+}) : this._resultObjectArray.push({
+text: t
+});
+}
+},
+_escapeSpecialSymbol: function(t) {
+for (var e = 0; e < this._specialSymbolArray.length; ++e) {
+var i = this._specialSymbolArray[e][0], n = this._specialSymbolArray[e][1];
+t = t.replace(i, n);
+}
+return t;
+}
+};
+0;
+e.exports = s;
+}), {} ],
+294: [ (function(t, e, i) {
+"use strict";
+t("./CCPath");
+t("./profiler/CCProfiler");
+t("./find");
+t("./mutable-forward-iterator");
+}), {
+"./CCPath": 285,
+"./find": 291,
+"./mutable-forward-iterator": 298,
+"./profiler/CCProfiler": 300
+} ],
+295: [ (function(t, e, i) {
+"use strict";
+var n = t("../vmath"), r = t("../platform/js"), s = new r.Pool(128);
+s.get = function() {
+var t = this._get();
+t ? n.mat4.identity(t) : t = n.mat4.create();
+return t;
+};
+var o = new r.Pool(64);
+o.get = function() {
+var t = this._get();
+if (t) {
+t.x = t.y = t.z = 0;
+t.w = 1;
+} else t = n.quat.create();
+return t;
+};
+e.exports = {
+mat4: s,
+quat: o
+};
+}), {
+"../platform/js": 221,
+"../vmath": 317
+} ],
+296: [ (function(t, e, i) {
+"use strict";
+i.__esModule = !0;
+i.postLoadMesh = function(t, e) {
+if (t.loaded || !t.nativeUrl) {
+e && e();
+return;
+}
+cc.loader.load(t.nativeUrl, (function(i, n) {
+n && (t._nativeAsset = n);
+e && e(i);
+}));
+};
+}), {} ],
+297: [ (function(t, e, i) {
+"use strict";
+var n = t("../platform/js"), r = {
+propertyDefine: function(t, e, i) {
+function r(t, e, i, r) {
+var s = Object.getOwnPropertyDescriptor(t, e);
+if (s) {
+s.get && (t[i] = s.get);
+s.set && r && (t[r] = s.set);
+} else {
+var o = t[i];
+n.getset(t, e, o, t[r]);
+}
+}
+for (var s, o = t.prototype, a = 0; a < e.length; a++) {
+var c = (s = e[a])[0].toUpperCase() + s.slice(1);
+r(o, s, "get" + c, "set" + c);
+}
+for (s in i) {
+var l = i[s];
+r(o, s, l[0], l[1]);
+}
+},
+NextPOT: function(t) {
+t -= 1;
+t |= t >> 1;
+t |= t >> 2;
+t |= t >> 4;
+t |= t >> 8;
+return (t |= t >> 16) + 1;
+}
+};
+0;
+r.BUILTIN_CLASSID_RE = /^(?:cc|dragonBones|sp|ccsg)\..+/;
+for (var s = new Array(123), o = 0; o < 123; ++o) s[o] = 64;
+for (var a = 0; a < 64; ++a) s["ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".charCodeAt(a)] = a;
+r.BASE64_VALUES = s;
+r.pushToMap = function(t, e, i, n) {
+var r = t[e];
+if (r) if (Array.isArray(r)) if (n) {
+r.push(r[0]);
+r[0] = i;
+} else r.push(i); else t[e] = n ? [ i, r ] : [ r, i ]; else t[e] = i;
+};
+r.clampf = function(t, e, i) {
+if (e > i) {
+var n = e;
+e = i;
+i = n;
+}
+return t < e ? e : t < i ? t : i;
+};
+r.clamp01 = function(t) {
+return t < 0 ? 0 : t < 1 ? t : 1;
+};
+r.lerp = function(t, e, i) {
+return t + (e - t) * i;
+};
+r.degreesToRadians = function(t) {
+return t * cc.macro.RAD;
+};
+r.radiansToDegrees = function(t) {
+return t * cc.macro.DEG;
+};
+cc.misc = e.exports = r;
+}), {
+"../platform/js": 221
+} ],
+298: [ (function(t, e, i) {
+"use strict";
+function n(t) {
+this.i = 0;
+this.array = t;
+}
+var r = n.prototype;
+r.remove = function(t) {
+var e = this.array.indexOf(t);
+e >= 0 && this.removeAt(e);
+};
+r.removeAt = function(t) {
+this.array.splice(t, 1);
+t <= this.i && --this.i;
+};
+r.fastRemove = function(t) {
+var e = this.array.indexOf(t);
+e >= 0 && this.fastRemoveAt(e);
+};
+r.fastRemoveAt = function(t) {
+var e = this.array;
+e[t] = e[e.length - 1];
+--e.length;
+t <= this.i && --this.i;
+};
+r.push = function(t) {
+this.array.push(t);
+};
+e.exports = n;
+}), {} ],
+299: [ (function(t, e, i) {
+"use strict";
+var n = t("../vmath");
+cc._PrefabInfo = cc.Class({
+name: "cc.PrefabInfo",
+properties: {
+root: null,
+asset: null,
+fileId: "",
+sync: !1,
+_synced: {
+default: !1,
+serializable: !1
+}
+}
+});
+e.exports = {
+syncWithPrefab: function(t) {
+var e = t._prefab;
+e._synced = !0;
+if (e.asset) {
+var i = t._objFlags, r = t._parent, s = t._id, o = t._name, a = t._active, c = t._position.x, l = t._position.y, h = t._position.z, u = t._eulerAngles.x, _ = t._eulerAngles.y, f = t._eulerAngles.z, d = t._quat, m = t._localZOrder, p = t._globalZOrder;
+cc.game._isCloning = !0;
+e.asset._doInstantiate(t);
+cc.game._isCloning = !1;
+t._objFlags = i;
+t._parent = r;
+t._id = s;
+t._prefab = e;
+t._name = o;
+t._active = a;
+t._position.x = c;
+t._position.y = l;
+t._position.z = h;
+n.quat.copy(t._quat, d);
+t._localZOrder = m;
+t._globalZOrder = p;
+t._eulerAngles.x = u;
+t._eulerAngles.y = _;
+t._eulerAngles.z = f;
+} else {
+cc.errorID(3701, t.name);
+t._prefab = null;
+}
+}
+};
+}), {
+"../vmath": 317
+} ],
+300: [ (function(t, e, i) {
+"use strict";
+var n = t("../../platform/CCMacro"), r = t("./perf-counter"), s = !1, o = 15, a = null, c = null, l = null;
+function h() {
+if (!a) {
+a = {
+frame: {
+desc: "Frame time (ms)",
+min: 0,
+max: 50,
+average: 500
+},
+fps: {
+desc: "Framerate (FPS)",
+below: 30,
+average: 500
+},
+draws: {
+desc: "Draw call"
+},
+logic: {
+desc: "Game Logic (ms)",
+min: 0,
+max: 50,
+average: 500,
+color: "#080"
+},
+render: {
+desc: "Renderer (ms)",
+min: 0,
+max: 50,
+average: 500,
+color: "#f90"
+},
+mode: {
+desc: cc.game.renderType === cc.game.RENDER_TYPE_WEBGL ? "WebGL" : "Canvas",
+min: 1
+}
+};
+var t = performance.now();
+for (var e in a) a[e]._counter = new r(e, a[e], t);
+}
+}
+function u() {
+if (!c || !c.isValid) {
+(c = new cc.Node("PROFILER-NODE")).x = c.y = 10;
+c.groupIndex = cc.Node.BuiltinGroupIndex.DEBUG;
+cc.Camera._setupDebugCamera();
+c.zIndex = n.MAX_ZINDEX;
+cc.game.addPersistRootNode(c);
+var t = new cc.Node("LEFT-PANEL");
+t.anchorX = t.anchorY = 0;
+var e = t.addComponent(cc.Label);
+e.fontSize = o;
+e.lineHeight = o;
+t.parent = c;
+var i = new cc.Node("RIGHT-PANEL");
+i.anchorX = 1;
+i.anchorY = 0;
+i.x = 200;
+var r = i.addComponent(cc.Label);
+r.horizontalAlign = cc.Label.HorizontalAlign.RIGHT;
+r.fontSize = o;
+r.lineHeight = o;
+i.parent = c;
+if (cc.sys.browserType !== cc.sys.BROWSER_TYPE_BAIDU_GAME_SUB && cc.sys.browserType !== cc.sys.BROWSER_TYPE_WECHAT_GAME_SUB) {
+e.cacheMode = cc.Label.CacheMode.CHAR;
+r.cacheMode = cc.Label.CacheMode.CHAR;
+}
+l = {
+left: e,
+right: r
+};
+}
+}
+function _() {
+u();
+var t = cc.director._lastUpdate;
+a.frame._counter.start(t);
+a.logic._counter.start(t);
+}
+function f() {
+var t = performance.now();
+cc.director.isPaused() ? a.frame._counter.start(t) : a.logic._counter.end(t);
+a.render._counter.start(t);
+}
+function d() {
+var t = performance.now();
+a.render._counter.end(t);
+a.draws._counter.value = cc.renderer.drawCalls;
+a.frame._counter.end(t);
+a.fps._counter.frame(t);
+var e = "", i = "";
+for (var n in a) {
+var r = a[n];
+r._counter.sample(t);
+e += r.desc + "\n";
+i += r._counter.human() + "\n";
+}
+if (l) {
+l.left.string = e;
+l.right.string = i;
+}
+}
+cc.profiler = e.exports = {
+isShowingStats: function() {
+return s;
+},
+hideStats: function() {
+if (s) {
+c && (c.active = !1);
+cc.director.off(cc.Director.EVENT_BEFORE_UPDATE, _);
+cc.director.off(cc.Director.EVENT_AFTER_UPDATE, f);
+cc.director.off(cc.Director.EVENT_AFTER_DRAW, d);
+s = !1;
+}
+},
+showStats: function() {
+if (!s) {
+h();
+c && (c.active = !0);
+cc.director.on(cc.Director.EVENT_BEFORE_UPDATE, _);
+cc.director.on(cc.Director.EVENT_AFTER_UPDATE, f);
+cc.director.on(cc.Director.EVENT_AFTER_DRAW, d);
+s = !0;
+}
+}
+};
+}), {
+"../../platform/CCMacro": 206,
+"./perf-counter": 302
+} ],
+301: [ (function(t, e, i) {
+"use strict";
+var n = cc.Class({
+name: "cc.Counter",
+ctor: function(t, e, i) {
+this._id = t;
+this._opts = e || {};
+this._value = 0;
+this._total = 0;
+this._averageValue = 0;
+this._accumValue = 0;
+this._accumSamples = 0;
+this._accumStart = i;
+},
+properties: {
+value: {
+get: function() {
+return this._value;
+},
+set: function(t) {
+this._value = t;
+}
+}
+},
+_average: function(t, e) {
+if (this._opts.average) {
+this._accumValue += t;
+++this._accumSamples;
+var i = e;
+if (i - this._accumStart >= this._opts.average) {
+this._averageValue = this._accumValue / this._accumSamples;
+this._accumValue = 0;
+this._accumStart = i;
+this._accumSamples = 0;
+}
+}
+},
+sample: function(t) {
+this._average(this._value, t);
+},
+human: function() {
+var t = this._opts.average ? this._averageValue : this._value;
+return Math.round(100 * t) / 100;
+},
+alarm: function() {
+return this._opts.below && this._value < this._opts.below || this._opts.over && this._value > this._opts.over;
+}
+});
+e.exports = n;
+}), {} ],
+302: [ (function(t, e, i) {
+"use strict";
+var n = t("./counter"), r = cc.Class({
+name: "cc.PerfCounter",
+extends: n,
+ctor: function(t, e, i) {
+this._time = i;
+},
+start: function(t) {
+this._time = t;
+},
+end: function(t) {
+this._value = t - this._time;
+this._average(this._value);
+},
+tick: function() {
+this.end();
+this.start();
+},
+frame: function(t) {
+var e = t, i = e - this._time;
+this._total++;
+if (i > (this._opts.average || 1e3)) {
+this._value = 1e3 * this._total / i;
+this._total = 0;
+this._time = e;
+this._average(this._value);
+}
+}
+});
+e.exports = r;
+}), {
+"./counter": 301
+} ],
+303: [ (function(t, e, i) {
+"use strict";
+var n = .26;
+0;
+var r = {
+BASELINE_RATIO: n,
+MIDDLE_RATIO: (n + 1) / 2 - n,
+label_wordRex: /([a-zA-Z0-9ÄÖÜäöüßéèçàùêâîôûа-яА-ЯЁё]+|\S)/,
+label_symbolRex: /^[!,.:;'}\]%\?>、‘“》?。,!]/,
+label_lastWordRex: /([a-zA-Z0-9ÄÖÜäöüßéèçàùêâîôûаíìÍÌïÁÀáàÉÈÒÓòóŐőÙÚŰúűñÑæÆœŒÃÂãÔõěščřžýáíéóúůťďňĚŠČŘŽÁÍÉÓÚŤżźśóńłęćąŻŹŚÓŃŁĘĆĄ-яА-ЯЁё]+|\S)$/,
+label_lastEnglish: /[a-zA-Z0-9ÄÖÜäöüßéèçàùêâîôûаíìÍÌïÁÀáàÉÈÒÓòóŐőÙÚŰúűñÑæÆœŒÃÂãÔõěščřžýáíéóúůťďňĚŠČŘŽÁÍÉÓÚŤżźśóńłęćąŻŹŚÓŃŁĘĆĄ-яА-ЯЁё]+$/,
+label_firstEnglish: /^[a-zA-Z0-9ÄÖÜäöüßéèçàùêâîôûаíìÍÌïÁÀáàÉÈÒÓòóŐőÙÚŰúűñÑæÆœŒÃÂãÔõěščřžýáíéóúůťďňĚŠČŘŽÁÍÉÓÚŤżźśóńłęćąŻŹŚÓŃŁĘĆĄ-яА-ЯЁё]/,
+label_firstEmoji: /^[\uD83C\uDF00-\uDFFF\uDC00-\uDE4F]/,
+label_lastEmoji: /([\uDF00-\uDFFF\uDC00-\uDE4F]+|\S)$/,
+label_wrapinspection: !0,
+__CHINESE_REG: /^[\u4E00-\u9FFF\u3400-\u4DFF]+$/,
+__JAPANESE_REG: /[\u3000-\u303F]|[\u3040-\u309F]|[\u30A0-\u30FF]|[\uFF00-\uFFEF]|[\u4E00-\u9FAF]|[\u2605-\u2606]|[\u2190-\u2195]|\u203B/g,
+__KOREAN_REG: /^[\u1100-\u11FF]|[\u3130-\u318F]|[\uA960-\uA97F]|[\uAC00-\uD7AF]|[\uD7B0-\uD7FF]+$/,
+isUnicodeCJK: function(t) {
+return this.__CHINESE_REG.test(t) || this.__JAPANESE_REG.test(t) || this.__KOREAN_REG.test(t);
+},
+isUnicodeSpace: function(t) {
+return (t = t.charCodeAt(0)) >= 9 && t <= 13 || 32 === t || 133 === t || 160 === t || 5760 === t || t >= 8192 && t <= 8202 || 8232 === t || 8233 === t || 8239 === t || 8287 === t || 12288 === t;
+},
+safeMeasureText: function(t, e) {
+var i = t.measureText(e);
+return i && i.width || 0;
+},
+fragmentText: function(t, e, i, n) {
+var r = [];
+if (0 === t.length || i < 0) {
+r.push("");
+return r;
+}
+for (var s = t; e > i && s.length > 1; ) {
+for (var o = s.length * (i / e) | 0, a = s.substring(o), c = e - n(a), l = a, h = 0, u = 0; c > i && u++ < 10; ) {
+o *= i / c;
+o |= 0;
+c = e - n(a = s.substring(o));
+}
+u = 0;
+for (;c <= i && u++ < 10; ) {
+if (a) {
+var _ = this.label_wordRex.exec(a);
+h = _ ? _[0].length : 1;
+l = a;
+}
+o += h;
+c = e - n(a = s.substring(o));
+}
+if (0 === (o -= h)) {
+o = 1;
+l = l.substring(1);
+}
+var f, d = s.substring(0, 0 + o);
+if (this.label_wrapinspection && this.label_symbolRex.test(l || a)) {
+0 === (o -= (f = this.label_lastWordRex.exec(d)) ? f[0].length : 0) && (o = 1);
+l = s.substring(o);
+d = s.substring(0, 0 + o);
+}
+if (this.label_firstEmoji.test(l) && (f = this.label_lastEmoji.exec(d)) && d !== f[0]) {
+o -= f[0].length;
+l = s.substring(o);
+d = s.substring(0, 0 + o);
+}
+if (this.label_firstEnglish.test(l) && (f = this.label_lastEnglish.exec(d)) && d !== f[0]) {
+o -= f[0].length;
+l = s.substring(o);
+d = s.substring(0, 0 + o);
+}
+0 === r.length ? r.push(d) : (d = d.trimLeft()).length > 0 && r.push(d);
+e = n(s = l || a);
+}
+0 === r.length ? r.push(s) : (s = s.trimLeft()).length > 0 && r.push(s);
+return r;
+}
+};
+e.exports = r;
+}), {} ],
+304: [ (function(t, e, i) {
+"use strict";
+var n = t("../assets/CCTexture2D"), r = {
+loadImage: function(t, e, i) {
+cc.assertID(t, 3103);
+var r = cc.loader.getRes(t);
+if (r) {
+if (r.loaded) {
+e && e.call(i, null, r);
+return r;
+}
+r.once("load", (function() {
+e && e.call(i, null, r);
+}), i);
+return r;
+}
+(r = new n()).url = t;
+cc.loader.load({
+url: t,
+texture: r
+}, (function(t, n) {
+if (t) return e && e.call(i, t || new Error("Unknown error"));
+n.handleLoadedTexture();
+e && e.call(i, null, n);
+}));
+return r;
+},
+cacheImage: function(t, e) {
+if (t && e) {
+var i = new n();
+i.initWithElement(e);
+var r = {
+id: t,
+url: t,
+error: null,
+content: i,
+complete: !1
+};
+cc.loader.flowOut(r);
+return i;
+}
+},
+postLoadTexture: function(t, e) {
+t.loaded ? e && e() : t.url ? cc.loader.load({
+url: t.url,
+skips: [ "Loader" ]
+}, (function(i, n) {
+if (n) {
+0;
+t.loaded || (t._nativeAsset = n);
+}
+e && e(i);
+})) : e && e();
+}
+};
+cc.textureUtil = e.exports = r;
+}), {
+"../assets/CCTexture2D": 73
+} ],
+305: [ (function(i, n, r) {
+"use strict";
+var s = i("./value-type"), o = i("../platform/js"), a = (function() {
+function n(i, n, r, s) {
+if ("object" === ("object" === (e = typeof i) ? t(i) : e)) {
+n = i.g;
+r = i.b;
+s = i.a;
+i = i.r;
+}
+i = i || 0;
+n = n || 0;
+r = r || 0;
+s = "number" === ("object" === (e = typeof s) ? t(s) : e) ? s : 255;
+this._val = (s << 24 >>> 0) + (r << 16) + (n << 8) + i;
+}
+o.extend(n, s);
+i("../platform/CCClass").fastDefine("cc.Color", n, {
+r: 0,
+g: 0,
+b: 0,
+a: 255
+});
+var r = {
+WHITE: [ 255, 255, 255, 255 ],
+BLACK: [ 0, 0, 0, 255 ],
+TRANSPARENT: [ 0, 0, 0, 0 ],
+GRAY: [ 127.5, 127.5, 127.5 ],
+RED: [ 255, 0, 0 ],
+GREEN: [ 0, 255, 0 ],
+BLUE: [ 0, 0, 255 ],
+YELLOW: [ 255, 235, 4 ],
+ORANGE: [ 255, 127, 0 ],
+CYAN: [ 0, 255, 255 ],
+MAGENTA: [ 255, 0, 255 ]
+};
+for (var a in r) o.get(n, a, (function(t) {
+return function() {
+return new n(t[0], t[1], t[2], t[3]);
+};
+})(r[a]));
+var c = n.prototype;
+c.clone = function() {
+var t = new n();
+t._val = this._val;
+return t;
+};
+c.equals = function(t) {
+return t && this._val === t._val;
+};
+c.lerp = function(t, e, i) {
+i = i || new n();
+var r = this.r, s = this.g, o = this.b, a = this.a;
+i.r = r + (t.r - r) * e;
+i.g = s + (t.g - s) * e;
+i.b = o + (t.b - o) * e;
+i.a = a + (t.a - a) * e;
+return i;
+};
+c.toString = function() {
+return "rgba(" + this.r.toFixed() + ", " + this.g.toFixed() + ", " + this.b.toFixed() + ", " + this.a.toFixed() + ")";
+};
+c.getR = function() {
+return 255 & this._val;
+};
+c.setR = function(t) {
+t = ~~cc.misc.clampf(t, 0, 255);
+this._val = (4294967040 & this._val | t) >>> 0;
+return this;
+};
+c.getG = function() {
+return (65280 & this._val) >> 8;
+};
+c.setG = function(t) {
+t = ~~cc.misc.clampf(t, 0, 255);
+this._val = (4294902015 & this._val | t << 8) >>> 0;
+return this;
+};
+c.getB = function() {
+return (16711680 & this._val) >> 16;
+};
+c.setB = function(t) {
+t = ~~cc.misc.clampf(t, 0, 255);
+this._val = (4278255615 & this._val | t << 16) >>> 0;
+return this;
+};
+c.getA = function() {
+return (4278190080 & this._val) >>> 24;
+};
+c.setA = function(t) {
+t = ~~cc.misc.clampf(t, 0, 255);
+this._val = (16777215 & this._val | t << 24) >>> 0;
+return this;
+};
+c._fastSetA = function(t) {
+this._val = (16777215 & this._val | t << 24) >>> 0;
+};
+o.getset(c, "r", c.getR, c.setR, !0);
+o.getset(c, "g", c.getG, c.setG, !0);
+o.getset(c, "b", c.getB, c.setB, !0);
+o.getset(c, "a", c.getA, c.setA, !0);
+c.toCSS = function(t) {
+return "rgba" === t ? "rgba(" + (0 | this.r) + "," + (0 | this.g) + "," + (0 | this.b) + "," + (this.a / 255).toFixed(2) + ")" : "rgb" === t ? "rgb(" + (0 | this.r) + "," + (0 | this.g) + "," + (0 | this.b) + ")" : "#" + this.toHEX(t);
+};
+c.fromHEX = function(t) {
+t = 0 === t.indexOf("#") ? t.substring(1) : t;
+var e = parseInt(t.substr(0, 2), 16) || 0, i = parseInt(t.substr(2, 2), 16) || 0, n = parseInt(t.substr(4, 2), 16) || 0, r = parseInt(t.substr(6, 2), 16) || 255;
+this._val = (r << 24 >>> 0) + (n << 16) + (i << 8) + e;
+return this;
+};
+c.toHEX = function(t) {
+var e = [ (this.r < 16 ? "0" : "") + (0 | this.r).toString(16), (this.g < 16 ? "0" : "") + (0 | this.g).toString(16), (this.b < 16 ? "0" : "") + (0 | this.b).toString(16) ], i = -1;
+if ("#rgb" === t) for (i = 0; i < e.length; ++i) e[i].length > 1 && (e[i] = e[i][0]); else if ("#rrggbb" === t) for (i = 0; i < e.length; ++i) 1 === e[i].length && (e[i] = "0" + e[i]); else "#rrggbbaa" === t && e.push((this.a < 16 ? "0" : "") + (0 | this.a).toString(16));
+return e.join("");
+};
+c.toRGBValue = function() {
+return 16777215 & this._val;
+};
+c.fromHSV = function(t, e, i) {
+var n, r, s;
+if (0 === e) n = r = s = i; else if (0 === i) n = r = s = 0; else {
+1 === t && (t = 0);
+t *= 6;
+e = e;
+i = i;
+var o = Math.floor(t), a = t - o, c = i * (1 - e), l = i * (1 - e * a), h = i * (1 - e * (1 - a));
+switch (o) {
+case 0:
+n = i;
+r = h;
+s = c;
+break;
+
+case 1:
+n = l;
+r = i;
+s = c;
+break;
+
+case 2:
+n = c;
+r = i;
+s = h;
+break;
+
+case 3:
+n = c;
+r = l;
+s = i;
+break;
+
+case 4:
+n = h;
+r = c;
+s = i;
+break;
+
+case 5:
+n = i;
+r = c;
+s = l;
+}
+}
+n *= 255;
+r *= 255;
+s *= 255;
+this._val = (this.a << 24 >>> 0) + (s << 16) + (r << 8) + n;
+return this;
+};
+c.toHSV = function() {
+var t = this.r / 255, e = this.g / 255, i = this.b / 255, n = {
+h: 0,
+s: 0,
+v: 0
+}, r = Math.max(t, e, i), s = Math.min(t, e, i), o = 0;
+n.v = r;
+n.s = r ? (r - s) / r : 0;
+if (n.s) {
+o = r - s;
+n.h = t === r ? (e - i) / o : e === r ? 2 + (i - t) / o : 4 + (t - e) / o;
+n.h /= 6;
+n.h < 0 && (n.h += 1);
+} else n.h = 0;
+return n;
+};
+c.set = function(t) {
+if (t._val) this._val = t._val; else {
+this.r = t.r;
+this.g = t.g;
+this.b = t.b;
+this.a = t.a;
+}
+};
+return n;
+})();
+cc.Color = a;
+cc.color = function(i, n, r, s) {
+if ("string" === ("object" === (e = typeof i) ? t(i) : e)) {
+return new cc.Color().fromHEX(i);
+}
+return "object" === ("object" === (e = typeof i) ? t(i) : e) ? new cc.Color(i.r, i.g, i.b, i.a) : new cc.Color(i, n, r, s);
+};
+n.exports = cc.Color;
+}), {
+"../platform/CCClass": 201,
+"../platform/js": 221,
+"./value-type": 311
+} ],
+306: [ (function(t, e, i) {
+"use strict";
+t("./value-type");
+cc.vmath = t("../vmath").default;
+e.exports = {
+Vec2: t("./vec2"),
+Vec3: t("./vec3"),
+Vec4: t("./vec4"),
+Quat: t("./quat"),
+Mat4: t("./mat4"),
+Size: t("./size"),
+Rect: t("./rect"),
+Color: t("./color")
+};
+}), {
+"../vmath": 317,
+"./color": 305,
+"./mat4": 307,
+"./quat": 308,
+"./rect": 309,
+"./size": 310,
+"./value-type": 311,
+"./vec2": 312,
+"./vec3": 313,
+"./vec4": 314
+} ],
+307: [ (function(t, e, i) {
+"use strict";
+var n = t("../vmath"), r = t("./value-type"), s = t("../platform/js"), o = t("../platform/CCClass");
+function a(t, e, i, n, r, s, o, a, c, l, h, u, _, f, d, m) {
+var p = this;
+p.m00 = t;
+p.m01 = e;
+p.m02 = i;
+p.m03 = n;
+p.m04 = r;
+p.m05 = s;
+p.m06 = o;
+p.m07 = a;
+p.m08 = c;
+p.m09 = l;
+p.m10 = h;
+p.m11 = u;
+p.m12 = _;
+p.m13 = f;
+p.m14 = d;
+p.m15 = m;
+}
+s.extend(a, r);
+o.fastDefine("cc.Mat4", a, {
+m00: 1,
+m01: 0,
+m02: 0,
+m03: 0,
+m04: 0,
+m05: 1,
+m06: 0,
+m07: 0,
+m08: 0,
+m09: 0,
+m10: 1,
+m11: 0,
+m12: 0,
+m13: 0,
+m14: 0,
+m15: 1
+});
+s.mixin(a.prototype, {
+clone: function() {
+var t = this;
+return new a(t.m00, t.m01, t.m02, t.m03, t.m04, t.m05, t.m06, t.m07, t.m08, t.m09, t.m10, t.m11, t.m12, t.m13, t.m14, t.m15);
+},
+set: function(t) {
+var e = this;
+e.m00 = t.m00;
+e.m01 = t.m01;
+e.m02 = t.m02;
+e.m03 = t.m03;
+e.m04 = t.m04;
+e.m05 = t.m05;
+e.m06 = t.m06;
+e.m07 = t.m07;
+e.m08 = t.m08;
+e.m09 = t.m09;
+e.m10 = t.m10;
+e.m11 = t.m11;
+e.m12 = t.m12;
+e.m13 = t.m13;
+e.m14 = t.m14;
+e.m15 = t.m15;
+return this;
+},
+equals: function(t) {
+return n.mat4.exactEquals(this, t);
+},
+fuzzyEquals: function(t) {
+return n.mat4.equals(this, t);
+},
+toString: function() {
+var t = this;
+return "[\n" + t.m00 + ", " + t.m01 + ", " + t.m02 + ", " + t.m03 + ",\n" + t.m04 + ", " + t.m05 + ", " + t.m06 + ", " + t.m07 + ",\n" + t.m08 + ", " + t.m09 + ", " + t.m10 + ", " + t.m11 + ",\n" + t.m12 + ", " + t.m13 + ", " + t.m14 + ", " + t.m15 + "\n]";
+},
+identity: function() {
+return n.mat4.identity(this);
+},
+transpose: function(t) {
+t = t || new cc.Mat4();
+return n.mat4.transpose(t, this);
+},
+invert: function(t) {
+t = t || new cc.Mat4();
+return n.mat4.invert(t, this);
+},
+adjoint: function(t) {
+t = t || new cc.Mat4();
+return n.mat4.adjoint(t, this);
+},
+determinant: function() {
+return n.mat4.determinant(this);
+},
+add: function(t, e) {
+e = e || new cc.Mat4();
+return n.mat4.add(e, this, t);
+},
+sub: function(t, e) {
+e = e || new cc.Mat4();
+return n.mat4.subtract(e, this, t);
+},
+mul: function(t, e) {
+e = e || new cc.Mat4();
+return n.mat4.multiply(e, this, t);
+},
+mulScalar: function(t, e) {
+e = e || new cc.Mat4();
+return n.mat4.mulScalar(e, this, t);
+},
+translate: function(t, e) {
+e = e || new cc.Mat4();
+return n.mat4.translate(e, this, t);
+},
+scale: function(t, e) {
+e = e || new cc.Mat4();
+return n.mat4.scale(e, this, t);
+},
+rotate: function(t, e, i) {
+i = i || new cc.Mat4();
+return n.mat4.rotate(i, this, t, e);
+},
+getTranslation: function(t) {
+t = t || new cc.Vec3();
+return n.mat4.getTranslation(t, this);
+},
+getScale: function(t) {
+t = t || new cc.Vec3();
+return n.mat4.getScaling(t, this);
+},
+getRotation: function(t) {
+t = t || new cc.Quat();
+return n.mat4.getRotation(t, this);
+},
+fromRTS: function(t, e, i) {
+return n.mat4.fromRTS(this, t, e, i);
+},
+fromQuat: function(t) {
+return n.mat4.fromQuat(this, t);
+}
+});
+cc.mat4 = function(t, e, i, r, s, o, c, l, h, u, _, f, d, m, p, v) {
+var y = new a(t, e, i, r, s, o, c, l, h, u, _, f, d, m, p, v);
+void 0 === t && n.mat4.identity(y);
+return y;
+};
+e.exports = cc.Mat4 = a;
+}), {
+"../platform/CCClass": 201,
+"../platform/js": 221,
+"../vmath": 317,
+"./value-type": 311
+} ],
+308: [ (function(i, n, r) {
+"use strict";
+var s = i("./value-type"), o = i("../platform/js"), a = i("../platform/CCClass"), c = i("../vmath/quat");
+function l(i, n, r, s) {
+if (i && "object" === ("object" === (e = typeof i) ? t(i) : e)) {
+r = i.z;
+n = i.y;
+s = i.w;
+i = i.x;
+}
+this.x = i || 0;
+this.y = n || 0;
+this.z = r || 0;
+this.w = s || 1;
+}
+o.extend(l, s);
+a.fastDefine("cc.Quat", l, {
+x: 0,
+y: 0,
+z: 0,
+w: 1
+});
+var h = l.prototype;
+h.clone = function() {
+return new l(this.x, this.y, this.z, this.w);
+};
+h.set = function(t) {
+this.x = t.x;
+this.y = t.y;
+this.z = t.z;
+this.w = t.w;
+return this;
+};
+h.equals = function(t) {
+return t && this.x === t.x && this.y === t.y && this.z === t.z && this.w === t.w;
+};
+h.toEuler = function(t) {
+c.toEuler(t, this);
+return t;
+};
+h.fromEuler = function(t) {
+c.fromEuler(this, t.x, t.y, t.z);
+return this;
+};
+h.lerp = function(t, e, i) {
+i = i || new cc.Quat();
+c.slerp(i, this, t, e);
+return i;
+};
+h.mul = function(t, e) {
+e = e || new cc.Quat();
+c.mul(e, this, t);
+return e;
+};
+h.rotateAround = function(t, e, i, n) {
+n = n || new cc.Quat();
+return c.rotateAround(n, t, e, i);
+};
+cc.quat = function(t, e, i, n) {
+return new l(t, e, i, n);
+};
+n.exports = cc.Quat = l;
+}), {
+"../platform/CCClass": 201,
+"../platform/js": 221,
+"../vmath/quat": 322,
+"./value-type": 311
+} ],
+309: [ (function(i, n, r) {
+"use strict";
+var s = i("./value-type"), o = i("../platform/js");
+function a(i, n, r, s) {
+if (i && "object" === ("object" === (e = typeof i) ? t(i) : e)) {
+n = i.y;
+r = i.width;
+s = i.height;
+i = i.x;
+}
+this.x = i || 0;
+this.y = n || 0;
+this.width = r || 0;
+this.height = s || 0;
+}
+o.extend(a, s);
+i("../platform/CCClass").fastDefine("cc.Rect", a, {
+x: 0,
+y: 0,
+width: 0,
+height: 0
+});
+a.fromMinMax = function(t, e) {
+var i = Math.min(t.x, e.x), n = Math.min(t.y, e.y);
+return new a(i, n, Math.max(t.x, e.x) - i, Math.max(t.y, e.y) - n);
+};
+var c = a.prototype;
+c.clone = function() {
+return new a(this.x, this.y, this.width, this.height);
+};
+c.equals = function(t) {
+return t && this.x === t.x && this.y === t.y && this.width === t.width && this.height === t.height;
+};
+c.lerp = function(t, e, i) {
+i = i || new a();
+var n = this.x, r = this.y, s = this.width, o = this.height;
+i.x = n + (t.x - n) * e;
+i.y = r + (t.y - r) * e;
+i.width = s + (t.width - s) * e;
+i.height = o + (t.height - o) * e;
+return i;
+};
+c.set = function(t) {
+this.x = t.x;
+this.y = t.y;
+this.width = t.width;
+this.height = t.height;
+};
+c.intersects = function(t) {
+var e = this.x + this.width, i = this.y + this.height, n = t.x + t.width, r = t.y + t.height;
+return !(e < t.x || n < this.x || i < t.y || r < this.y);
+};
+c.intersection = function(t, e) {
+var i = this.x, n = this.y, r = this.x + this.width, s = this.y + this.height, o = e.x, a = e.y, c = e.x + e.width, l = e.y + e.height;
+t.x = Math.max(i, o);
+t.y = Math.max(n, a);
+t.width = Math.min(r, c) - t.x;
+t.height = Math.min(s, l) - t.y;
+return t;
+};
+c.contains = function(t) {
+return this.x <= t.x && this.x + this.width >= t.x && this.y <= t.y && this.y + this.height >= t.y;
+};
+c.containsRect = function(t) {
+return this.x <= t.x && this.x + this.width >= t.x + t.width && this.y <= t.y && this.y + this.height >= t.y + t.height;
+};
+c.union = function(t, e) {
+var i = this.x, n = this.y, r = this.width, s = this.height, o = e.x, a = e.y, c = e.width, l = e.height;
+t.x = Math.min(i, o);
+t.y = Math.min(n, a);
+t.width = Math.max(i + r, o + c) - t.x;
+t.height = Math.max(n + s, a + l) - t.y;
+return t;
+};
+c.transformMat4 = function(t, e) {
+var i = this.x, n = this.y, r = i + this.width, s = n + this.height, o = e.m00 * i + e.m04 * n + e.m12, a = e.m01 * i + e.m05 * n + e.m13, c = e.m00 * r + e.m04 * n + e.m12, l = e.m01 * r + e.m05 * n + e.m13, h = e.m00 * i + e.m04 * s + e.m12, u = e.m01 * i + e.m05 * s + e.m13, _ = e.m00 * r + e.m04 * s + e.m12, f = e.m01 * r + e.m05 * s + e.m13, d = Math.min(o, c, h, _), m = Math.max(o, c, h, _), p = Math.min(a, l, u, f), v = Math.max(a, l, u, f);
+t.x = d;
+t.y = p;
+t.width = m - d;
+t.height = v - p;
+return t;
+};
+c.toString = function() {
+return "(" + this.x.toFixed(2) + ", " + this.y.toFixed(2) + ", " + this.width.toFixed(2) + ", " + this.height.toFixed(2) + ")";
+};
+o.getset(c, "xMin", (function() {
+return this.x;
+}), (function(t) {
+this.width += this.x - t;
+this.x = t;
+}));
+o.getset(c, "yMin", (function() {
+return this.y;
+}), (function(t) {
+this.height += this.y - t;
+this.y = t;
+}));
+o.getset(c, "xMax", (function() {
+return this.x + this.width;
+}), (function(t) {
+this.width = t - this.x;
+}));
+o.getset(c, "yMax", (function() {
+return this.y + this.height;
+}), (function(t) {
+this.height = t - this.y;
+}));
+o.getset(c, "center", (function() {
+return new cc.Vec2(this.x + .5 * this.width, this.y + .5 * this.height);
+}), (function(t) {
+this.x = t.x - .5 * this.width;
+this.y = t.y - .5 * this.height;
+}));
+o.getset(c, "origin", (function() {
+return new cc.Vec2(this.x, this.y);
+}), (function(t) {
+this.x = t.x;
+this.y = t.y;
+}));
+o.getset(c, "size", (function() {
+return new cc.Size(this.width, this.height);
+}), (function(t) {
+this.width = t.width;
+this.height = t.height;
+}));
+cc.Rect = a;
+cc.rect = function(t, e, i, n) {
+return new a(t, e, i, n);
+};
+n.exports = cc.Rect;
+}), {
+"../platform/CCClass": 201,
+"../platform/js": 221,
+"./value-type": 311
+} ],
+310: [ (function(i, n, r) {
+"use strict";
+var s = i("./value-type"), o = i("../platform/js");
+function a(i, n) {
+if (i && "object" === ("object" === (e = typeof i) ? t(i) : e)) {
+n = i.height;
+i = i.width;
+}
+this.width = i || 0;
+this.height = n || 0;
+}
+o.extend(a, s);
+i("../platform/CCClass").fastDefine("cc.Size", a, {
+width: 0,
+height: 0
+});
+o.get(a, "ZERO", (function() {
+return new a(0, 0);
+}));
+var c = a.prototype;
+c.clone = function() {
+return new a(this.width, this.height);
+};
+c.equals = function(t) {
+return t && this.width === t.width && this.height === t.height;
+};
+c.lerp = function(t, e, i) {
+i = i || new a();
+var n = this.width, r = this.height;
+i.width = n + (t.width - n) * e;
+i.height = r + (t.height - r) * e;
+return i;
+};
+c.set = function(t) {
+this.width = t.width;
+this.height = t.height;
+};
+c.toString = function() {
+return "(" + this.width.toFixed(2) + ", " + this.height.toFixed(2) + ")";
+};
+cc.size = function(t, e) {
+return new a(t, e);
+};
+cc.Size = n.exports = a;
+}), {
+"../platform/CCClass": 201,
+"../platform/js": 221,
+"./value-type": 311
+} ],
+311: [ (function(t, e, i) {
+"use strict";
+var n = t("../platform/js");
+function r() {}
+n.setClassName("cc.ValueType", r);
+var s = r.prototype;
+0;
+s.toString = function() {
+return "" + {};
+};
+cc.ValueType = e.exports = r;
+}), {
+"../platform/js": 221
+} ],
+312: [ (function(i, n, r) {
+"use strict";
+var s = i("../vmath"), o = i("./value-type"), a = i("../platform/js"), c = i("../platform/CCClass"), l = i("../utils/misc");
+function h(i, n) {
+if (i && "object" === ("object" === (e = typeof i) ? t(i) : e)) {
+n = i.y;
+i = i.x;
+}
+this.x = i || 0;
+this.y = n || 0;
+}
+a.extend(h, o);
+c.fastDefine("cc.Vec2", h, {
+x: 0,
+y: 0
+});
+var u = h.prototype;
+a.value(u, "z", 0, !0);
+u.clone = function() {
+return new h(this.x, this.y);
+};
+u.set = function(t) {
+this.x = t.x;
+this.y = t.y;
+return this;
+};
+u.equals = function(t) {
+return t && this.x === t.x && this.y === t.y;
+};
+u.fuzzyEquals = function(t, e) {
+return this.x - e <= t.x && t.x <= this.x + e && this.y - e <= t.y && t.y <= this.y + e;
+};
+u.toString = function() {
+return "(" + this.x.toFixed(2) + ", " + this.y.toFixed(2) + ")";
+};
+u.lerp = function(t, e, i) {
+i = i || new h();
+var n = this.x, r = this.y;
+i.x = n + (t.x - n) * e;
+i.y = r + (t.y - r) * e;
+return i;
+};
+u.clampf = function(t, e) {
+this.x = l.clampf(this.x, t.x, e.x);
+this.y = l.clampf(this.y, t.y, e.y);
+return this;
+};
+u.addSelf = function(t) {
+this.x += t.x;
+this.y += t.y;
+return this;
+};
+u.add = function(t, e) {
+(e = e || new h()).x = this.x + t.x;
+e.y = this.y + t.y;
+return e;
+};
+u.subSelf = function(t) {
+this.x -= t.x;
+this.y -= t.y;
+return this;
+};
+u.sub = function(t, e) {
+(e = e || new h()).x = this.x - t.x;
+e.y = this.y - t.y;
+return e;
+};
+u.mulSelf = function(t) {
+this.x *= t;
+this.y *= t;
+return this;
+};
+u.mul = function(t, e) {
+(e = e || new h()).x = this.x * t;
+e.y = this.y * t;
+return e;
+};
+u.scaleSelf = function(t) {
+this.x *= t.x;
+this.y *= t.y;
+return this;
+};
+u.scale = function(t, e) {
+(e = e || new h()).x = this.x * t.x;
+e.y = this.y * t.y;
+return e;
+};
+u.divSelf = function(t) {
+this.x /= t;
+this.y /= t;
+return this;
+};
+u.div = function(t, e) {
+(e = e || new h()).x = this.x / t;
+e.y = this.y / t;
+return e;
+};
+u.negSelf = function() {
+this.x = -this.x;
+this.y = -this.y;
+return this;
+};
+u.neg = function(t) {
+(t = t || new h()).x = -this.x;
+t.y = -this.y;
+return t;
+};
+u.dot = function(t) {
+return this.x * t.x + this.y * t.y;
+};
+u.cross = function(t) {
+return this.x * t.y - this.y * t.x;
+};
+u.mag = function() {
+return Math.sqrt(this.x * this.x + this.y * this.y);
+};
+u.magSqr = function() {
+return this.x * this.x + this.y * this.y;
+};
+u.normalizeSelf = function() {
+var t = this.x * this.x + this.y * this.y;
+if (1 === t) return this;
+if (0 === t) return this;
+var e = 1 / Math.sqrt(t);
+this.x *= e;
+this.y *= e;
+return this;
+};
+u.normalize = function(t) {
+(t = t || new h()).x = this.x;
+t.y = this.y;
+t.normalizeSelf();
+return t;
+};
+u.angle = function(t) {
+var e = this.magSqr(), i = t.magSqr();
+if (0 === e || 0 === i) {
+console.warn("Can't get angle between zero vector");
+return 0;
+}
+var n = this.dot(t) / Math.sqrt(e * i);
+n = l.clampf(n, -1, 1);
+return Math.acos(n);
+};
+u.signAngle = function(t) {
+var e = this.angle(t);
+return this.cross(t) < 0 ? -e : e;
+};
+u.rotate = function(t, e) {
+(e = e || new h()).x = this.x;
+e.y = this.y;
+return e.rotateSelf(t);
+};
+u.rotateSelf = function(t) {
+var e = Math.sin(t), i = Math.cos(t), n = this.x;
+this.x = i * n - e * this.y;
+this.y = e * n + i * this.y;
+return this;
+};
+u.project = function(t) {
+return t.mul(this.dot(t) / t.dot(t));
+};
+u.transformMat4 = function(t, e) {
+e = e || new h();
+s.vec2.transformMat4(e, this, t);
+};
+a.get(h, "ONE", (function() {
+return new h(1, 1);
+}));
+a.get(h, "ZERO", (function() {
+return new h(0, 0);
+}));
+a.get(h, "UP", (function() {
+return new h(0, 1);
+}));
+a.get(h, "RIGHT", (function() {
+return new h(1, 0);
+}));
+cc.Vec2 = h;
+cc.v2 = function(t, e) {
+return new h(t, e);
+};
+cc.p = cc.v2;
+n.exports = cc.Vec2;
+}), {
+"../platform/CCClass": 201,
+"../platform/js": 221,
+"../utils/misc": 297,
+"../vmath": 317,
+"./value-type": 311
+} ],
+313: [ (function(i, n, r) {
+"use strict";
+var s = i("../vmath"), o = i("./value-type"), a = i("../platform/js"), c = i("../platform/CCClass"), l = i("../utils/misc"), h = i("./vec2").prototype;
+function u(i, n, r) {
+if (i && "object" === ("object" === (e = typeof i) ? t(i) : e)) {
+r = i.z;
+n = i.y;
+i = i.x;
+}
+this.x = i || 0;
+this.y = n || 0;
+this.z = r || 0;
+}
+a.extend(u, o);
+c.fastDefine("cc.Vec3", u, {
+x: 0,
+y: 0,
+z: 0
+});
+var _ = u.prototype;
+_.clone = function() {
+return new u(this.x, this.y, this.z);
+};
+_.set = function(t) {
+this.x = t.x;
+this.y = t.y;
+this.z = t.z;
+return this;
+};
+_.equals = function(t) {
+return t && this.x === t.x && this.y === t.y && this.z === t.z;
+};
+_.fuzzyEquals = function(t, e) {
+return this.x - e <= t.x && t.x <= this.x + e && this.y - e <= t.y && t.y <= this.y + e && this.z - e <= t.z && t.z <= this.z + e;
+};
+_.toString = function() {
+return "(" + this.x.toFixed(2) + ", " + this.y.toFixed(2) + ", " + this.z.toFixed(2) + ")";
+};
+_.lerp = function(t, e, i) {
+i = i || new u();
+s.vec3.lerp(i, this, t, e);
+return i;
+};
+_.clampf = function(t, e) {
+this.x = l.clampf(this.x, t.x, e.x);
+this.y = l.clampf(this.y, t.y, e.y);
+this.z = l.clampf(this.z, t.z, e.z);
+return this;
+};
+_.addSelf = function(t) {
+this.x += t.x;
+this.y += t.y;
+this.z += t.z;
+return this;
+};
+_.add = function(t, e) {
+(e = e || new u()).x = this.x + t.x;
+e.y = this.y + t.y;
+e.z = this.z + t.z;
+return e;
+};
+_.subSelf = function(t) {
+this.x -= t.x;
+this.y -= t.y;
+this.z -= t.z;
+return this;
+};
+_.sub = function(t, e) {
+(e = e || new u()).x = this.x - t.x;
+e.y = this.y - t.y;
+e.z = this.z - t.z;
+return e;
+};
+_.mulSelf = function(t) {
+this.x *= t;
+this.y *= t;
+this.z *= t;
+return this;
+};
+_.mul = function(t, e) {
+(e = e || new u()).x = this.x * t;
+e.y = this.y * t;
+e.z = this.z * t;
+return e;
+};
+_.scaleSelf = function(t) {
+this.x *= t.x;
+this.y *= t.y;
+this.z *= t.z;
+return this;
+};
+_.scale = function(t, e) {
+(e = e || new u()).x = this.x * t.x;
+e.y = this.y * t.y;
+e.z = this.z * t.z;
+return e;
+};
+_.divSelf = function(t) {
+this.x /= t;
+this.y /= t;
+this.z /= t;
+return this;
+};
+_.div = function(t, e) {
+(e = e || new u()).x = this.x / t;
+e.y = this.y / t;
+e.z = this.z / t;
+return e;
+};
+_.negSelf = function() {
+this.x = -this.x;
+this.y = -this.y;
+this.z = -this.z;
+return this;
+};
+_.neg = function(t) {
+(t = t || new u()).x = -this.x;
+t.y = -this.y;
+t.z = -this.z;
+return t;
+};
+_.dot = function(t) {
+return this.x * t.x + this.y * t.y + this.z * t.z;
+};
+_.cross = function(t, e) {
+e = e || new u();
+s.vec3.cross(e, this, t);
+return e;
+};
+_.mag = function() {
+return Math.sqrt(this.x * this.x + this.y * this.y + this.z * this.z);
+};
+_.magSqr = function() {
+return this.x * this.x + this.y * this.y + this.z * this.z;
+};
+_.normalizeSelf = function() {
+s.vec3.normalize(this, this);
+return this;
+};
+_.normalize = function(t) {
+t = t || new u();
+s.vec3.normalize(t, this);
+return t;
+};
+_.transformMat4 = function(t, e) {
+e = e || new u();
+s.vec3.transformMat4(e, this, t);
+};
+_.angle = h.angle;
+_.project = h.project;
+_.signAngle = function(t) {
+cc.warnID(1408, "vec3.signAngle", "v2.1", "cc.v2(selfVector).signAngle(vector)");
+var e = new cc.Vec2(this.x, this.y), i = new cc.Vec2(t.x, t.y);
+return e.signAngle(i);
+};
+_.rotate = function(t, e) {
+cc.warnID(1408, "vec3.rotate", "v2.1", "cc.v2(selfVector).rotate(radians, out)");
+return h.rotate.call(this, t, e);
+};
+_.rotateSelf = function(t) {
+cc.warnID(1408, "vec3.rotateSelf", "v2.1", "cc.v2(selfVector).rotateSelf(radians)");
+return h.rotateSelf.call(this, t);
+};
+a.get(u, "ONE", (function() {
+return new u(1, 1, 1);
+}));
+a.get(u, "ZERO", (function() {
+return new u(0, 0, 0);
+}));
+a.get(u, "UP", (function() {
+return new u(0, 1, 0);
+}));
+a.get(u, "RIGHT", (function() {
+return new u(1, 0, 0);
+}));
+a.get(u, "FRONT", (function() {
+return new u(0, 0, 1);
+}));
+cc.v3 = function(t, e, i) {
+return new u(t, e, i);
+};
+n.exports = cc.Vec3 = u;
+}), {
+"../platform/CCClass": 201,
+"../platform/js": 221,
+"../utils/misc": 297,
+"../vmath": 317,
+"./value-type": 311,
+"./vec2": 312
+} ],
+314: [ (function(i, n, r) {
+"use strict";
+var s = l(i("./value-type")), o = l(i("../platform/CCClass")), a = i("../vmath"), c = i("../utils/misc");
+function l(t) {
+return t && t.__esModule ? t : {
+default: t
+};
+}
+function h(t, e) {
+if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function");
+}
+function u(i, n) {
+if (!i) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
+return !n || "object" !== ("object" === (e = typeof n) ? t(n) : e) && "function" !== ("object" === (e = typeof n) ? t(n) : e) ? i : n;
+}
+function _(i, n) {
+if ("function" !== ("object" === (e = typeof n) ? t(n) : e) && null !== n) throw new TypeError("Super expression must either be null or a function, not " + ("object" === (e = typeof n) ? t(n) : e));
+i.prototype = Object.create(n && n.prototype, {
+constructor: {
+value: i,
+enumerable: !1,
+writable: !0,
+configurable: !0
+}
+});
+n && (Object.setPrototypeOf ? Object.setPrototypeOf(i, n) : i.__proto__ = n);
+}
+var f = (function(i) {
+_(n, i);
+function n(r, s, o, a) {
+h(this, n);
+var c = u(this, i.call(this));
+if (r && "object" === ("object" === (e = typeof r) ? t(r) : e)) {
+a = r.w;
+o = r.z;
+s = r.y;
+r = r.x;
+}
+c.x = r || 0;
+c.y = s || 0;
+c.z = o || 0;
+c.w = a || 0;
+return c;
+}
+n.prototype.clone = function() {
+return new n(this.x, this.y, this.z, this.w);
+};
+n.prototype.set = function(t) {
+this.x = t.x;
+this.y = t.y;
+this.z = t.z;
+this.w = t.w;
+return this;
+};
+n.prototype.equals = function(t) {
+return t && this.x === t.x && this.y === t.y && this.z === t.z && this.w === t.w;
+};
+n.prototype.fuzzyEquals = function(t, e) {
+return this.x - e <= t.x && t.x <= this.x + e && this.y - e <= t.y && t.y <= this.y + e && this.z - e <= t.z && t.z <= this.z + e && this.w - e <= t.w && t.w <= this.w + e;
+};
+n.prototype.toString = function() {
+return "(" + this.x.toFixed(2) + ", " + this.y.toFixed(2) + ", " + this.z.toFixed(2) + ", " + this.w.toFixed(2) + ")";
+};
+n.prototype.lerp = function(t, e, i) {
+i = i || new n();
+a.vec4.lerp(i, this, t, e);
+return i;
+};
+n.prototype.clampf = function(t, e) {
+this.x = (0, c.clampf)(this.x, t.x, e.x);
+this.y = (0, c.clampf)(this.y, t.y, e.y);
+this.z = (0, c.clampf)(this.z, t.z, e.z);
+this.w = (0, c.clampf)(this.w, t.w, e.w);
+return this;
+};
+n.prototype.addSelf = function(t) {
+this.x += t.x;
+this.y += t.y;
+this.z += t.z;
+this.w += t.w;
+return this;
+};
+n.prototype.add = function(t, e) {
+(e = e || new n()).x = this.x + t.x;
+e.y = this.y + t.y;
+e.z = this.z + t.z;
+e.w = this.w + t.w;
+return e;
+};
+n.prototype.subSelf = function(t) {
+this.x -= t.x;
+this.y -= t.y;
+this.z -= t.z;
+this.w -= t.w;
+return this;
+};
+n.prototype.sub = function(t, e) {
+(e = e || new n()).x = this.x - t.x;
+e.y = this.y - t.y;
+e.z = this.z - t.z;
+e.w = this.w - t.w;
+return e;
+};
+n.prototype.mulSelf = function(t) {
+this.x *= t;
+this.y *= t;
+this.z *= t;
+this.w *= t;
+return this;
+};
+n.prototype.mul = function(t, e) {
+(e = e || new n()).x = this.x * t;
+e.y = this.y * t;
+e.z = this.z * t;
+e.w = this.w * t;
+return e;
+};
+n.prototype.scaleSelf = function(t) {
+this.x *= t.x;
+this.y *= t.y;
+this.z *= t.z;
+this.w *= t.w;
+return this;
+};
+n.prototype.scale = function(t, e) {
+(e = e || new n()).x = this.x * t.x;
+e.y = this.y * t.y;
+e.z = this.z * t.z;
+e.w = this.w * t.w;
+return e;
+};
+n.prototype.divSelf = function(t) {
+this.x /= t;
+this.y /= t;
+this.z /= t;
+this.w /= t;
+return this;
+};
+n.prototype.div = function(t, e) {
+(e = e || new n()).x = this.x / t;
+e.y = this.y / t;
+e.z = this.z / t;
+e.w = this.w / t;
+return e;
+};
+n.prototype.negSelf = function() {
+this.x = -this.x;
+this.y = -this.y;
+this.z = -this.z;
+this.w = -this.w;
+return this;
+};
+n.prototype.neg = function(t) {
+(t = t || new n()).x = -this.x;
+t.y = -this.y;
+t.z = -this.z;
+t.w = -this.w;
+return t;
+};
+n.prototype.dot = function(t) {
+return this.x * t.x + this.y * t.y + this.z * t.z + this.w * t.w;
+};
+n.prototype.cross = function(t, e) {
+e = e || new n();
+a.vec4.cross(e, this, t);
+return e;
+};
+n.prototype.mag = function() {
+var t = this.x, e = this.y, i = this.z, n = this.w;
+return Math.sqrt(t * t + e * e + i * i + n * n);
+};
+n.prototype.magSqr = function() {
+var t = this.x, e = this.y, i = this.z, n = this.w;
+return t * t + e * e + i * i + n * n;
+};
+n.prototype.normalizeSelf = function() {
+a.vec4.normalize(this, this);
+return this;
+};
+n.prototype.normalize = function(t) {
+t = t || new n();
+a.vec4.normalize(t, this);
+return t;
+};
+n.prototype.transformMat4 = function(t, e) {
+e = e || new n();
+a.vec4.transformMat4(e, this, t);
+return e;
+};
+return n;
+})(s.default);
+o.default.fastDefine("cc.Vec4", f, {
+x: 0,
+y: 0,
+z: 0,
+w: 0
+});
+cc.v4 = function(t, e, i, n) {
+return new f(t, e, i, n);
+};
+n.exports = cc.Vec4 = f;
+}), {
+"../platform/CCClass": 201,
+"../utils/misc": 297,
+"../vmath": 317,
+"./value-type": 311
+} ],
+315: [ (function(t, e, i) {
+"use strict";
+i.__esModule = !0;
+var n = t("./utils");
+function r(t, e) {
+if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function");
+}
+var s = (function() {
+function t() {
+var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : 1, i = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 1, n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : 1;
+r(this, t);
+this.r = e;
+this.g = i;
+this.b = n;
+}
+t.create = function() {
+return new t(arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : 1, arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 1, arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : 1);
+};
+t.clone = function(e) {
+return new t(e.r, e.g, e.b);
+};
+t.copy = function(t, e) {
+t.r = e.r;
+t.g = e.g;
+t.b = e.b;
+return t;
+};
+t.set = function(t, e, i, n) {
+t.r = e;
+t.g = i;
+t.b = n;
+return t;
+};
+t.fromHex = function(t, e) {
+var i = (e >> 16) / 255, n = (e >> 8 & 255) / 255, r = (255 & e) / 255;
+t.r = i;
+t.g = n;
+t.b = r;
+return t;
+};
+t.add = function(t, e, i) {
+t.r = e.r + i.r;
+t.g = e.g + i.g;
+t.b = e.b + i.b;
+return t;
+};
+t.subtract = function(t, e, i) {
+t.r = e.r - i.r;
+t.g = e.g - i.g;
+t.b = e.b - i.b;
+return t;
+};
+t.sub = function(e, i, n) {
+return t.subtract(e, i, n);
+};
+t.multiply = function(t, e, i) {
+t.r = e.r * i.r;
+t.g = e.g * i.g;
+t.b = e.b * i.b;
+return t;
+};
+t.mul = function(e, i, n) {
+return t.multiply(e, i, n);
+};
+t.divide = function(t, e, i) {
+t.r = e.r / i.r;
+t.g = e.g / i.g;
+t.b = e.b / i.b;
+return t;
+};
+t.div = function(e, i, n) {
+return t.divide(e, i, n);
+};
+t.scale = function(t, e, i) {
+t.r = e.r * i;
+t.g = e.g * i;
+t.b = e.b * i;
+return t;
+};
+t.lerp = function(t, e, i, n) {
+var r = e.r, s = e.g, o = e.b;
+t.r = r + n * (i.r - r);
+t.g = s + n * (i.g - s);
+t.b = o + n * (i.b - o);
+return t;
+};
+t.str = function(t) {
+return "color3(" + t.r + ", " + t.g + ", " + t.b + ")";
+};
+t.array = function(t, e) {
+var i = e instanceof cc.Color ? 1 / 255 : 1;
+t[0] = e.r * i;
+t[1] = e.g * i;
+t[2] = e.b * i;
+return t;
+};
+t.exactEquals = function(t, e) {
+return t.r === e.r && t.g === e.g && t.b === e.b;
+};
+t.equals = function(t, e) {
+var i = t.r, r = t.g, s = t.b, o = e.r, a = e.g, c = e.b;
+return Math.abs(i - o) <= n.EPSILON * Math.max(1, Math.abs(i), Math.abs(o)) && Math.abs(r - a) <= n.EPSILON * Math.max(1, Math.abs(r), Math.abs(a)) && Math.abs(s - c) <= n.EPSILON * Math.max(1, Math.abs(s), Math.abs(c));
+};
+t.hex = function(t) {
+return 255 * t.r << 16 | 255 * t.g << 8 | 255 * t.b;
+};
+return t;
+})();
+i.default = s;
+e.exports = i.default;
+}), {
+"./utils": 323
+} ],
+316: [ (function(t, e, i) {
+"use strict";
+i.__esModule = !0;
+var n = t("./utils");
+function r(t, e) {
+if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function");
+}
+var s = (function() {
+function t() {
+var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : 1, i = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 1, n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : 1, s = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : 1;
+r(this, t);
+this.r = e;
+this.g = i;
+this.b = n;
+this.a = s;
+}
+t.create = function() {
+return new t(arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : 1, arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 1, arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : 1, arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : 1);
+};
+t.clone = function(e) {
+return new t(e.r, e.g, e.b, e.a);
+};
+t.copy = function(t, e) {
+t.r = e.r;
+t.g = e.g;
+t.b = e.b;
+t.a = e.a;
+return t;
+};
+t.set = function(t, e, i, n, r) {
+t.r = e;
+t.g = i;
+t.b = n;
+t.a = r;
+return t;
+};
+t.fromHex = function(t, e) {
+var i = (e >> 24) / 255, n = (e >> 16 & 255) / 255, r = (e >> 8 & 255) / 255, s = (255 & e) / 255;
+t.r = i;
+t.g = n;
+t.b = r;
+t.a = s;
+return t;
+};
+t.add = function(t, e, i) {
+t.r = e.r + i.r;
+t.g = e.g + i.g;
+t.b = e.b + i.b;
+t.a = e.a + i.a;
+return t;
+};
+t.subtract = function(t, e, i) {
+t.r = e.r - i.r;
+t.g = e.g - i.g;
+t.b = e.b - i.b;
+t.a = e.a - i.a;
+return t;
+};
+t.sub = function(e, i, n) {
+return t.subtract(e, i, n);
+};
+t.multiply = function(t, e, i) {
+t.r = e.r * i.r;
+t.g = e.g * i.g;
+t.b = e.b * i.b;
+t.a = e.a * i.a;
+return t;
+};
+t.mul = function(e, i, n) {
+return t.multiply(e, i, n);
+};
+t.divide = function(t, e, i) {
+t.r = e.r / i.r;
+t.g = e.g / i.g;
+t.b = e.b / i.b;
+t.a = e.a / i.a;
+return t;
+};
+t.div = function(e, i, n) {
+return t.divide(e, i, n);
+};
+t.scale = function(t, e, i) {
+t.r = e.r * i;
+t.g = e.g * i;
+t.b = e.b * i;
+t.a = e.a * i;
+return t;
+};
+t.lerp = function(t, e, i, n) {
+var r = e.r, s = e.g, o = e.b, a = e.a;
+t.r = r + n * (i.r - r);
+t.g = s + n * (i.g - s);
+t.b = o + n * (i.b - o);
+t.a = a + n * (i.a - a);
+return t;
+};
+t.str = function(t) {
+return "color4(" + t.r + ", " + t.g + ", " + t.b + ", " + t.a + ")";
+};
+t.array = function(t, e) {
+var i = e instanceof cc.Color || e.a > 1 ? 1 / 255 : 1;
+t[0] = e.r * i;
+t[1] = e.g * i;
+t[2] = e.b * i;
+t[3] = e.a * i;
+return t;
+};
+t.exactEquals = function(t, e) {
+return t.r === e.r && t.g === e.g && t.b === e.b && t.a === e.a;
+};
+t.equals = function(t, e) {
+var i = t.r, r = t.g, s = t.b, o = t.a, a = e.r, c = e.g, l = e.b, h = e.a;
+return Math.abs(i - a) <= n.EPSILON * Math.max(1, Math.abs(i), Math.abs(a)) && Math.abs(r - c) <= n.EPSILON * Math.max(1, Math.abs(r), Math.abs(c)) && Math.abs(s - l) <= n.EPSILON * Math.max(1, Math.abs(s), Math.abs(l)) && Math.abs(o - h) <= n.EPSILON * Math.max(1, Math.abs(o), Math.abs(h));
+};
+t.hex = function(t) {
+return (255 * t.r << 24 | 255 * t.g << 16 | 255 * t.b << 8 | 255 * t.a) >>> 0;
+};
+return t;
+})();
+i.default = s;
+e.exports = i.default;
+}), {
+"./utils": 323
+} ],
+317: [ (function(t, e, i) {
+"use strict";
+i.__esModule = !0;
+i.color4 = i.color3 = i.mat4 = i.mat3 = i.mat23 = i.mat2 = i.quat = i.vec4 = i.vec3 = i.vec2 = void 0;
+var n = t("./utils");
+Object.keys(n).forEach((function(t) {
+"default" !== t && "__esModule" !== t && Object.defineProperty(i, t, {
+enumerable: !0,
+get: function() {
+return n[t];
+}
+});
+}));
+var r = d(t("./vec2")), s = d(t("./vec3")), o = d(t("./vec4")), a = d(t("./quat")), c = d(t("./mat2")), l = d(t("./mat23")), h = d(t("./mat3")), u = d(t("./mat4")), _ = d(t("./color3")), f = d(t("./color4"));
+function d(t) {
+return t && t.__esModule ? t : {
+default: t
+};
+}
+i.vec2 = r.default;
+i.vec3 = s.default;
+i.vec4 = o.default;
+i.quat = a.default;
+i.mat2 = c.default;
+i.mat23 = l.default;
+i.mat3 = h.default;
+i.mat4 = u.default;
+i.color3 = _.default;
+i.color4 = f.default;
+i.default = {
+vec2: r.default,
+vec3: s.default,
+vec4: o.default,
+quat: a.default,
+mat2: c.default,
+mat23: l.default,
+mat3: h.default,
+mat4: u.default,
+color3: _.default,
+color4: f.default
+};
+}), {
+"./color3": 315,
+"./color4": 316,
+"./mat2": 318,
+"./mat23": 319,
+"./mat3": 320,
+"./mat4": 321,
+"./quat": 322,
+"./utils": 323,
+"./vec2": 324,
+"./vec3": 325,
+"./vec4": 326
+} ],
+318: [ (function(t, e, i) {
+"use strict";
+i.__esModule = !0;
+var n = t("./utils");
+function r(t, e) {
+if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function");
+}
+var s = (function() {
+function t() {
+var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : 1, i = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 0, n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : 0, s = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : 1;
+r(this, t);
+this.m00 = e;
+this.m01 = i;
+this.m02 = n;
+this.m03 = s;
+}
+t.create = function() {
+return new t(arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : 1, arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 0, arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : 0, arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : 1);
+};
+t.clone = function(e) {
+return new t(e.m00, e.m01, e.m02, e.m03);
+};
+t.copy = function(t, e) {
+t.m00 = e.m00;
+t.m01 = e.m01;
+t.m02 = e.m02;
+t.m03 = e.m03;
+return t;
+};
+t.identity = function(t) {
+t.m00 = 1;
+t.m01 = 0;
+t.m02 = 0;
+t.m03 = 1;
+return t;
+};
+t.set = function(t, e, i, n, r) {
+t.m00 = e;
+t.m01 = i;
+t.m02 = n;
+t.m03 = r;
+return t;
+};
+t.transpose = function(t, e) {
+if (t === e) {
+var i = e.m01;
+t.m01 = e.m02;
+t.m02 = i;
+} else {
+t.m00 = e.m00;
+t.m01 = e.m02;
+t.m02 = e.m01;
+t.m03 = e.m03;
+}
+return t;
+};
+t.invert = function(t, e) {
+var i = e.m00, n = e.m01, r = e.m02, s = e.m03, o = i * s - r * n;
+if (!o) return null;
+o = 1 / o;
+t.m00 = s * o;
+t.m01 = -n * o;
+t.m02 = -r * o;
+t.m03 = i * o;
+return t;
+};
+t.adjoint = function(t, e) {
+var i = e.m00;
+t.m00 = e.m03;
+t.m01 = -e.m01;
+t.m02 = -e.m02;
+t.m03 = i;
+return t;
+};
+t.determinant = function(t) {
+return t.m00 * t.m03 - t.m02 * t.m01;
+};
+t.multiply = function(t, e, i) {
+var n = e.m00, r = e.m01, s = e.m02, o = e.m03, a = i.m00, c = i.m01, l = i.m02, h = i.m03;
+t.m00 = n * a + s * c;
+t.m01 = r * a + o * c;
+t.m02 = n * l + s * h;
+t.m03 = r * l + o * h;
+return t;
+};
+t.mul = function(e, i, n) {
+return t.multiply(e, i, n);
+};
+t.rotate = function(t, e, i) {
+var n = e.m00, r = e.m01, s = e.m02, o = e.m03, a = Math.sin(i), c = Math.cos(i);
+t.m00 = n * c + s * a;
+t.m01 = r * c + o * a;
+t.m02 = n * -a + s * c;
+t.m03 = r * -a + o * c;
+return t;
+};
+t.scale = function(t, e, i) {
+var n = e.m00, r = e.m01, s = e.m02, o = e.m03, a = i.x, c = i.y;
+t.m00 = n * a;
+t.m01 = r * a;
+t.m02 = s * c;
+t.m03 = o * c;
+return t;
+};
+t.fromRotation = function(t, e) {
+var i = Math.sin(e), n = Math.cos(e);
+t.m00 = n;
+t.m01 = i;
+t.m02 = -i;
+t.m03 = n;
+return t;
+};
+t.fromScaling = function(t, e) {
+t.m00 = e.x;
+t.m01 = 0;
+t.m02 = 0;
+t.m03 = e.y;
+return t;
+};
+t.str = function(t) {
+return "mat2(" + t.m00 + ", " + t.m01 + ", " + t.m02 + ", " + t.m03 + ")";
+};
+t.array = function(t, e) {
+t[0] = e.m00;
+t[1] = e.m01;
+t[2] = e.m02;
+t[3] = e.m03;
+return t;
+};
+t.frob = function(t) {
+return Math.sqrt(Math.pow(t.m00, 2) + Math.pow(t.m01, 2) + Math.pow(t.m02, 2) + Math.pow(t.m03, 2));
+};
+t.LDU = function(t, e, i, n) {
+t.m02 = n.m02 / n.m00;
+i.m00 = n.m00;
+i.m01 = n.m01;
+i.m03 = n.m03 - t.m02 * i.m01;
+};
+t.add = function(t, e, i) {
+t.m00 = e.m00 + i.m00;
+t.m01 = e.m01 + i.m01;
+t.m02 = e.m02 + i.m02;
+t.m03 = e.m03 + i.m03;
+return t;
+};
+t.subtract = function(t, e, i) {
+t.m00 = e.m00 - i.m00;
+t.m01 = e.m01 - i.m01;
+t.m02 = e.m02 - i.m02;
+t.m03 = e.m03 - i.m03;
+return t;
+};
+t.sub = function(e, i, n) {
+return t.subtract(e, i, n);
+};
+t.exactEquals = function(t, e) {
+return t.m00 === e.m00 && t.m01 === e.m01 && t.m02 === e.m02 && t.m03 === e.m03;
+};
+t.equals = function(t, e) {
+var i = t.m00, r = t.m01, s = t.m02, o = t.m03, a = e.m00, c = e.m01, l = e.m02, h = e.m03;
+return Math.abs(i - a) <= n.EPSILON * Math.max(1, Math.abs(i), Math.abs(a)) && Math.abs(r - c) <= n.EPSILON * Math.max(1, Math.abs(r), Math.abs(c)) && Math.abs(s - l) <= n.EPSILON * Math.max(1, Math.abs(s), Math.abs(l)) && Math.abs(o - h) <= n.EPSILON * Math.max(1, Math.abs(o), Math.abs(h));
+};
+t.multiplyScalar = function(t, e, i) {
+t.m00 = e.m00 * i;
+t.m01 = e.m01 * i;
+t.m02 = e.m02 * i;
+t.m03 = e.m03 * i;
+return t;
+};
+t.multiplyScalarAndAdd = function(t, e, i, n) {
+t.m00 = e.m00 + i.m00 * n;
+t.m01 = e.m01 + i.m01 * n;
+t.m02 = e.m02 + i.m02 * n;
+t.m03 = e.m03 + i.m03 * n;
+return t;
+};
+return t;
+})();
+i.default = s;
+e.exports = i.default;
+}), {
+"./utils": 323
+} ],
+319: [ (function(t, e, i) {
+"use strict";
+i.__esModule = !0;
+var n = t("./utils");
+function r(t, e) {
+if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function");
+}
+var s = (function() {
+function t() {
+var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : 1, i = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 0, n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : 0, s = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : 1, o = arguments.length > 4 && void 0 !== arguments[4] ? arguments[4] : 0, a = arguments.length > 5 && void 0 !== arguments[5] ? arguments[5] : 0;
+r(this, t);
+this.m00 = e;
+this.m01 = i;
+this.m02 = n;
+this.m03 = s;
+this.m04 = o;
+this.m05 = a;
+}
+t.create = function() {
+return new t(arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : 1, arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 0, arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : 0, arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : 1, arguments.length > 4 && void 0 !== arguments[4] ? arguments[4] : 0, arguments.length > 5 && void 0 !== arguments[5] ? arguments[5] : 0);
+};
+t.clone = function(e) {
+return new t(e.m00, e.m01, e.m02, e.m03, e.m04, e.m05);
+};
+t.copy = function(t, e) {
+t.m00 = e.m00;
+t.m01 = e.m01;
+t.m02 = e.m02;
+t.m03 = e.m03;
+t.m04 = e.m04;
+t.m05 = e.m05;
+return t;
+};
+t.identity = function(t) {
+t.m00 = 1;
+t.m01 = 0;
+t.m02 = 0;
+t.m03 = 1;
+t.m04 = 0;
+t.m05 = 0;
+return t;
+};
+t.set = function(t, e, i, n, r, s, o) {
+t.m00 = e;
+t.m01 = i;
+t.m02 = n;
+t.m03 = r;
+t.m04 = s;
+t.m05 = o;
+return t;
+};
+t.invert = function(t, e) {
+var i = e.m00, n = e.m01, r = e.m02, s = e.m03, o = e.m04, a = e.m05, c = i * s - n * r;
+if (!c) return null;
+c = 1 / c;
+t.m00 = s * c;
+t.m01 = -n * c;
+t.m02 = -r * c;
+t.m03 = i * c;
+t.m04 = (r * a - s * o) * c;
+t.m05 = (n * o - i * a) * c;
+return t;
+};
+t.determinant = function(t) {
+return t.m00 * t.m03 - t.m01 * t.m02;
+};
+t.multiply = function(t, e, i) {
+var n = e.m00, r = e.m01, s = e.m02, o = e.m03, a = e.m04, c = e.m05, l = i.m00, h = i.m01, u = i.m02, _ = i.m03, f = i.m04, d = i.m05;
+t.m00 = n * l + s * h;
+t.m01 = r * l + o * h;
+t.m02 = n * u + s * _;
+t.m03 = r * u + o * _;
+t.m04 = n * f + s * d + a;
+t.m05 = r * f + o * d + c;
+return t;
+};
+t.mul = function(e, i, n) {
+return t.multiply(e, i, n);
+};
+t.rotate = function(t, e, i) {
+var n = e.m00, r = e.m01, s = e.m02, o = e.m03, a = e.m04, c = e.m05, l = Math.sin(i), h = Math.cos(i);
+t.m00 = n * h + s * l;
+t.m01 = r * h + o * l;
+t.m02 = n * -l + s * h;
+t.m03 = r * -l + o * h;
+t.m04 = a;
+t.m05 = c;
+return t;
+};
+t.scale = function(t, e, i) {
+var n = e.m00, r = e.m01, s = e.m02, o = e.m03, a = e.m04, c = e.m05, l = i.x, h = i.y;
+t.m00 = n * l;
+t.m01 = r * l;
+t.m02 = s * h;
+t.m03 = o * h;
+t.m04 = a;
+t.m05 = c;
+return t;
+};
+t.translate = function(t, e, i) {
+var n = e.m00, r = e.m01, s = e.m02, o = e.m03, a = e.m04, c = e.m05, l = i.x, h = i.y;
+t.m00 = n;
+t.m01 = r;
+t.m02 = s;
+t.m03 = o;
+t.m04 = n * l + s * h + a;
+t.m05 = r * l + o * h + c;
+return t;
+};
+t.fromRotation = function(t, e) {
+var i = Math.sin(e), n = Math.cos(e);
+t.m00 = n;
+t.m01 = i;
+t.m02 = -i;
+t.m03 = n;
+t.m04 = 0;
+t.m05 = 0;
+return t;
+};
+t.fromScaling = function(t, e) {
+t.m00 = e.m00;
+t.m01 = 0;
+t.m02 = 0;
+t.m03 = e.m01;
+t.m04 = 0;
+t.m05 = 0;
+return t;
+};
+t.fromTranslation = function(t, e) {
+t.m00 = 1;
+t.m01 = 0;
+t.m02 = 0;
+t.m03 = 1;
+t.m04 = e.x;
+t.m05 = e.y;
+return t;
+};
+t.fromRTS = function(t, e, i, n) {
+var r = Math.sin(e), s = Math.cos(e);
+t.m00 = s * n.x;
+t.m01 = r * n.x;
+t.m02 = -r * n.y;
+t.m03 = s * n.y;
+t.m04 = i.x;
+t.m05 = i.y;
+return t;
+};
+t.str = function(t) {
+return "mat23(" + t.m00 + ", " + t.m01 + ", " + t.m02 + ", " + t.m03 + ", " + t.m04 + ", " + t.m05 + ")";
+};
+t.array = function(t, e) {
+t[0] = e.m00;
+t[1] = e.m01;
+t[2] = e.m02;
+t[3] = e.m03;
+t[4] = e.m04;
+t[5] = e.m05;
+return t;
+};
+t.array4x4 = function(t, e) {
+t[0] = e.m00;
+t[1] = e.m01;
+t[2] = 0;
+t[3] = 0;
+t[4] = e.m02;
+t[5] = e.m03;
+t[6] = 0;
+t[7] = 0;
+t[8] = 0;
+t[9] = 0;
+t[10] = 1;
+t[11] = 0;
+t[12] = e.m04;
+t[13] = e.m05;
+t[14] = 0;
+t[15] = 1;
+return t;
+};
+t.frob = function(t) {
+return Math.sqrt(Math.pow(t.m00, 2) + Math.pow(t.m01, 2) + Math.pow(t.m02, 2) + Math.pow(t.m03, 2) + Math.pow(t.m04, 2) + Math.pow(t.m05, 2) + 1);
+};
+t.add = function(t, e, i) {
+t.m00 = e.m00 + i.m00;
+t.m01 = e.m01 + i.m01;
+t.m02 = e.m02 + i.m02;
+t.m03 = e.m03 + i.m03;
+t.m04 = e.m04 + i.m04;
+t.m05 = e.m05 + i.m05;
+return t;
+};
+t.subtract = function(t, e, i) {
+t.m00 = e.m00 - i.m00;
+t.m01 = e.m01 - i.m01;
+t.m02 = e.m02 - i.m02;
+t.m03 = e.m03 - i.m03;
+t.m04 = e.m04 - i.m04;
+t.m05 = e.m05 - i.m05;
+return t;
+};
+t.sub = function(e, i, n) {
+return t.subtract(e, i, n);
+};
+t.multiplyScalar = function(t, e, i) {
+t.m00 = e.m00 * i;
+t.m01 = e.m01 * i;
+t.m02 = e.m02 * i;
+t.m03 = e.m03 * i;
+t.m04 = e.m04 * i;
+t.m05 = e.m05 * i;
+return t;
+};
+t.multiplyScalarAndAdd = function(t, e, i, n) {
+t.m00 = e.m00 + i.m00 * n;
+t.m01 = e.m01 + i.m01 * n;
+t.m02 = e.m02 + i.m02 * n;
+t.m03 = e.m03 + i.m03 * n;
+t.m04 = e.m04 + i.m04 * n;
+t.m05 = e.m05 + i.m05 * n;
+return t;
+};
+t.exactEquals = function(t, e) {
+return t.m00 === e.m00 && t.m01 === e.m01 && t.m02 === e.m02 && t.m03 === e.m03 && t.m04 === e.m04 && t.m05 === e.m05;
+};
+t.equals = function(t, e) {
+var i = t.m00, r = t.m01, s = t.m02, o = t.m03, a = t.m04, c = t.m05, l = e.m00, h = e.m01, u = e.m02, _ = e.m03, f = e.m04, d = e.m05;
+return Math.abs(i - l) <= n.EPSILON * Math.max(1, Math.abs(i), Math.abs(l)) && Math.abs(r - h) <= n.EPSILON * Math.max(1, Math.abs(r), Math.abs(h)) && Math.abs(s - u) <= n.EPSILON * Math.max(1, Math.abs(s), Math.abs(u)) && Math.abs(o - _) <= n.EPSILON * Math.max(1, Math.abs(o), Math.abs(_)) && Math.abs(a - f) <= n.EPSILON * Math.max(1, Math.abs(a), Math.abs(f)) && Math.abs(c - d) <= n.EPSILON * Math.max(1, Math.abs(c), Math.abs(d));
+};
+return t;
+})();
+i.default = s;
+e.exports = i.default;
+}), {
+"./utils": 323
+} ],
+320: [ (function(t, e, i) {
+"use strict";
+i.__esModule = !0;
+var n = t("./utils"), r = (function(t) {
+return t && t.__esModule ? t : {
+default: t
+};
+})(t("./vec3"));
+function s(t, e) {
+if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function");
+}
+var o = (function() {
+function t() {
+var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : 1, i = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 0, n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : 0, r = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : 0, o = arguments.length > 4 && void 0 !== arguments[4] ? arguments[4] : 1, a = arguments.length > 5 && void 0 !== arguments[5] ? arguments[5] : 0, c = arguments.length > 6 && void 0 !== arguments[6] ? arguments[6] : 0, l = arguments.length > 7 && void 0 !== arguments[7] ? arguments[7] : 0, h = arguments.length > 8 && void 0 !== arguments[8] ? arguments[8] : 1;
+s(this, t);
+this.m00 = e;
+this.m01 = i;
+this.m02 = n;
+this.m03 = r;
+this.m04 = o;
+this.m05 = a;
+this.m06 = c;
+this.m07 = l;
+this.m08 = h;
+}
+t.create = function() {
+return new t(arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : 1, arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 0, arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : 0, arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : 0, arguments.length > 4 && void 0 !== arguments[4] ? arguments[4] : 1, arguments.length > 5 && void 0 !== arguments[5] ? arguments[5] : 0, arguments.length > 6 && void 0 !== arguments[6] ? arguments[6] : 0, arguments.length > 7 && void 0 !== arguments[7] ? arguments[7] : 0, arguments.length > 8 && void 0 !== arguments[8] ? arguments[8] : 1);
+};
+t.clone = function(e) {
+return new t(e.m00, e.m01, e.m02, e.m03, e.m04, e.m05, e.m06, e.m07, e.m08);
+};
+t.copy = function(t, e) {
+t.m00 = e.m00;
+t.m01 = e.m01;
+t.m02 = e.m02;
+t.m03 = e.m03;
+t.m04 = e.m04;
+t.m05 = e.m05;
+t.m06 = e.m06;
+t.m07 = e.m07;
+t.m08 = e.m08;
+return t;
+};
+t.set = function(t, e, i, n, r, s, o, a, c, l) {
+t.m00 = e;
+t.m01 = i;
+t.m02 = n;
+t.m03 = r;
+t.m04 = s;
+t.m05 = o;
+t.m06 = a;
+t.m07 = c;
+t.m08 = l;
+return t;
+};
+t.identity = function(t) {
+t.m00 = 1;
+t.m01 = 0;
+t.m02 = 0;
+t.m03 = 0;
+t.m04 = 1;
+t.m05 = 0;
+t.m06 = 0;
+t.m07 = 0;
+t.m08 = 1;
+return t;
+};
+t.transpose = function(t, e) {
+if (t === e) {
+var i = e.m01, n = e.m02, r = e.m05;
+t.m01 = e.m03;
+t.m02 = e.m06;
+t.m03 = i;
+t.m05 = e.m07;
+t.m06 = n;
+t.m07 = r;
+} else {
+t.m00 = e.m00;
+t.m01 = e.m03;
+t.m02 = e.m06;
+t.m03 = e.m01;
+t.m04 = e.m04;
+t.m05 = e.m07;
+t.m06 = e.m02;
+t.m07 = e.m05;
+t.m08 = e.m08;
+}
+return t;
+};
+t.invert = function(t, e) {
+var i = e.m00, n = e.m01, r = e.m02, s = e.m03, o = e.m04, a = e.m05, c = e.m06, l = e.m07, h = e.m08, u = h * o - a * l, _ = -h * s + a * c, f = l * s - o * c, d = i * u + n * _ + r * f;
+if (!d) return null;
+d = 1 / d;
+t.m00 = u * d;
+t.m01 = (-h * n + r * l) * d;
+t.m02 = (a * n - r * o) * d;
+t.m03 = _ * d;
+t.m04 = (h * i - r * c) * d;
+t.m05 = (-a * i + r * s) * d;
+t.m06 = f * d;
+t.m07 = (-l * i + n * c) * d;
+t.m08 = (o * i - n * s) * d;
+return t;
+};
+t.adjoint = function(t, e) {
+var i = e.m00, n = e.m01, r = e.m02, s = e.m03, o = e.m04, a = e.m05, c = e.m06, l = e.m07, h = e.m08;
+t.m00 = o * h - a * l;
+t.m01 = r * l - n * h;
+t.m02 = n * a - r * o;
+t.m03 = a * c - s * h;
+t.m04 = i * h - r * c;
+t.m05 = r * s - i * a;
+t.m06 = s * l - o * c;
+t.m07 = n * c - i * l;
+t.m08 = i * o - n * s;
+return t;
+};
+t.determinant = function(t) {
+var e = t.m00, i = t.m01, n = t.m02, r = t.m03, s = t.m04, o = t.m05, a = t.m06, c = t.m07, l = t.m08;
+return e * (l * s - o * c) + i * (-l * r + o * a) + n * (c * r - s * a);
+};
+t.multiply = function(t, e, i) {
+var n = e.m00, r = e.m01, s = e.m02, o = e.m03, a = e.m04, c = e.m05, l = e.m06, h = e.m07, u = e.m08, _ = i.m00, f = i.m01, d = i.m02, m = i.m03, p = i.m04, v = i.m05, y = i.m06, g = i.m07, x = i.m08;
+t.m00 = _ * n + f * o + d * l;
+t.m01 = _ * r + f * a + d * h;
+t.m02 = _ * s + f * c + d * u;
+t.m03 = m * n + p * o + v * l;
+t.m04 = m * r + p * a + v * h;
+t.m05 = m * s + p * c + v * u;
+t.m06 = y * n + g * o + x * l;
+t.m07 = y * r + g * a + x * h;
+t.m08 = y * s + g * c + x * u;
+return t;
+};
+t.mul = function(e, i, n) {
+return t.multiply(e, i, n);
+};
+t.translate = function(t, e, i) {
+var n = e.m00, r = e.m01, s = e.m02, o = e.m03, a = e.m04, c = e.m05, l = e.m06, h = e.m07, u = e.m08, _ = i.x, f = i.y;
+t.m00 = n;
+t.m01 = r;
+t.m02 = s;
+t.m03 = o;
+t.m04 = a;
+t.m05 = c;
+t.m06 = _ * n + f * o + l;
+t.m07 = _ * r + f * a + h;
+t.m08 = _ * s + f * c + u;
+return t;
+};
+t.rotate = function(t, e, i) {
+var n = e.m00, r = e.m01, s = e.m02, o = e.m03, a = e.m04, c = e.m05, l = e.m06, h = e.m07, u = e.m08, _ = Math.sin(i), f = Math.cos(i);
+t.m00 = f * n + _ * o;
+t.m01 = f * r + _ * a;
+t.m02 = f * s + _ * c;
+t.m03 = f * o - _ * n;
+t.m04 = f * a - _ * r;
+t.m05 = f * c - _ * s;
+t.m06 = l;
+t.m07 = h;
+t.m08 = u;
+return t;
+};
+t.scale = function(t, e, i) {
+var n = i.x, r = i.y;
+t.m00 = n * e.m00;
+t.m01 = n * e.m01;
+t.m02 = n * e.m02;
+t.m03 = r * e.m03;
+t.m04 = r * e.m04;
+t.m05 = r * e.m05;
+t.m06 = e.m06;
+t.m07 = e.m07;
+t.m08 = e.m08;
+return t;
+};
+t.fromMat4 = function(t, e) {
+t.m00 = e.m00;
+t.m01 = e.m01;
+t.m02 = e.m02;
+t.m03 = e.m04;
+t.m04 = e.m05;
+t.m05 = e.m06;
+t.m06 = e.m08;
+t.m07 = e.m09;
+t.m08 = e.m10;
+return t;
+};
+t.fromTranslation = function(t, e) {
+t.m00 = 1;
+t.m01 = 0;
+t.m02 = 0;
+t.m03 = 0;
+t.m04 = 1;
+t.m05 = 0;
+t.m06 = e.x;
+t.m07 = e.y;
+t.m08 = 1;
+return t;
+};
+t.fromRotation = function(t, e) {
+var i = Math.sin(e), n = Math.cos(e);
+t.m00 = n;
+t.m01 = i;
+t.m02 = 0;
+t.m03 = -i;
+t.m04 = n;
+t.m05 = 0;
+t.m06 = 0;
+t.m07 = 0;
+t.m08 = 1;
+return t;
+};
+t.fromScaling = function(t, e) {
+t.m00 = e.x;
+t.m01 = 0;
+t.m02 = 0;
+t.m03 = 0;
+t.m04 = e.y;
+t.m05 = 0;
+t.m06 = 0;
+t.m07 = 0;
+t.m08 = 1;
+return t;
+};
+t.fromMat2d = function(t, e) {
+t.m00 = e.m00;
+t.m01 = e.m01;
+t.m02 = 0;
+t.m03 = e.m02;
+t.m04 = e.m03;
+t.m05 = 0;
+t.m06 = e.m04;
+t.m07 = e.m05;
+t.m08 = 1;
+return t;
+};
+t.fromQuat = function(t, e) {
+var i = e.x, n = e.y, r = e.z, s = e.w, o = i + i, a = n + n, c = r + r, l = i * o, h = n * o, u = n * a, _ = r * o, f = r * a, d = r * c, m = s * o, p = s * a, v = s * c;
+t.m00 = 1 - u - d;
+t.m03 = h - v;
+t.m06 = _ + p;
+t.m01 = h + v;
+t.m04 = 1 - l - d;
+t.m07 = f - m;
+t.m02 = _ - p;
+t.m05 = f + m;
+t.m08 = 1 - l - u;
+return t;
+};
+t.fromViewUp = function(e, i, s) {
+return (function() {
+var e = r.default.create(0, 1, 0), i = r.default.create(0, 0, 0), s = r.default.create(0, 0, 0);
+return function(o, a, c) {
+if (r.default.sqrMag(a) < n.EPSILON * n.EPSILON) {
+t.identity(o);
+return o;
+}
+c = c || e;
+r.default.normalize(i, r.default.cross(i, c, a));
+if (r.default.sqrMag(i) < n.EPSILON * n.EPSILON) {
+t.identity(o);
+return o;
+}
+r.default.cross(s, a, i);
+t.set(o, i.x, i.y, i.z, s.x, s.y, s.z, a.x, a.y, a.z);
+return o;
+};
+})()(e, i, s);
+};
+t.normalFromMat4 = function(t, e) {
+var i = e.m00, n = e.m01, r = e.m02, s = e.m03, o = e.m04, a = e.m05, c = e.m06, l = e.m07, h = e.m08, u = e.m09, _ = e.m10, f = e.m11, d = e.m12, m = e.m13, p = e.m14, v = e.m15, y = i * a - n * o, g = i * c - r * o, x = i * l - s * o, C = n * c - r * a, b = n * l - s * a, A = r * l - s * c, S = h * m - u * d, w = h * p - _ * d, T = h * v - f * d, E = u * p - _ * m, M = u * v - f * m, B = _ * v - f * p, D = y * B - g * M + x * E + C * T - b * w + A * S;
+if (!D) return null;
+D = 1 / D;
+t.m00 = (a * B - c * M + l * E) * D;
+t.m01 = (c * T - o * B - l * w) * D;
+t.m02 = (o * M - a * T + l * S) * D;
+t.m03 = (r * M - n * B - s * E) * D;
+t.m04 = (i * B - r * T + s * w) * D;
+t.m05 = (n * T - i * M - s * S) * D;
+t.m06 = (m * A - p * b + v * C) * D;
+t.m07 = (p * x - d * A - v * g) * D;
+t.m08 = (d * b - m * x + v * y) * D;
+return t;
+};
+t.str = function(t) {
+return "mat3(" + t.m00 + ", " + t.m01 + ", " + t.m02 + ", " + t.m03 + ", " + t.m04 + ", " + t.m05 + ", " + t.m06 + ", " + t.m07 + ", " + t.m08 + ")";
+};
+t.array = function(t, e) {
+t[0] = e.m00;
+t[1] = e.m01;
+t[2] = e.m02;
+t[3] = e.m03;
+t[4] = e.m04;
+t[5] = e.m05;
+t[6] = e.m06;
+t[7] = e.m07;
+t[8] = e.m08;
+return t;
+};
+t.frob = function(t) {
+return Math.sqrt(Math.pow(t.m00, 2) + Math.pow(t.m01, 2) + Math.pow(t.m02, 2) + Math.pow(t.m03, 2) + Math.pow(t.m04, 2) + Math.pow(t.m05, 2) + Math.pow(t.m06, 2) + Math.pow(t.m07, 2) + Math.pow(t.m08, 2));
+};
+t.add = function(t, e, i) {
+t.m00 = e.m00 + i.m00;
+t.m01 = e.m01 + i.m01;
+t.m02 = e.m02 + i.m02;
+t.m03 = e.m03 + i.m03;
+t.m04 = e.m04 + i.m04;
+t.m05 = e.m05 + i.m05;
+t.m06 = e.m06 + i.m06;
+t.m07 = e.m07 + i.m07;
+t.m08 = e.m08 + i.m08;
+return t;
+};
+t.subtract = function(t, e, i) {
+t.m00 = e.m00 - i.m00;
+t.m01 = e.m01 - i.m01;
+t.m02 = e.m02 - i.m02;
+t.m03 = e.m03 - i.m03;
+t.m04 = e.m04 - i.m04;
+t.m05 = e.m05 - i.m05;
+t.m06 = e.m06 - i.m06;
+t.m07 = e.m07 - i.m07;
+t.m08 = e.m08 - i.m08;
+return t;
+};
+t.sub = function(e, i, n) {
+return t.subtract(e, i, n);
+};
+t.multiplyScalar = function(t, e, i) {
+t.m00 = e.m00 * i;
+t.m01 = e.m01 * i;
+t.m02 = e.m02 * i;
+t.m03 = e.m03 * i;
+t.m04 = e.m04 * i;
+t.m05 = e.m05 * i;
+t.m06 = e.m06 * i;
+t.m07 = e.m07 * i;
+t.m08 = e.m08 * i;
+return t;
+};
+t.multiplyScalarAndAdd = function(t, e, i, n) {
+t.m00 = e.m00 + i.m00 * n;
+t.m01 = e.m01 + i.m01 * n;
+t.m02 = e.m02 + i.m02 * n;
+t.m03 = e.m03 + i.m03 * n;
+t.m04 = e.m04 + i.m04 * n;
+t.m05 = e.m05 + i.m05 * n;
+t.m06 = e.m06 + i.m06 * n;
+t.m07 = e.m07 + i.m07 * n;
+t.m08 = e.m08 + i.m08 * n;
+return t;
+};
+t.exactEquals = function(t, e) {
+return t.m00 === e.m00 && t.m01 === e.m01 && t.m02 === e.m02 && t.m03 === e.m03 && t.m04 === e.m04 && t.m05 === e.m05 && t.m06 === e.m06 && t.m07 === e.m07 && t.m08 === e.m08;
+};
+t.equals = function(t, e) {
+var i = t.m00, r = t.m01, s = t.m02, o = t.m03, a = t.m04, c = t.m05, l = t.m06, h = t.m07, u = t.m08, _ = e.m00, f = e.m01, d = e.m02, m = e.m03, p = e.m04, v = e.m05, y = e.m06, g = e.m07, x = e.m08;
+return Math.abs(i - _) <= n.EPSILON * Math.max(1, Math.abs(i), Math.abs(_)) && Math.abs(r - f) <= n.EPSILON * Math.max(1, Math.abs(r), Math.abs(f)) && Math.abs(s - d) <= n.EPSILON * Math.max(1, Math.abs(s), Math.abs(d)) && Math.abs(o - m) <= n.EPSILON * Math.max(1, Math.abs(o), Math.abs(m)) && Math.abs(a - p) <= n.EPSILON * Math.max(1, Math.abs(a), Math.abs(p)) && Math.abs(c - v) <= n.EPSILON * Math.max(1, Math.abs(c), Math.abs(v)) && Math.abs(l - y) <= n.EPSILON * Math.max(1, Math.abs(l), Math.abs(y)) && Math.abs(h - g) <= n.EPSILON * Math.max(1, Math.abs(h), Math.abs(g)) && Math.abs(u - x) <= n.EPSILON * Math.max(1, Math.abs(u), Math.abs(x));
+};
+return t;
+})();
+i.default = o;
+e.exports = i.default;
+}), {
+"./utils": 323,
+"./vec3": 325
+} ],
+321: [ (function(t, e, i) {
+"use strict";
+i.__esModule = !0;
+var n = t("./utils");
+function r(t, e) {
+if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function");
+}
+var s = (function() {
+function t() {
+var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : 1, i = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 0, n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : 0, s = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : 0, o = arguments.length > 4 && void 0 !== arguments[4] ? arguments[4] : 0, a = arguments.length > 5 && void 0 !== arguments[5] ? arguments[5] : 1, c = arguments.length > 6 && void 0 !== arguments[6] ? arguments[6] : 0, l = arguments.length > 7 && void 0 !== arguments[7] ? arguments[7] : 0, h = arguments.length > 8 && void 0 !== arguments[8] ? arguments[8] : 0, u = arguments.length > 9 && void 0 !== arguments[9] ? arguments[9] : 0, _ = arguments.length > 10 && void 0 !== arguments[10] ? arguments[10] : 1, f = arguments.length > 11 && void 0 !== arguments[11] ? arguments[11] : 0, d = arguments.length > 12 && void 0 !== arguments[12] ? arguments[12] : 0, m = arguments.length > 13 && void 0 !== arguments[13] ? arguments[13] : 0, p = arguments.length > 14 && void 0 !== arguments[14] ? arguments[14] : 0, v = arguments.length > 15 && void 0 !== arguments[15] ? arguments[15] : 1;
+r(this, t);
+this.m00 = e;
+this.m01 = i;
+this.m02 = n;
+this.m03 = s;
+this.m04 = o;
+this.m05 = a;
+this.m06 = c;
+this.m07 = l;
+this.m08 = h;
+this.m09 = u;
+this.m10 = _;
+this.m11 = f;
+this.m12 = d;
+this.m13 = m;
+this.m14 = p;
+this.m15 = v;
+}
+t.create = function() {
+return new t(arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : 1, arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 0, arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : 0, arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : 0, arguments.length > 4 && void 0 !== arguments[4] ? arguments[4] : 0, arguments.length > 5 && void 0 !== arguments[5] ? arguments[5] : 1, arguments.length > 6 && void 0 !== arguments[6] ? arguments[6] : 0, arguments.length > 7 && void 0 !== arguments[7] ? arguments[7] : 0, arguments.length > 8 && void 0 !== arguments[8] ? arguments[8] : 0, arguments.length > 9 && void 0 !== arguments[9] ? arguments[9] : 0, arguments.length > 10 && void 0 !== arguments[10] ? arguments[10] : 1, arguments.length > 11 && void 0 !== arguments[11] ? arguments[11] : 0, arguments.length > 12 && void 0 !== arguments[12] ? arguments[12] : 0, arguments.length > 13 && void 0 !== arguments[13] ? arguments[13] : 0, arguments.length > 14 && void 0 !== arguments[14] ? arguments[14] : 0, arguments.length > 15 && void 0 !== arguments[15] ? arguments[15] : 1);
+};
+t.clone = function(e) {
+return new t(e.m00, e.m01, e.m02, e.m03, e.m04, e.m05, e.m06, e.m07, e.m08, e.m09, e.m10, e.m11, e.m12, e.m13, e.m14, e.m15);
+};
+t.copy = function(t, e) {
+t.m00 = e.m00;
+t.m01 = e.m01;
+t.m02 = e.m02;
+t.m03 = e.m03;
+t.m04 = e.m04;
+t.m05 = e.m05;
+t.m06 = e.m06;
+t.m07 = e.m07;
+t.m08 = e.m08;
+t.m09 = e.m09;
+t.m10 = e.m10;
+t.m11 = e.m11;
+t.m12 = e.m12;
+t.m13 = e.m13;
+t.m14 = e.m14;
+t.m15 = e.m15;
+return t;
+};
+t.set = function(t, e, i, n, r, s, o, a, c, l, h, u, _, f, d, m, p) {
+t.m00 = e;
+t.m01 = i;
+t.m02 = n;
+t.m03 = r;
+t.m04 = s;
+t.m05 = o;
+t.m06 = a;
+t.m07 = c;
+t.m08 = l;
+t.m09 = h;
+t.m10 = u;
+t.m11 = _;
+t.m12 = f;
+t.m13 = d;
+t.m14 = m;
+t.m15 = p;
+return t;
+};
+t.identity = function(t) {
+t.m00 = 1;
+t.m01 = 0;
+t.m02 = 0;
+t.m03 = 0;
+t.m04 = 0;
+t.m05 = 1;
+t.m06 = 0;
+t.m07 = 0;
+t.m08 = 0;
+t.m09 = 0;
+t.m10 = 1;
+t.m11 = 0;
+t.m12 = 0;
+t.m13 = 0;
+t.m14 = 0;
+t.m15 = 1;
+return t;
+};
+t.transpose = function(t, e) {
+if (t === e) {
+var i = e.m01, n = e.m02, r = e.m03, s = e.m06, o = e.m07, a = e.m11;
+t.m01 = e.m04;
+t.m02 = e.m08;
+t.m03 = e.m12;
+t.m04 = i;
+t.m06 = e.m09;
+t.m07 = e.m13;
+t.m08 = n;
+t.m09 = s;
+t.m11 = e.m14;
+t.m12 = r;
+t.m13 = o;
+t.m14 = a;
+} else {
+t.m00 = e.m00;
+t.m01 = e.m04;
+t.m02 = e.m08;
+t.m03 = e.m12;
+t.m04 = e.m01;
+t.m05 = e.m05;
+t.m06 = e.m09;
+t.m07 = e.m13;
+t.m08 = e.m02;
+t.m09 = e.m06;
+t.m10 = e.m10;
+t.m11 = e.m14;
+t.m12 = e.m03;
+t.m13 = e.m07;
+t.m14 = e.m11;
+t.m15 = e.m15;
+}
+return t;
+};
+t.invert = function(t, e) {
+var i = e.m00, n = e.m01, r = e.m02, s = e.m03, o = e.m04, a = e.m05, c = e.m06, l = e.m07, h = e.m08, u = e.m09, _ = e.m10, f = e.m11, d = e.m12, m = e.m13, p = e.m14, v = e.m15, y = i * a - n * o, g = i * c - r * o, x = i * l - s * o, C = n * c - r * a, b = n * l - s * a, A = r * l - s * c, S = h * m - u * d, w = h * p - _ * d, T = h * v - f * d, E = u * p - _ * m, M = u * v - f * m, B = _ * v - f * p, D = y * B - g * M + x * E + C * T - b * w + A * S;
+if (!D) return null;
+D = 1 / D;
+t.m00 = (a * B - c * M + l * E) * D;
+t.m01 = (r * M - n * B - s * E) * D;
+t.m02 = (m * A - p * b + v * C) * D;
+t.m03 = (_ * b - u * A - f * C) * D;
+t.m04 = (c * T - o * B - l * w) * D;
+t.m05 = (i * B - r * T + s * w) * D;
+t.m06 = (p * x - d * A - v * g) * D;
+t.m07 = (h * A - _ * x + f * g) * D;
+t.m08 = (o * M - a * T + l * S) * D;
+t.m09 = (n * T - i * M - s * S) * D;
+t.m10 = (d * b - m * x + v * y) * D;
+t.m11 = (u * x - h * b - f * y) * D;
+t.m12 = (a * w - o * E - c * S) * D;
+t.m13 = (i * E - n * w + r * S) * D;
+t.m14 = (m * g - d * C - p * y) * D;
+t.m15 = (h * C - u * g + _ * y) * D;
+return t;
+};
+t.adjoint = function(t, e) {
+var i = e.m00, n = e.m01, r = e.m02, s = e.m03, o = e.m04, a = e.m05, c = e.m06, l = e.m07, h = e.m08, u = e.m09, _ = e.m10, f = e.m11, d = e.m12, m = e.m13, p = e.m14, v = e.m15;
+t.m00 = a * (_ * v - f * p) - u * (c * v - l * p) + m * (c * f - l * _);
+t.m01 = -(n * (_ * v - f * p) - u * (r * v - s * p) + m * (r * f - s * _));
+t.m02 = n * (c * v - l * p) - a * (r * v - s * p) + m * (r * l - s * c);
+t.m03 = -(n * (c * f - l * _) - a * (r * f - s * _) + u * (r * l - s * c));
+t.m04 = -(o * (_ * v - f * p) - h * (c * v - l * p) + d * (c * f - l * _));
+t.m05 = i * (_ * v - f * p) - h * (r * v - s * p) + d * (r * f - s * _);
+t.m06 = -(i * (c * v - l * p) - o * (r * v - s * p) + d * (r * l - s * c));
+t.m07 = i * (c * f - l * _) - o * (r * f - s * _) + h * (r * l - s * c);
+t.m08 = o * (u * v - f * m) - h * (a * v - l * m) + d * (a * f - l * u);
+t.m09 = -(i * (u * v - f * m) - h * (n * v - s * m) + d * (n * f - s * u));
+t.m10 = i * (a * v - l * m) - o * (n * v - s * m) + d * (n * l - s * a);
+t.m11 = -(i * (a * f - l * u) - o * (n * f - s * u) + h * (n * l - s * a));
+t.m12 = -(o * (u * p - _ * m) - h * (a * p - c * m) + d * (a * _ - c * u));
+t.m13 = i * (u * p - _ * m) - h * (n * p - r * m) + d * (n * _ - r * u);
+t.m14 = -(i * (a * p - c * m) - o * (n * p - r * m) + d * (n * c - r * a));
+t.m15 = i * (a * _ - c * u) - o * (n * _ - r * u) + h * (n * c - r * a);
+return t;
+};
+t.determinant = function(t) {
+var e = t.m00, i = t.m01, n = t.m02, r = t.m03, s = t.m04, o = t.m05, a = t.m06, c = t.m07, l = t.m08, h = t.m09, u = t.m10, _ = t.m11, f = t.m12, d = t.m13, m = t.m14, p = t.m15;
+return (e * o - i * s) * (u * p - _ * m) - (e * a - n * s) * (h * p - _ * d) + (e * c - r * s) * (h * m - u * d) + (i * a - n * o) * (l * p - _ * f) - (i * c - r * o) * (l * m - u * f) + (n * c - r * a) * (l * d - h * f);
+};
+t.multiply = function(t, e, i) {
+var n = e.m00, r = e.m01, s = e.m02, o = e.m03, a = e.m04, c = e.m05, l = e.m06, h = e.m07, u = e.m08, _ = e.m09, f = e.m10, d = e.m11, m = e.m12, p = e.m13, v = e.m14, y = e.m15, g = i.m00, x = i.m01, C = i.m02, b = i.m03;
+t.m00 = g * n + x * a + C * u + b * m;
+t.m01 = g * r + x * c + C * _ + b * p;
+t.m02 = g * s + x * l + C * f + b * v;
+t.m03 = g * o + x * h + C * d + b * y;
+g = i.m04;
+x = i.m05;
+C = i.m06;
+b = i.m07;
+t.m04 = g * n + x * a + C * u + b * m;
+t.m05 = g * r + x * c + C * _ + b * p;
+t.m06 = g * s + x * l + C * f + b * v;
+t.m07 = g * o + x * h + C * d + b * y;
+g = i.m08;
+x = i.m09;
+C = i.m10;
+b = i.m11;
+t.m08 = g * n + x * a + C * u + b * m;
+t.m09 = g * r + x * c + C * _ + b * p;
+t.m10 = g * s + x * l + C * f + b * v;
+t.m11 = g * o + x * h + C * d + b * y;
+g = i.m12;
+x = i.m13;
+C = i.m14;
+b = i.m15;
+t.m12 = g * n + x * a + C * u + b * m;
+t.m13 = g * r + x * c + C * _ + b * p;
+t.m14 = g * s + x * l + C * f + b * v;
+t.m15 = g * o + x * h + C * d + b * y;
+return t;
+};
+t.mul = function(e, i, n) {
+return t.multiply(e, i, n);
+};
+t.translate = function(t, e, i) {
+var n = i.x, r = i.y, s = i.z, o = void 0, a = void 0, c = void 0, l = void 0, h = void 0, u = void 0, _ = void 0, f = void 0, d = void 0, m = void 0, p = void 0, v = void 0;
+if (e === t) {
+t.m12 = e.m00 * n + e.m04 * r + e.m08 * s + e.m12;
+t.m13 = e.m01 * n + e.m05 * r + e.m09 * s + e.m13;
+t.m14 = e.m02 * n + e.m06 * r + e.m10 * s + e.m14;
+t.m15 = e.m03 * n + e.m07 * r + e.m11 * s + e.m15;
+} else {
+o = e.m00;
+a = e.m01;
+c = e.m02;
+l = e.m03;
+h = e.m04;
+u = e.m05;
+_ = e.m06;
+f = e.m07;
+d = e.m08;
+m = e.m09;
+p = e.m10;
+v = e.m11;
+t.m00 = o;
+t.m01 = a;
+t.m02 = c;
+t.m03 = l;
+t.m04 = h;
+t.m05 = u;
+t.m06 = _;
+t.m07 = f;
+t.m08 = d;
+t.m09 = m;
+t.m10 = p;
+t.m11 = v;
+t.m12 = o * n + h * r + d * s + e.m12;
+t.m13 = a * n + u * r + m * s + e.m13;
+t.m14 = c * n + _ * r + p * s + e.m14;
+t.m15 = l * n + f * r + v * s + e.m15;
+}
+return t;
+};
+t.scale = function(t, e, i) {
+var n = i.x, r = i.y, s = i.z;
+t.m00 = e.m00 * n;
+t.m01 = e.m01 * n;
+t.m02 = e.m02 * n;
+t.m03 = e.m03 * n;
+t.m04 = e.m04 * r;
+t.m05 = e.m05 * r;
+t.m06 = e.m06 * r;
+t.m07 = e.m07 * r;
+t.m08 = e.m08 * s;
+t.m09 = e.m09 * s;
+t.m10 = e.m10 * s;
+t.m11 = e.m11 * s;
+t.m12 = e.m12;
+t.m13 = e.m13;
+t.m14 = e.m14;
+t.m15 = e.m15;
+return t;
+};
+t.rotate = function(t, e, i, r) {
+var s, o, a, c, l, h, u, _, f, d, m, p, v, y, g, x, C, b, A, S, w, T, E, M, B = r.x, D = r.y, I = r.z, P = Math.sqrt(B * B + D * D + I * I);
+if (Math.abs(P) < n.EPSILON) return null;
+B *= P = 1 / P;
+D *= P;
+I *= P;
+s = Math.sin(i);
+a = 1 - (o = Math.cos(i));
+c = e.m00;
+l = e.m01;
+h = e.m02;
+u = e.m03;
+_ = e.m04;
+f = e.m05;
+d = e.m06;
+m = e.m07;
+p = e.m08;
+v = e.m09;
+y = e.m10;
+g = e.m11;
+x = B * B * a + o;
+C = D * B * a + I * s;
+b = I * B * a - D * s;
+A = B * D * a - I * s;
+S = D * D * a + o;
+w = I * D * a + B * s;
+T = B * I * a + D * s;
+E = D * I * a - B * s;
+M = I * I * a + o;
+t.m00 = c * x + _ * C + p * b;
+t.m01 = l * x + f * C + v * b;
+t.m02 = h * x + d * C + y * b;
+t.m03 = u * x + m * C + g * b;
+t.m04 = c * A + _ * S + p * w;
+t.m05 = l * A + f * S + v * w;
+t.m06 = h * A + d * S + y * w;
+t.m07 = u * A + m * S + g * w;
+t.m08 = c * T + _ * E + p * M;
+t.m09 = l * T + f * E + v * M;
+t.m10 = h * T + d * E + y * M;
+t.m11 = u * T + m * E + g * M;
+if (e !== t) {
+t.m12 = e.m12;
+t.m13 = e.m13;
+t.m14 = e.m14;
+t.m15 = e.m15;
+}
+return t;
+};
+t.rotateX = function(t, e, i) {
+var n = Math.sin(i), r = Math.cos(i), s = e.m04, o = e.m05, a = e.m06, c = e.m07, l = e.m08, h = e.m09, u = e.m10, _ = e.m11;
+if (e !== t) {
+t.m00 = e.m00;
+t.m01 = e.m01;
+t.m02 = e.m02;
+t.m03 = e.m03;
+t.m12 = e.m12;
+t.m13 = e.m13;
+t.m14 = e.m14;
+t.m15 = e.m15;
+}
+t.m04 = s * r + l * n;
+t.m05 = o * r + h * n;
+t.m06 = a * r + u * n;
+t.m07 = c * r + _ * n;
+t.m08 = l * r - s * n;
+t.m09 = h * r - o * n;
+t.m10 = u * r - a * n;
+t.m11 = _ * r - c * n;
+return t;
+};
+t.rotateY = function(t, e, i) {
+var n = Math.sin(i), r = Math.cos(i), s = e.m00, o = e.m01, a = e.m02, c = e.m03, l = e.m08, h = e.m09, u = e.m10, _ = e.m11;
+if (e !== t) {
+t.m04 = e.m04;
+t.m05 = e.m05;
+t.m06 = e.m06;
+t.m07 = e.m07;
+t.m12 = e.m12;
+t.m13 = e.m13;
+t.m14 = e.m14;
+t.m15 = e.m15;
+}
+t.m00 = s * r - l * n;
+t.m01 = o * r - h * n;
+t.m02 = a * r - u * n;
+t.m03 = c * r - _ * n;
+t.m08 = s * n + l * r;
+t.m09 = o * n + h * r;
+t.m10 = a * n + u * r;
+t.m11 = c * n + _ * r;
+return t;
+};
+t.rotateZ = function(t, e, i) {
+var n = Math.sin(i), r = Math.cos(i), s = e.m00, o = e.m01, a = e.m02, c = e.m03, l = e.m04, h = e.m05, u = e.m06, _ = e.m07;
+if (e !== t) {
+t.m08 = e.m08;
+t.m09 = e.m09;
+t.m10 = e.m10;
+t.m11 = e.m11;
+t.m12 = e.m12;
+t.m13 = e.m13;
+t.m14 = e.m14;
+t.m15 = e.m15;
+}
+t.m00 = s * r + l * n;
+t.m01 = o * r + h * n;
+t.m02 = a * r + u * n;
+t.m03 = c * r + _ * n;
+t.m04 = l * r - s * n;
+t.m05 = h * r - o * n;
+t.m06 = u * r - a * n;
+t.m07 = _ * r - c * n;
+return t;
+};
+t.fromTranslation = function(t, e) {
+t.m00 = 1;
+t.m01 = 0;
+t.m02 = 0;
+t.m03 = 0;
+t.m04 = 0;
+t.m05 = 1;
+t.m06 = 0;
+t.m07 = 0;
+t.m08 = 0;
+t.m09 = 0;
+t.m10 = 1;
+t.m11 = 0;
+t.m12 = e.x;
+t.m13 = e.y;
+t.m14 = e.z;
+t.m15 = 1;
+return t;
+};
+t.fromScaling = function(t, e) {
+t.m00 = e.x;
+t.m01 = 0;
+t.m02 = 0;
+t.m03 = 0;
+t.m04 = 0;
+t.m05 = e.y;
+t.m06 = 0;
+t.m07 = 0;
+t.m08 = 0;
+t.m09 = 0;
+t.m10 = e.z;
+t.m11 = 0;
+t.m12 = 0;
+t.m13 = 0;
+t.m14 = 0;
+t.m15 = 1;
+return t;
+};
+t.fromRotation = function(t, e, i) {
+var r, s, o, a = i.x, c = i.y, l = i.z, h = Math.sqrt(a * a + c * c + l * l);
+if (Math.abs(h) < n.EPSILON) return null;
+a *= h = 1 / h;
+c *= h;
+l *= h;
+r = Math.sin(e);
+o = 1 - (s = Math.cos(e));
+t.m00 = a * a * o + s;
+t.m01 = c * a * o + l * r;
+t.m02 = l * a * o - c * r;
+t.m03 = 0;
+t.m04 = a * c * o - l * r;
+t.m05 = c * c * o + s;
+t.m06 = l * c * o + a * r;
+t.m07 = 0;
+t.m08 = a * l * o + c * r;
+t.m09 = c * l * o - a * r;
+t.m10 = l * l * o + s;
+t.m11 = 0;
+t.m12 = 0;
+t.m13 = 0;
+t.m14 = 0;
+t.m15 = 1;
+return t;
+};
+t.fromXRotation = function(t, e) {
+var i = Math.sin(e), n = Math.cos(e);
+t.m00 = 1;
+t.m01 = 0;
+t.m02 = 0;
+t.m03 = 0;
+t.m04 = 0;
+t.m05 = n;
+t.m06 = i;
+t.m07 = 0;
+t.m08 = 0;
+t.m09 = -i;
+t.m10 = n;
+t.m11 = 0;
+t.m12 = 0;
+t.m13 = 0;
+t.m14 = 0;
+t.m15 = 1;
+return t;
+};
+t.fromYRotation = function(t, e) {
+var i = Math.sin(e), n = Math.cos(e);
+t.m00 = n;
+t.m01 = 0;
+t.m02 = -i;
+t.m03 = 0;
+t.m04 = 0;
+t.m05 = 1;
+t.m06 = 0;
+t.m07 = 0;
+t.m08 = i;
+t.m09 = 0;
+t.m10 = n;
+t.m11 = 0;
+t.m12 = 0;
+t.m13 = 0;
+t.m14 = 0;
+t.m15 = 1;
+return t;
+};
+t.fromZRotation = function(t, e) {
+var i = Math.sin(e), n = Math.cos(e);
+t.m00 = n;
+t.m01 = i;
+t.m02 = 0;
+t.m03 = 0;
+t.m04 = -i;
+t.m05 = n;
+t.m06 = 0;
+t.m07 = 0;
+t.m08 = 0;
+t.m09 = 0;
+t.m10 = 1;
+t.m11 = 0;
+t.m12 = 0;
+t.m13 = 0;
+t.m14 = 0;
+t.m15 = 1;
+return t;
+};
+t.fromRT = function(t, e, i) {
+var n = e.x, r = e.y, s = e.z, o = e.w, a = n + n, c = r + r, l = s + s, h = n * a, u = n * c, _ = n * l, f = r * c, d = r * l, m = s * l, p = o * a, v = o * c, y = o * l;
+t.m00 = 1 - (f + m);
+t.m01 = u + y;
+t.m02 = _ - v;
+t.m03 = 0;
+t.m04 = u - y;
+t.m05 = 1 - (h + m);
+t.m06 = d + p;
+t.m07 = 0;
+t.m08 = _ + v;
+t.m09 = d - p;
+t.m10 = 1 - (h + f);
+t.m11 = 0;
+t.m12 = i.x;
+t.m13 = i.y;
+t.m14 = i.z;
+t.m15 = 1;
+return t;
+};
+t.getTranslation = function(t, e) {
+t.x = e.m12;
+t.y = e.m13;
+t.z = e.m14;
+return t;
+};
+t.getScaling = function(t, e) {
+var i = e.m00, n = e.m01, r = e.m02, s = e.m04, o = e.m05, a = e.m06, c = e.m08, l = e.m09, h = e.m10;
+t.x = Math.sqrt(i * i + n * n + r * r);
+t.y = Math.sqrt(s * s + o * o + a * a);
+t.z = Math.sqrt(c * c + l * l + h * h);
+return t;
+};
+t.getRotation = function(t, e) {
+var i = e.m00 + e.m05 + e.m10, n = 0;
+if (i > 0) {
+n = 2 * Math.sqrt(i + 1);
+t.w = .25 * n;
+t.x = (e.m06 - e.m09) / n;
+t.y = (e.m08 - e.m02) / n;
+t.z = (e.m01 - e.m04) / n;
+} else if (e.m00 > e.m05 & e.m00 > e.m10) {
+n = 2 * Math.sqrt(1 + e.m00 - e.m05 - e.m10);
+t.w = (e.m06 - e.m09) / n;
+t.x = .25 * n;
+t.y = (e.m01 + e.m04) / n;
+t.z = (e.m08 + e.m02) / n;
+} else if (e.m05 > e.m10) {
+n = 2 * Math.sqrt(1 + e.m05 - e.m00 - e.m10);
+t.w = (e.m08 - e.m02) / n;
+t.x = (e.m01 + e.m04) / n;
+t.y = .25 * n;
+t.z = (e.m06 + e.m09) / n;
+} else {
+n = 2 * Math.sqrt(1 + e.m10 - e.m00 - e.m05);
+t.w = (e.m01 - e.m04) / n;
+t.x = (e.m08 + e.m02) / n;
+t.y = (e.m06 + e.m09) / n;
+t.z = .25 * n;
+}
+return t;
+};
+t.fromRTS = function(t, e, i, n) {
+var r = e.x, s = e.y, o = e.z, a = e.w, c = r + r, l = s + s, h = o + o, u = r * c, _ = r * l, f = r * h, d = s * l, m = s * h, p = o * h, v = a * c, y = a * l, g = a * h, x = n.x, C = n.y, b = n.z;
+t.m00 = (1 - (d + p)) * x;
+t.m01 = (_ + g) * x;
+t.m02 = (f - y) * x;
+t.m03 = 0;
+t.m04 = (_ - g) * C;
+t.m05 = (1 - (u + p)) * C;
+t.m06 = (m + v) * C;
+t.m07 = 0;
+t.m08 = (f + y) * b;
+t.m09 = (m - v) * b;
+t.m10 = (1 - (u + d)) * b;
+t.m11 = 0;
+t.m12 = i.x;
+t.m13 = i.y;
+t.m14 = i.z;
+t.m15 = 1;
+return t;
+};
+t.fromRTSOrigin = function(t, e, i, n, r) {
+var s = e.x, o = e.y, a = e.z, c = e.w, l = s + s, h = o + o, u = a + a, _ = s * l, f = s * h, d = s * u, m = o * h, p = o * u, v = a * u, y = c * l, g = c * h, x = c * u, C = n.x, b = n.y, A = n.z, S = r.x, w = r.y, T = r.z;
+t.m00 = (1 - (m + v)) * C;
+t.m01 = (f + x) * C;
+t.m02 = (d - g) * C;
+t.m03 = 0;
+t.m04 = (f - x) * b;
+t.m05 = (1 - (_ + v)) * b;
+t.m06 = (p + y) * b;
+t.m07 = 0;
+t.m08 = (d + g) * A;
+t.m09 = (p - y) * A;
+t.m10 = (1 - (_ + m)) * A;
+t.m11 = 0;
+t.m12 = i.x + S - (t.m00 * S + t.m04 * w + t.m08 * T);
+t.m13 = i.y + w - (t.m01 * S + t.m05 * w + t.m09 * T);
+t.m14 = i.z + T - (t.m02 * S + t.m06 * w + t.m10 * T);
+t.m15 = 1;
+return t;
+};
+t.fromQuat = function(t, e) {
+var i = e.x, n = e.y, r = e.z, s = e.w, o = i + i, a = n + n, c = r + r, l = i * o, h = n * o, u = n * a, _ = r * o, f = r * a, d = r * c, m = s * o, p = s * a, v = s * c;
+t.m00 = 1 - u - d;
+t.m01 = h + v;
+t.m02 = _ - p;
+t.m03 = 0;
+t.m04 = h - v;
+t.m05 = 1 - l - d;
+t.m06 = f + m;
+t.m07 = 0;
+t.m08 = _ + p;
+t.m09 = f - m;
+t.m10 = 1 - l - u;
+t.m11 = 0;
+t.m12 = 0;
+t.m13 = 0;
+t.m14 = 0;
+t.m15 = 1;
+return t;
+};
+t.frustum = function(t, e, i, n, r, s, o) {
+var a = 1 / (i - e), c = 1 / (r - n), l = 1 / (s - o);
+t.m00 = 2 * s * a;
+t.m01 = 0;
+t.m02 = 0;
+t.m03 = 0;
+t.m04 = 0;
+t.m05 = 2 * s * c;
+t.m06 = 0;
+t.m07 = 0;
+t.m08 = (i + e) * a;
+t.m09 = (r + n) * c;
+t.m10 = (o + s) * l;
+t.m11 = -1;
+t.m12 = 0;
+t.m13 = 0;
+t.m14 = o * s * 2 * l;
+t.m15 = 0;
+return t;
+};
+t.perspective = function(t, e, i, n, r) {
+var s = 1 / Math.tan(e / 2), o = 1 / (n - r);
+t.m00 = s / i;
+t.m01 = 0;
+t.m02 = 0;
+t.m03 = 0;
+t.m04 = 0;
+t.m05 = s;
+t.m06 = 0;
+t.m07 = 0;
+t.m08 = 0;
+t.m09 = 0;
+t.m10 = (r + n) * o;
+t.m11 = -1;
+t.m12 = 0;
+t.m13 = 0;
+t.m14 = 2 * r * n * o;
+t.m15 = 0;
+return t;
+};
+t.perspectiveFromFieldOfView = function(t, e, i, n) {
+var r = Math.tan(e.upDegrees * Math.PI / 180), s = Math.tan(e.downDegrees * Math.PI / 180), o = Math.tan(e.leftDegrees * Math.PI / 180), a = Math.tan(e.rightDegrees * Math.PI / 180), c = 2 / (o + a), l = 2 / (r + s);
+t.m00 = c;
+t.m01 = 0;
+t.m02 = 0;
+t.m03 = 0;
+t.m04 = 0;
+t.m05 = l;
+t.m06 = 0;
+t.m07 = 0;
+t.m08 = -(o - a) * c * .5;
+t.m09 = (r - s) * l * .5;
+t.m10 = n / (i - n);
+t.m11 = -1;
+t.m12 = 0;
+t.m13 = 0;
+t.m14 = n * i / (i - n);
+t.m15 = 0;
+return t;
+};
+t.ortho = function(t, e, i, n, r, s, o) {
+var a = 1 / (e - i), c = 1 / (n - r), l = 1 / (s - o);
+t.m00 = -2 * a;
+t.m01 = 0;
+t.m02 = 0;
+t.m03 = 0;
+t.m04 = 0;
+t.m05 = -2 * c;
+t.m06 = 0;
+t.m07 = 0;
+t.m08 = 0;
+t.m09 = 0;
+t.m10 = 2 * l;
+t.m11 = 0;
+t.m12 = (e + i) * a;
+t.m13 = (r + n) * c;
+t.m14 = (o + s) * l;
+t.m15 = 1;
+return t;
+};
+t.lookAt = function(t, e, i, n) {
+var r, s, o, a = void 0, c = void 0, l = void 0, h = void 0, u = void 0, _ = void 0, f = void 0, d = e.x, m = e.y, p = e.z, v = n.x, y = n.y, g = n.z, x = i.x, C = i.y, b = i.z;
+h = d - x;
+u = m - C;
+_ = p - b;
+a = y * (_ *= f = 1 / Math.sqrt(h * h + u * u + _ * _)) - g * (u *= f);
+c = g * (h *= f) - v * _;
+l = v * u - y * h;
+r = u * (l *= f = 1 / Math.sqrt(a * a + c * c + l * l)) - _ * (c *= f);
+s = _ * (a *= f) - h * l;
+o = h * c - u * a;
+t.m00 = a;
+t.m01 = r;
+t.m02 = h;
+t.m03 = 0;
+t.m04 = c;
+t.m05 = s;
+t.m06 = u;
+t.m07 = 0;
+t.m08 = l;
+t.m09 = o;
+t.m10 = _;
+t.m11 = 0;
+t.m12 = -(a * d + c * m + l * p);
+t.m13 = -(r * d + s * m + o * p);
+t.m14 = -(h * d + u * m + _ * p);
+t.m15 = 1;
+return t;
+};
+t.str = function(t) {
+return "mat4(" + t.m00 + ", " + t.m01 + ", " + t.m02 + ", " + t.m03 + ", " + t.m04 + ", " + t.m05 + ", " + t.m06 + ", " + t.m07 + ", " + t.m08 + ", " + t.m09 + ", " + t.m10 + ", " + t.m11 + ", " + t.m12 + ", " + t.m13 + ", " + t.m14 + ", " + t.m15 + ")";
+};
+t.array = function(t, e) {
+t[0] = e.m00;
+t[1] = e.m01;
+t[2] = e.m02;
+t[3] = e.m03;
+t[4] = e.m04;
+t[5] = e.m05;
+t[6] = e.m06;
+t[7] = e.m07;
+t[8] = e.m08;
+t[9] = e.m09;
+t[10] = e.m10;
+t[11] = e.m11;
+t[12] = e.m12;
+t[13] = e.m13;
+t[14] = e.m14;
+t[15] = e.m15;
+return t;
+};
+t.frob = function(t) {
+return Math.sqrt(Math.pow(t.m00, 2) + Math.pow(t.m01, 2) + Math.pow(t.m02, 2) + Math.pow(t.m03, 2) + Math.pow(t.m04, 2) + Math.pow(t.m05, 2) + Math.pow(t.m06, 2) + Math.pow(t.m07, 2) + Math.pow(t.m08, 2) + Math.pow(t.m09, 2) + Math.pow(t.m10, 2) + Math.pow(t.m11, 2) + Math.pow(t.m12, 2) + Math.pow(t.m13, 2) + Math.pow(t.m14, 2) + Math.pow(t.m15, 2));
+};
+t.add = function(t, e, i) {
+t.m00 = e.m00 + i.m00;
+t.m01 = e.m01 + i.m01;
+t.m02 = e.m02 + i.m02;
+t.m03 = e.m03 + i.m03;
+t.m04 = e.m04 + i.m04;
+t.m05 = e.m05 + i.m05;
+t.m06 = e.m06 + i.m06;
+t.m07 = e.m07 + i.m07;
+t.m08 = e.m08 + i.m08;
+t.m09 = e.m09 + i.m09;
+t.m10 = e.m10 + i.m10;
+t.m11 = e.m11 + i.m11;
+t.m12 = e.m12 + i.m12;
+t.m13 = e.m13 + i.m13;
+t.m14 = e.m14 + i.m14;
+t.m15 = e.m15 + i.m15;
+return t;
+};
+t.subtract = function(t, e, i) {
+t.m00 = e.m00 - i.m00;
+t.m01 = e.m01 - i.m01;
+t.m02 = e.m02 - i.m02;
+t.m03 = e.m03 - i.m03;
+t.m04 = e.m04 - i.m04;
+t.m05 = e.m05 - i.m05;
+t.m06 = e.m06 - i.m06;
+t.m07 = e.m07 - i.m07;
+t.m08 = e.m08 - i.m08;
+t.m09 = e.m09 - i.m09;
+t.m10 = e.m10 - i.m10;
+t.m11 = e.m11 - i.m11;
+t.m12 = e.m12 - i.m12;
+t.m13 = e.m13 - i.m13;
+t.m14 = e.m14 - i.m14;
+t.m15 = e.m15 - i.m15;
+return t;
+};
+t.sub = function(e, i, n) {
+return t.subtract(e, i, n);
+};
+t.multiplyScalar = function(t, e, i) {
+t.m00 = e.m00 * i;
+t.m01 = e.m01 * i;
+t.m02 = e.m02 * i;
+t.m03 = e.m03 * i;
+t.m04 = e.m04 * i;
+t.m05 = e.m05 * i;
+t.m06 = e.m06 * i;
+t.m07 = e.m07 * i;
+t.m08 = e.m08 * i;
+t.m09 = e.m09 * i;
+t.m10 = e.m10 * i;
+t.m11 = e.m11 * i;
+t.m12 = e.m12 * i;
+t.m13 = e.m13 * i;
+t.m14 = e.m14 * i;
+t.m15 = e.m15 * i;
+return t;
+};
+t.multiplyScalarAndAdd = function(t, e, i, n) {
+t.m00 = e.m00 + i.m00 * n;
+t.m01 = e.m01 + i.m01 * n;
+t.m02 = e.m02 + i.m02 * n;
+t.m03 = e.m03 + i.m03 * n;
+t.m04 = e.m04 + i.m04 * n;
+t.m05 = e.m05 + i.m05 * n;
+t.m06 = e.m06 + i.m06 * n;
+t.m07 = e.m07 + i.m07 * n;
+t.m08 = e.m08 + i.m08 * n;
+t.m09 = e.m09 + i.m09 * n;
+t.m10 = e.m10 + i.m10 * n;
+t.m11 = e.m11 + i.m11 * n;
+t.m12 = e.m12 + i.m12 * n;
+t.m13 = e.m13 + i.m13 * n;
+t.m14 = e.m14 + i.m14 * n;
+t.m15 = e.m15 + i.m15 * n;
+return t;
+};
+t.exactEquals = function(t, e) {
+return t.m00 === e.m00 && t.m01 === e.m01 && t.m02 === e.m02 && t.m03 === e.m03 && t.m04 === e.m04 && t.m05 === e.m05 && t.m06 === e.m06 && t.m07 === e.m07 && t.m08 === e.m08 && t.m09 === e.m09 && t.m10 === e.m10 && t.m11 === e.m11 && t.m12 === e.m12 && t.m13 === e.m13 && t.m14 === e.m14 && t.m15 === e.m15;
+};
+t.equals = function(t, e) {
+var i = t.m00, r = t.m01, s = t.m02, o = t.m03, a = t.m04, c = t.m05, l = t.m06, h = t.m07, u = t.m08, _ = t.m09, f = t.m10, d = t.m11, m = t.m12, p = t.m13, v = t.m14, y = t.m15, g = e.m00, x = e.m01, C = e.m02, b = e.m03, A = e.m04, S = e.m05, w = e.m06, T = e.m07, E = e.m08, M = e.m09, B = e.m10, D = e.m11, I = e.m12, P = e.m13, R = e.m14, L = e.m15;
+return Math.abs(i - g) <= n.EPSILON * Math.max(1, Math.abs(i), Math.abs(g)) && Math.abs(r - x) <= n.EPSILON * Math.max(1, Math.abs(r), Math.abs(x)) && Math.abs(s - C) <= n.EPSILON * Math.max(1, Math.abs(s), Math.abs(C)) && Math.abs(o - b) <= n.EPSILON * Math.max(1, Math.abs(o), Math.abs(b)) && Math.abs(a - A) <= n.EPSILON * Math.max(1, Math.abs(a), Math.abs(A)) && Math.abs(c - S) <= n.EPSILON * Math.max(1, Math.abs(c), Math.abs(S)) && Math.abs(l - w) <= n.EPSILON * Math.max(1, Math.abs(l), Math.abs(w)) && Math.abs(h - T) <= n.EPSILON * Math.max(1, Math.abs(h), Math.abs(T)) && Math.abs(u - E) <= n.EPSILON * Math.max(1, Math.abs(u), Math.abs(E)) && Math.abs(_ - M) <= n.EPSILON * Math.max(1, Math.abs(_), Math.abs(M)) && Math.abs(f - B) <= n.EPSILON * Math.max(1, Math.abs(f), Math.abs(B)) && Math.abs(d - D) <= n.EPSILON * Math.max(1, Math.abs(d), Math.abs(D)) && Math.abs(m - I) <= n.EPSILON * Math.max(1, Math.abs(m), Math.abs(I)) && Math.abs(p - P) <= n.EPSILON * Math.max(1, Math.abs(p), Math.abs(P)) && Math.abs(v - R) <= n.EPSILON * Math.max(1, Math.abs(v), Math.abs(R)) && Math.abs(y - L) <= n.EPSILON * Math.max(1, Math.abs(y), Math.abs(L));
+};
+return t;
+})();
+i.default = s;
+e.exports = i.default;
+}), {
+"./utils": 323
+} ],
+322: [ (function(t, e, i) {
+"use strict";
+i.__esModule = !0;
+var n = a(t("./vec3")), r = a(t("./vec4")), s = a(t("./mat3")), o = t("./utils");
+function a(t) {
+return t && t.__esModule ? t : {
+default: t
+};
+}
+function c(t, e) {
+if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function");
+}
+var l = .5 * Math.PI / 180, h = (function() {
+function t() {
+var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : 0, i = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 0, n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : 0, r = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : 1;
+c(this, t);
+this.x = e;
+this.y = i;
+this.z = n;
+this.w = r;
+}
+t.create = function() {
+return new t(arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : 0, arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 0, arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : 0, arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : 1);
+};
+t.clone = function(e) {
+return new t(e.x, e.y, e.z, e.w);
+};
+t.copy = function(t, e) {
+return r.default.copy(t, e);
+};
+t.set = function(t, e, i, n, r) {
+t.x = e;
+t.y = i;
+t.z = n;
+t.w = r;
+return t;
+};
+t.identity = function(t) {
+t.x = 0;
+t.y = 0;
+t.z = 0;
+t.w = 1;
+return t;
+};
+t.rotationTo = function(e, i, r) {
+return (function() {
+var e = n.default.create(0, 0, 0), i = n.default.create(1, 0, 0), r = n.default.create(0, 1, 0);
+return function(s, o, a) {
+var c = n.default.dot(o, a);
+if (c < -.999999) {
+n.default.cross(e, i, o);
+n.default.magnitude(e) < 1e-6 && n.default.cross(e, r, o);
+n.default.normalize(e, e);
+t.fromAxisAngle(s, e, Math.PI);
+return s;
+}
+if (c > .999999) {
+s.x = 0;
+s.y = 0;
+s.z = 0;
+s.w = 1;
+return s;
+}
+n.default.cross(e, o, a);
+s.x = e.x;
+s.y = e.y;
+s.z = e.z;
+s.w = 1 + c;
+return t.normalize(s, s);
+};
+})()(e, i, r);
+};
+t.getAxisAngle = function(t, e) {
+var i = 2 * Math.acos(e.w), n = Math.sin(i / 2);
+if (0 != n) {
+t.x = e.x / n;
+t.y = e.y / n;
+t.z = e.z / n;
+} else {
+t.x = 1;
+t.y = 0;
+t.z = 0;
+}
+return i;
+};
+t.multiply = function(t, e, i) {
+var n = e.x, r = e.y, s = e.z, o = e.w, a = i.x, c = i.y, l = i.z, h = i.w;
+t.x = n * h + o * a + r * l - s * c;
+t.y = r * h + o * c + s * a - n * l;
+t.z = s * h + o * l + n * c - r * a;
+t.w = o * h - n * a - r * c - s * l;
+return t;
+};
+t.mul = function(e, i, n) {
+return t.multiply(e, i, n);
+};
+t.scale = function(t, e, i) {
+t.x = e.x * i;
+t.y = e.y * i;
+t.z = e.z * i;
+t.w = e.w * i;
+return t;
+};
+t.rotateX = function(t, e, i) {
+i *= .5;
+var n = e.x, r = e.y, s = e.z, o = e.w, a = Math.sin(i), c = Math.cos(i);
+t.x = n * c + o * a;
+t.y = r * c + s * a;
+t.z = s * c - r * a;
+t.w = o * c - n * a;
+return t;
+};
+t.rotateY = function(t, e, i) {
+i *= .5;
+var n = e.x, r = e.y, s = e.z, o = e.w, a = Math.sin(i), c = Math.cos(i);
+t.x = n * c - s * a;
+t.y = r * c + o * a;
+t.z = s * c + n * a;
+t.w = o * c - r * a;
+return t;
+};
+t.rotateZ = function(t, e, i) {
+i *= .5;
+var n = e.x, r = e.y, s = e.z, o = e.w, a = Math.sin(i), c = Math.cos(i);
+t.x = n * c + r * a;
+t.y = r * c - n * a;
+t.z = s * c + o * a;
+t.w = o * c - s * a;
+return t;
+};
+t.rotateAround = function(e, i, r, s) {
+return (function() {
+var e = n.default.create(0, 0, 0), i = t.create();
+return function(r, s, o, a) {
+t.invert(i, s);
+n.default.transformQuat(e, o, i);
+t.fromAxisAngle(i, e, a);
+t.mul(r, s, i);
+return r;
+};
+})()(e, i, r, s);
+};
+t.rotateAroundLocal = function(e, i, n, r) {
+return (function() {
+var e = t.create();
+return function(i, n, r, s) {
+t.fromAxisAngle(e, r, s);
+t.mul(i, n, e);
+return i;
+};
+})()(e, i, n, r);
+};
+t.calculateW = function(t, e) {
+var i = e.x, n = e.y, r = e.z;
+t.x = i;
+t.y = n;
+t.z = r;
+t.w = Math.sqrt(Math.abs(1 - i * i - n * n - r * r));
+return t;
+};
+t.dot = function(t, e) {
+return t.x * e.x + t.y * e.y + t.z * e.z + t.w * e.w;
+};
+t.lerp = function(t, e, i, n) {
+var r = e.x, s = e.y, o = e.z, a = e.w;
+t.x = r + n * (i.x - r);
+t.y = s + n * (i.y - s);
+t.z = o + n * (i.z - o);
+t.w = a + n * (i.w - a);
+return t;
+};
+t.slerp = function(t, e, i, n) {
+var r = e.x, s = e.y, o = e.z, a = e.w, c = i.x, l = i.y, h = i.z, u = i.w, _ = void 0, f = void 0, d = void 0, m = void 0, p = void 0;
+if ((f = r * c + s * l + o * h + a * u) < 0) {
+f = -f;
+c = -c;
+l = -l;
+h = -h;
+u = -u;
+}
+if (1 - f > 1e-6) {
+_ = Math.acos(f);
+d = Math.sin(_);
+m = Math.sin((1 - n) * _) / d;
+p = Math.sin(n * _) / d;
+} else {
+m = 1 - n;
+p = n;
+}
+t.x = m * r + p * c;
+t.y = m * s + p * l;
+t.z = m * o + p * h;
+t.w = m * a + p * u;
+return t;
+};
+t.sqlerp = function(e, i, n, r, s, o) {
+return (function() {
+var e = t.create(), i = t.create();
+return function(n, r, s, o, a, c) {
+t.slerp(e, r, a, c);
+t.slerp(i, s, o, c);
+t.slerp(n, e, i, 2 * c * (1 - c));
+return n;
+};
+})()(e, i, n, r, s, o);
+};
+t.invert = function(t, e) {
+var i = e.x, n = e.y, r = e.z, s = e.w, o = i * i + n * n + r * r + s * s, a = o ? 1 / o : 0;
+t.x = -i * a;
+t.y = -n * a;
+t.z = -r * a;
+t.w = s * a;
+return t;
+};
+t.conjugate = function(t, e) {
+t.x = -e.x;
+t.y = -e.y;
+t.z = -e.z;
+t.w = e.w;
+return t;
+};
+t.magnitude = function(t) {
+var e = t.x, i = t.y, n = t.z, r = t.w;
+return Math.sqrt(e * e + i * i + n * n + r * r);
+};
+t.mag = function(e) {
+return t.magnitude(e);
+};
+t.squaredMagnitude = function(t) {
+var e = t.x, i = t.y, n = t.z, r = t.w;
+return e * e + i * i + n * n + r * r;
+};
+t.sqrMag = function(e) {
+return t.squaredMagnitude(e);
+};
+t.normalize = function(t, e) {
+var i = e.x, n = e.y, r = e.z, s = e.w, o = i * i + n * n + r * r + s * s;
+if (o > 0) {
+o = 1 / Math.sqrt(o);
+t.x = i * o;
+t.y = n * o;
+t.z = r * o;
+t.w = s * o;
+}
+return t;
+};
+t.fromAxes = function(e, i, n, r) {
+return (function() {
+var e = s.default.create();
+return function(i, n, r, o) {
+s.default.set(e, n.x, n.y, n.z, r.x, r.y, r.z, o.x, o.y, o.z);
+return t.normalize(i, t.fromMat3(i, e));
+};
+})()(e, i, n, r);
+};
+t.fromViewUp = function(e, i, n) {
+return (function() {
+var e = s.default.create();
+return function(i, n, r) {
+s.default.fromViewUp(e, n, r);
+return e ? t.normalize(i, t.fromMat3(i, e)) : null;
+};
+})()(e, i, n);
+};
+t.fromAxisAngle = function(t, e, i) {
+i *= .5;
+var n = Math.sin(i);
+t.x = n * e.x;
+t.y = n * e.y;
+t.z = n * e.z;
+t.w = Math.cos(i);
+return t;
+};
+t.fromMat3 = function(t, e) {
+var i = e.m00, n = e.m03, r = e.m06, s = e.m01, o = e.m04, a = e.m07, c = e.m02, l = e.m05, h = e.m08, u = i + o + h;
+if (u > 0) {
+var _ = .5 / Math.sqrt(u + 1);
+t.w = .25 / _;
+t.x = (l - a) * _;
+t.y = (r - c) * _;
+t.z = (s - n) * _;
+} else if (i > o && i > h) {
+var f = 2 * Math.sqrt(1 + i - o - h);
+t.w = (l - a) / f;
+t.x = .25 * f;
+t.y = (n + s) / f;
+t.z = (r + c) / f;
+} else if (o > h) {
+var d = 2 * Math.sqrt(1 + o - i - h);
+t.w = (r - c) / d;
+t.x = (n + s) / d;
+t.y = .25 * d;
+t.z = (a + l) / d;
+} else {
+var m = 2 * Math.sqrt(1 + h - i - o);
+t.w = (s - n) / m;
+t.x = (r + c) / m;
+t.y = (a + l) / m;
+t.z = .25 * m;
+}
+return t;
+};
+t.fromEuler = function(t, e, i, n) {
+e *= l;
+i *= l;
+n *= l;
+var r = Math.sin(e), s = Math.cos(e), o = Math.sin(i), a = Math.cos(i), c = Math.sin(n), h = Math.cos(n);
+t.x = r * a * h + s * o * c;
+t.y = s * o * h + r * a * c;
+t.z = s * a * c - r * o * h;
+t.w = s * a * h - r * o * c;
+return t;
+};
+t.fromAngleZ = function(t, e) {
+e *= l;
+t.x = t.y = 0;
+t.z = Math.sin(e);
+t.w = Math.cos(e);
+};
+t.toEuler = function(t, e) {
+var i = e.x, n = e.y, r = e.z, s = e.w, a = void 0, c = void 0, l = void 0, h = i * n + r * s;
+if (h > .499) {
+a = 2 * Math.atan2(i, s);
+c = Math.PI / 2;
+l = 0;
+}
+if (h < -.499) {
+a = -2 * Math.atan2(i, s);
+c = -Math.PI / 2;
+l = 0;
+}
+if (isNaN(a)) {
+var u = i * i, _ = n * n, f = r * r;
+a = Math.atan2(2 * n * s - 2 * i * r, 1 - 2 * _ - 2 * f);
+c = Math.asin(2 * h);
+l = Math.atan2(2 * i * s - 2 * n * r, 1 - 2 * u - 2 * f);
+}
+t.y = (0, o.toDegree)(a);
+t.z = (0, o.toDegree)(c);
+t.x = (0, o.toDegree)(l);
+return t;
+};
+t.str = function(t) {
+return "quat(" + t.x + ", " + t.y + ", " + t.z + ", " + t.w + ")";
+};
+t.array = function(t, e) {
+t[0] = e.x;
+t[1] = e.y;
+t[2] = e.z;
+t[3] = e.w;
+return t;
+};
+t.exactEquals = function(t, e) {
+return r.default.exactEquals(t, e);
+};
+t.equals = function(t, e) {
+return r.default.equals(t, e);
+};
+return t;
+})();
+i.default = h;
+e.exports = i.default;
+}), {
+"./mat3": 320,
+"./utils": 323,
+"./vec3": 325,
+"./vec4": 326
+} ],
+323: [ (function(t, e, i) {
+"use strict";
+i.__esModule = !0;
+i.equals = function(t, e) {
+return Math.abs(t - e) <= s * Math.max(1, Math.abs(t), Math.abs(e));
+};
+i.approx = function(t, e, i) {
+i = i || s;
+return Math.abs(t - e) <= i;
+};
+i.clamp = function(t, e, i) {
+return t < e ? e : t > i ? i : t;
+};
+i.clamp01 = function(t) {
+return t < 0 ? 0 : t > 1 ? 1 : t;
+};
+i.lerp = function(t, e, i) {
+return t + (e - t) * i;
+};
+i.toRadian = function(t) {
+return t * n;
+};
+i.toDegree = function(t) {
+return t * r;
+};
+i.randomRange = o;
+i.randomRangeInt = function(t, e) {
+return Math.floor(o(t, e));
+};
+i.pseudoRandom = a;
+i.pseudoRandomRange = c;
+i.pseudoRandomRangeInt = function(t, e, i) {
+return Math.floor(c(t, e, i));
+};
+i.nextPow2 = function(t) {
+t = (t = (t = (t = (t = --t >> 1 | t) >> 2 | t) >> 4 | t) >> 8 | t) >> 16 | t;
+return ++t;
+};
+i.repeat = l;
+i.pingPong = function(t, e) {
+t = l(t, 2 * e);
+return t = e - Math.abs(t - e);
+};
+i.inverseLerp = function(t, e, i) {
+return (i - t) / (e - t);
+};
+var n = Math.PI / 180, r = 180 / Math.PI, s = i.EPSILON = 1e-6;
+i.random = Math.random;
+function o(t, e) {
+return Math.random() * (e - t) + t;
+}
+function a(t) {
+return (t = (9301 * t + 49297) % 233280) / 233280;
+}
+function c(t, e, i) {
+return a(t) * (i - e) + e;
+}
+function l(t, e) {
+return t - Math.floor(t / e) * e;
+}
+}), {} ],
+324: [ (function(t, e, i) {
+"use strict";
+i.__esModule = !0;
+var n = t("./utils");
+function r(t, e) {
+if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function");
+}
+var s = (function() {
+function t() {
+var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : 0, i = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 0;
+r(this, t);
+this.x = e;
+this.y = i;
+}
+t.create = function() {
+return new t(arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : 0, arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 0);
+};
+t.zero = function(t) {
+t.x = 0;
+t.y = 0;
+return t;
+};
+t.clone = function(e) {
+return new t(e.x, e.y);
+};
+t.copy = function(t, e) {
+t.x = e.x;
+t.y = e.y;
+return t;
+};
+t.set = function(t, e, i) {
+t.x = e;
+t.y = i;
+return t;
+};
+t.add = function(t, e, i) {
+t.x = e.x + i.x;
+t.y = e.y + i.y;
+return t;
+};
+t.subtract = function(t, e, i) {
+t.x = e.x - i.x;
+t.y = e.y - i.y;
+return t;
+};
+t.sub = function(e, i, n) {
+return t.subtract(e, i, n);
+};
+t.multiply = function(t, e, i) {
+t.x = e.x * i.x;
+t.y = e.y * i.y;
+return t;
+};
+t.mul = function(e, i, n) {
+return t.multiply(e, i, n);
+};
+t.divide = function(t, e, i) {
+t.x = e.x / i.x;
+t.y = e.y / i.y;
+return t;
+};
+t.div = function(e, i, n) {
+return t.divide(e, i, n);
+};
+t.ceil = function(t, e) {
+t.x = Math.ceil(e.x);
+t.y = Math.ceil(e.y);
+return t;
+};
+t.floor = function(t, e) {
+t.x = Math.floor(e.x);
+t.y = Math.floor(e.y);
+return t;
+};
+t.min = function(t, e, i) {
+t.x = Math.min(e.x, i.x);
+t.y = Math.min(e.y, i.y);
+return t;
+};
+t.max = function(t, e, i) {
+t.x = Math.max(e.x, i.x);
+t.y = Math.max(e.y, i.y);
+return t;
+};
+t.round = function(t, e) {
+t.x = Math.round(e.x);
+t.y = Math.round(e.y);
+return t;
+};
+t.scale = function(t, e, i) {
+t.x = e.x * i;
+t.y = e.y * i;
+return t;
+};
+t.scaleAndAdd = function(t, e, i, n) {
+t.x = e.x + i.x * n;
+t.y = e.y + i.y * n;
+return t;
+};
+t.distance = function(t, e) {
+var i = e.x - t.x, n = e.y - t.y;
+return Math.sqrt(i * i + n * n);
+};
+t.dist = function(e, i) {
+return t.distance(e, i);
+};
+t.squaredDistance = function(t, e) {
+var i = e.x - t.x, n = e.y - t.y;
+return i * i + n * n;
+};
+t.sqrDist = function(e, i) {
+return t.squaredDistance(e, i);
+};
+t.magnitude = function(t) {
+var e = t.x, i = t.y;
+return Math.sqrt(e * e + i * i);
+};
+t.mag = function(e) {
+return t.magnitude(e);
+};
+t.squaredMagnitude = function(t) {
+var e = t.x, i = t.y;
+return e * e + i * i;
+};
+t.sqrMag = function(e) {
+return t.squaredMagnitude(e);
+};
+t.negate = function(t, e) {
+t.x = -e.x;
+t.y = -e.y;
+return t;
+};
+t.inverse = function(t, e) {
+t.x = 1 / e.x;
+t.y = 1 / e.y;
+return t;
+};
+t.inverseSafe = function(t, e) {
+var i = e.x, r = e.y;
+Math.abs(i) < n.EPSILON ? t.x = 0 : t.x = 1 / i;
+Math.abs(r) < n.EPSILON ? t.y = 0 : t.y = 1 / e.y;
+return t;
+};
+t.normalize = function(t, e) {
+var i = e.x, n = e.y, r = i * i + n * n;
+if (r > 0) {
+r = 1 / Math.sqrt(r);
+t.x = e.x * r;
+t.y = e.y * r;
+}
+return t;
+};
+t.dot = function(t, e) {
+return t.x * e.x + t.y * e.y;
+};
+t.cross = function(t, e, i) {
+var n = e.x * i.y - e.y * i.x;
+t.x = t.y = 0;
+t.z = n;
+return t;
+};
+t.lerp = function(t, e, i, n) {
+var r = e.x, s = e.y;
+t.x = r + n * (i.x - r);
+t.y = s + n * (i.y - s);
+return t;
+};
+t.random = function(t, e) {
+e = e || 1;
+var i = 2 * (0, n.random)() * Math.PI;
+t.x = Math.cos(i) * e;
+t.y = Math.sin(i) * e;
+return t;
+};
+t.transformMat2 = function(t, e, i) {
+var n = e.x, r = e.y;
+t.x = i.m00 * n + i.m02 * r;
+t.y = i.m01 * n + i.m03 * r;
+return t;
+};
+t.transformMat23 = function(t, e, i) {
+var n = e.x, r = e.y;
+t.x = i.m00 * n + i.m02 * r + i.m04;
+t.y = i.m01 * n + i.m03 * r + i.m05;
+return t;
+};
+t.transformMat3 = function(t, e, i) {
+var n = e.x, r = e.y;
+t.x = i.m00 * n + i.m03 * r + i.m06;
+t.y = i.m01 * n + i.m04 * r + i.m07;
+return t;
+};
+t.transformMat4 = function(t, e, i) {
+var n = e.x, r = e.y;
+t.x = i.m00 * n + i.m04 * r + i.m12;
+t.y = i.m01 * n + i.m05 * r + i.m13;
+return t;
+};
+t.forEach = function(e, i, n, r, s, o) {
+return t._forEach(e, i, n, r, s, o);
+};
+t.str = function(t) {
+return "vec2(" + t.x + ", " + t.y + ")";
+};
+t.array = function(t, e) {
+t[0] = e.x;
+t[1] = e.y;
+return t;
+};
+t.exactEquals = function(t, e) {
+return t.x === e.x && t.y === e.y;
+};
+t.equals = function(t, e) {
+var i = t.x, r = t.y, s = e.x, o = e.y;
+return Math.abs(i - s) <= n.EPSILON * Math.max(1, Math.abs(i), Math.abs(s)) && Math.abs(r - o) <= n.EPSILON * Math.max(1, Math.abs(r), Math.abs(o));
+};
+t.angle = function(e, i) {
+return t._angle(e, i);
+};
+return t;
+})();
+s._forEach = (function() {
+var t = s.create(0, 0);
+return function(e, i, n, r, s, o) {
+var a = void 0, c = void 0;
+i || (i = 2);
+n || (n = 0);
+c = r ? Math.min(r * i + n, e.length) : e.length;
+for (a = n; a < c; a += i) {
+t.x = e[a];
+t.y = e[a + 1];
+s(t, t, o);
+e[a] = t.x;
+e[a + 1] = t.y;
+}
+return e;
+};
+})();
+s._angle = (function() {
+var t = s.create(0, 0), e = s.create(0, 0);
+return function(i, n) {
+s.normalize(t, i);
+s.normalize(e, n);
+var r = s.dot(t, e);
+return r > 1 ? 0 : r < -1 ? Math.PI : Math.acos(r);
+};
+})();
+i.default = s;
+e.exports = i.default;
+}), {
+"./utils": 323
+} ],
+325: [ (function(t, e, i) {
+"use strict";
+i.__esModule = !0;
+var n = t("./utils");
+function r(t, e) {
+if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function");
+}
+var s = (function() {
+function t() {
+var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : 0, i = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 0, n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : 0;
+r(this, t);
+this.x = e;
+this.y = i;
+this.z = n;
+}
+t.create = function() {
+return new t(arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : 0, arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 0, arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : 0);
+};
+t.zero = function(t) {
+t.x = 0;
+t.y = 0;
+t.z = 0;
+return t;
+};
+t.clone = function(e) {
+return new t(e.x, e.y, e.z);
+};
+t.copy = function(t, e) {
+t.x = e.x;
+t.y = e.y;
+t.z = e.z;
+return t;
+};
+t.set = function(t, e, i, n) {
+t.x = e;
+t.y = i;
+t.z = n;
+return t;
+};
+t.add = function(t, e, i) {
+t.x = e.x + i.x;
+t.y = e.y + i.y;
+t.z = e.z + i.z;
+return t;
+};
+t.subtract = function(t, e, i) {
+t.x = e.x - i.x;
+t.y = e.y - i.y;
+t.z = e.z - i.z;
+return t;
+};
+t.sub = function(e, i, n) {
+return t.subtract(e, i, n);
+};
+t.multiply = function(t, e, i) {
+t.x = e.x * i.x;
+t.y = e.y * i.y;
+t.z = e.z * i.z;
+return t;
+};
+t.mul = function(e, i, n) {
+return t.multiply(e, i, n);
+};
+t.divide = function(t, e, i) {
+t.x = e.x / i.x;
+t.y = e.y / i.y;
+t.z = e.z / i.z;
+return t;
+};
+t.div = function(e, i, n) {
+return t.divide(e, i, n);
+};
+t.ceil = function(t, e) {
+t.x = Math.ceil(e.x);
+t.y = Math.ceil(e.y);
+t.z = Math.ceil(e.z);
+return t;
+};
+t.floor = function(t, e) {
+t.x = Math.floor(e.x);
+t.y = Math.floor(e.y);
+t.z = Math.floor(e.z);
+return t;
+};
+t.min = function(t, e, i) {
+t.x = Math.min(e.x, i.x);
+t.y = Math.min(e.y, i.y);
+t.z = Math.min(e.z, i.z);
+return t;
+};
+t.max = function(t, e, i) {
+t.x = Math.max(e.x, i.x);
+t.y = Math.max(e.y, i.y);
+t.z = Math.max(e.z, i.z);
+return t;
+};
+t.round = function(t, e) {
+t.x = Math.round(e.x);
+t.y = Math.round(e.y);
+t.z = Math.round(e.z);
+return t;
+};
+t.scale = function(t, e, i) {
+t.x = e.x * i;
+t.y = e.y * i;
+t.z = e.z * i;
+return t;
+};
+t.scaleAndAdd = function(t, e, i, n) {
+t.x = e.x + i.x * n;
+t.y = e.y + i.y * n;
+t.z = e.z + i.z * n;
+return t;
+};
+t.distance = function(t, e) {
+var i = e.x - t.x, n = e.y - t.y, r = e.z - t.z;
+return Math.sqrt(i * i + n * n + r * r);
+};
+t.dist = function(e, i) {
+return t.distance(e, i);
+};
+t.squaredDistance = function(t, e) {
+var i = e.x - t.x, n = e.y - t.y, r = e.z - t.z;
+return i * i + n * n + r * r;
+};
+t.sqrDist = function(e, i) {
+return t.squaredDistance(e, i);
+};
+t.magnitude = function(t) {
+var e = t.x, i = t.y, n = t.z;
+return Math.sqrt(e * e + i * i + n * n);
+};
+t.mag = function(e) {
+return t.magnitude(e);
+};
+t.squaredMagnitude = function(t) {
+var e = t.x, i = t.y, n = t.z;
+return e * e + i * i + n * n;
+};
+t.sqrMag = function(e) {
+return t.squaredMagnitude(e);
+};
+t.negate = function(t, e) {
+t.x = -e.x;
+t.y = -e.y;
+t.z = -e.z;
+return t;
+};
+t.inverse = function(t, e) {
+t.x = 1 / e.x;
+t.y = 1 / e.y;
+t.z = 1 / e.z;
+return t;
+};
+t.inverseSafe = function(t, e) {
+var i = e.x, r = e.y, s = e.z;
+Math.abs(i) < n.EPSILON ? t.x = 0 : t.x = 1 / i;
+Math.abs(r) < n.EPSILON ? t.y = 0 : t.y = 1 / r;
+Math.abs(s) < n.EPSILON ? t.z = 0 : t.z = 1 / s;
+return t;
+};
+t.normalize = function(t, e) {
+var i = e.x, n = e.y, r = e.z, s = i * i + n * n + r * r;
+if (s > 0) {
+s = 1 / Math.sqrt(s);
+t.x = i * s;
+t.y = n * s;
+t.z = r * s;
+}
+return t;
+};
+t.dot = function(t, e) {
+return t.x * e.x + t.y * e.y + t.z * e.z;
+};
+t.cross = function(t, e, i) {
+var n = e.x, r = e.y, s = e.z, o = i.x, a = i.y, c = i.z;
+t.x = r * c - s * a;
+t.y = s * o - n * c;
+t.z = n * a - r * o;
+return t;
+};
+t.lerp = function(t, e, i, n) {
+var r = e.x, s = e.y, o = e.z;
+t.x = r + n * (i.x - r);
+t.y = s + n * (i.y - s);
+t.z = o + n * (i.z - o);
+return t;
+};
+t.hermite = function(t, e, i, n, r, s) {
+var o = s * s, a = o * (2 * s - 3) + 1, c = o * (s - 2) + s, l = o * (s - 1), h = o * (3 - 2 * s);
+t.x = e.x * a + i.x * c + n.x * l + r.x * h;
+t.y = e.y * a + i.y * c + n.y * l + r.y * h;
+t.z = e.z * a + i.z * c + n.z * l + r.z * h;
+return t;
+};
+t.bezier = function(t, e, i, n, r, s) {
+var o = 1 - s, a = o * o, c = s * s, l = a * o, h = 3 * s * a, u = 3 * c * o, _ = c * s;
+t.x = e.x * l + i.x * h + n.x * u + r.x * _;
+t.y = e.y * l + i.y * h + n.y * u + r.y * _;
+t.z = e.z * l + i.z * h + n.z * u + r.z * _;
+return t;
+};
+t.random = function(t, e) {
+e = e || 1;
+var i = 2 * (0, n.random)() * Math.PI, r = Math.acos(2 * (0, n.random)() - 1);
+t.x = Math.sin(r) * Math.cos(i) * e;
+t.y = Math.sin(r) * Math.sin(i) * e;
+t.z = Math.cos(r) * e;
+return t;
+};
+t.transformMat4 = function(t, e, i) {
+var n = e.x, r = e.y, s = e.z, o = i.m03 * n + i.m07 * r + i.m11 * s + i.m15;
+o = o ? 1 / o : 1;
+t.x = (i.m00 * n + i.m04 * r + i.m08 * s + i.m12) * o;
+t.y = (i.m01 * n + i.m05 * r + i.m09 * s + i.m13) * o;
+t.z = (i.m02 * n + i.m06 * r + i.m10 * s + i.m14) * o;
+return t;
+};
+t.transformMat4Normal = function(t, e, i) {
+var n = e.x, r = e.y, s = e.z, o = i.m03 * n + i.m07 * r + i.m11 * s;
+o = o ? 1 / o : 1;
+t.x = (i.m00 * n + i.m04 * r + i.m08 * s) * o;
+t.y = (i.m01 * n + i.m05 * r + i.m09 * s) * o;
+t.z = (i.m02 * n + i.m06 * r + i.m10 * s) * o;
+return t;
+};
+t.transformMat3 = function(t, e, i) {
+var n = e.x, r = e.y, s = e.z;
+t.x = n * i.m00 + r * i.m03 + s * i.m06;
+t.y = n * i.m01 + r * i.m04 + s * i.m07;
+t.z = n * i.m02 + r * i.m05 + s * i.m08;
+return t;
+};
+t.transformQuat = function(t, e, i) {
+var n = e.x, r = e.y, s = e.z, o = i.x, a = i.y, c = i.z, l = i.w, h = l * n + a * s - c * r, u = l * r + c * n - o * s, _ = l * s + o * r - a * n, f = -o * n - a * r - c * s;
+t.x = h * l + f * -o + u * -c - _ * -a;
+t.y = u * l + f * -a + _ * -o - h * -c;
+t.z = _ * l + f * -c + h * -a - u * -o;
+return t;
+};
+t.rotateX = function(t, e, i, n) {
+var r = e.x - i.x, s = e.y - i.y, o = e.z - i.z, a = r, c = s * Math.cos(n) - o * Math.sin(n), l = s * Math.sin(n) + o * Math.cos(n);
+t.x = a + i.x;
+t.y = c + i.y;
+t.z = l + i.z;
+return t;
+};
+t.rotateY = function(t, e, i, n) {
+var r = e.x - i.x, s = e.y - i.y, o = e.z - i.z, a = o * Math.sin(n) + r * Math.cos(n), c = s, l = o * Math.cos(n) - r * Math.sin(n);
+t.x = a + i.x;
+t.y = c + i.y;
+t.z = l + i.z;
+return t;
+};
+t.rotateZ = function(t, e, i, n) {
+var r = e.x - i.x, s = e.y - i.y, o = e.z - i.z, a = r * Math.cos(n) - s * Math.sin(n), c = r * Math.sin(n) + s * Math.cos(n), l = o;
+t.x = a + i.x;
+t.y = c + i.y;
+t.z = l + i.z;
+return t;
+};
+t.str = function(t) {
+return "vec3(" + t.x + ", " + t.y + ", " + t.z + ")";
+};
+t.array = function(t, e) {
+t[0] = e.x;
+t[1] = e.y;
+t[2] = e.z;
+return t;
+};
+t.exactEquals = function(t, e) {
+return t.x === e.x && t.y === e.y && t.z === e.z;
+};
+t.equals = function(t, e) {
+var i = t.x, r = t.y, s = t.z, o = e.x, a = e.y, c = e.z;
+return Math.abs(i - o) <= n.EPSILON * Math.max(1, Math.abs(i), Math.abs(o)) && Math.abs(r - a) <= n.EPSILON * Math.max(1, Math.abs(r), Math.abs(a)) && Math.abs(s - c) <= n.EPSILON * Math.max(1, Math.abs(s), Math.abs(c));
+};
+t.forEach = function(e, i, n, r, s, o) {
+return t._forEach(e, i, n, r, s, o);
+};
+t.angle = function(e, i) {
+return t._angle(e, i);
+};
+t.projectOnPlane = function(e, i, n) {
+return t.sub(e, i, t.project(e, i, n));
+};
+t.project = function(e, i, n) {
+var r = t.squaredMagnitude(n);
+return r < 1e-6 ? t.set(e, 0, 0, 0) : t.scale(e, n, t.dot(i, n) / r);
+};
+return t;
+})();
+s._forEach = (function() {
+var t = s.create(0, 0, 0);
+return function(e, i, n, r, s, o) {
+var a = void 0, c = void 0;
+i || (i = 3);
+n || (n = 0);
+c = r ? Math.min(r * i + n, e.length) : e.length;
+for (a = n; a < c; a += i) {
+t.x = e[a];
+t.y = e[a + 1];
+t.z = e[a + 2];
+s(t, t, o);
+e[a] = t.x;
+e[a + 1] = t.y;
+e[a + 2] = t.z;
+}
+return e;
+};
+})();
+s._angle = (function() {
+var t = s.create(0, 0, 0), e = s.create(0, 0, 0);
+return function(i, n) {
+s.copy(t, i);
+s.copy(e, n);
+s.normalize(t, t);
+s.normalize(e, e);
+var r = s.dot(t, e);
+return r > 1 ? 0 : r < -1 ? Math.PI : Math.acos(r);
+};
+})();
+i.default = s;
+e.exports = i.default;
+}), {
+"./utils": 323
+} ],
+326: [ (function(t, e, i) {
+"use strict";
+i.__esModule = !0;
+var n = t("./utils");
+function r(t, e) {
+if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function");
+}
+var s = (function() {
+function t() {
+var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : 0, i = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 0, n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : 0, s = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : 1;
+r(this, t);
+this.x = e;
+this.y = i;
+this.z = n;
+this.w = s;
+}
+t.create = function() {
+return new t(arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : 0, arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 0, arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : 0, arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : 1);
+};
+t.zero = function(t) {
+t.x = 0;
+t.y = 0;
+t.z = 0;
+t.w = 0;
+return t;
+};
+t.clone = function(e) {
+return new t(e.x, e.y, e.z, e.w);
+};
+t.copy = function(t, e) {
+t.x = e.x;
+t.y = e.y;
+t.z = e.z;
+t.w = e.w;
+return t;
+};
+t.set = function(t, e, i, n, r) {
+t.x = e;
+t.y = i;
+t.z = n;
+t.w = r;
+return t;
+};
+t.add = function(t, e, i) {
+t.x = e.x + i.x;
+t.y = e.y + i.y;
+t.z = e.z + i.z;
+t.w = e.w + i.w;
+return t;
+};
+t.subtract = function(t, e, i) {
+t.x = e.x - i.x;
+t.y = e.y - i.y;
+t.z = e.z - i.z;
+t.w = e.w - i.w;
+return t;
+};
+t.sub = function(e, i, n) {
+return t.subtract(e, i, n);
+};
+t.multiply = function(t, e, i) {
+t.x = e.x * i.x;
+t.y = e.y * i.y;
+t.z = e.z * i.z;
+t.w = e.w * i.w;
+return t;
+};
+t.mul = function(e, i, n) {
+return t.multiply(e, i, n);
+};
+t.divide = function(t, e, i) {
+t.x = e.x / i.x;
+t.y = e.y / i.y;
+t.z = e.z / i.z;
+t.w = e.w / i.w;
+return t;
+};
+t.div = function(e, i, n) {
+return t.divide(e, i, n);
+};
+t.ceil = function(t, e) {
+t.x = Math.ceil(e.x);
+t.y = Math.ceil(e.y);
+t.z = Math.ceil(e.z);
+t.w = Math.ceil(e.w);
+return t;
+};
+t.floor = function(t, e) {
+t.x = Math.floor(e.x);
+t.y = Math.floor(e.y);
+t.z = Math.floor(e.z);
+t.w = Math.floor(e.w);
+return t;
+};
+t.min = function(t, e, i) {
+t.x = Math.min(e.x, i.x);
+t.y = Math.min(e.y, i.y);
+t.z = Math.min(e.z, i.z);
+t.w = Math.min(e.w, i.w);
+return t;
+};
+t.max = function(t, e, i) {
+t.x = Math.max(e.x, i.x);
+t.y = Math.max(e.y, i.y);
+t.z = Math.max(e.z, i.z);
+t.w = Math.max(e.w, i.w);
+return t;
+};
+t.round = function(t, e) {
+t.x = Math.round(e.x);
+t.y = Math.round(e.y);
+t.z = Math.round(e.z);
+t.w = Math.round(e.w);
+return t;
+};
+t.scale = function(t, e, i) {
+t.x = e.x * i;
+t.y = e.y * i;
+t.z = e.z * i;
+t.w = e.w * i;
+return t;
+};
+t.scaleAndAdd = function(t, e, i, n) {
+t.x = e.x + i.x * n;
+t.y = e.y + i.y * n;
+t.z = e.z + i.z * n;
+t.w = e.w + i.w * n;
+return t;
+};
+t.distance = function(t, e) {
+var i = e.x - t.x, n = e.y - t.y, r = e.z - t.z, s = e.w - t.w;
+return Math.sqrt(i * i + n * n + r * r + s * s);
+};
+t.dist = function(e, i) {
+return t.distance(e, i);
+};
+t.squaredDistance = function(t, e) {
+var i = e.x - t.x, n = e.y - t.y, r = e.z - t.z, s = e.w - t.w;
+return i * i + n * n + r * r + s * s;
+};
+t.sqrDist = function(e, i) {
+return t.squaredDistance(e, i);
+};
+t.magnitude = function(t) {
+var e = t.x, i = t.y, n = t.z, r = t.w;
+return Math.sqrt(e * e + i * i + n * n + r * r);
+};
+t.mag = function(e) {
+return t.magnitude(e);
+};
+t.squaredMagnitude = function(t) {
+var e = t.x, i = t.y, n = t.z, r = t.w;
+return e * e + i * i + n * n + r * r;
+};
+t.sqrMag = function(e) {
+return t.squaredMagnitude(e);
+};
+t.negate = function(t, e) {
+t.x = -e.x;
+t.y = -e.y;
+t.z = -e.z;
+t.w = -e.w;
+return t;
+};
+t.inverse = function(t, e) {
+t.x = 1 / e.x;
+t.y = 1 / e.y;
+t.z = 1 / e.z;
+t.w = 1 / e.w;
+return t;
+};
+t.inverseSafe = function(t, e) {
+var i = e.x, r = e.y, s = e.z, o = e.w;
+Math.abs(i) < n.EPSILON ? t.x = 0 : t.x = 1 / i;
+Math.abs(r) < n.EPSILON ? t.y = 0 : t.y = 1 / r;
+Math.abs(s) < n.EPSILON ? t.z = 0 : t.z = 1 / s;
+Math.abs(o) < n.EPSILON ? t.w = 0 : t.w = 1 / o;
+return t;
+};
+t.normalize = function(t, e) {
+var i = e.x, n = e.y, r = e.z, s = e.w, o = i * i + n * n + r * r + s * s;
+if (o > 0) {
+o = 1 / Math.sqrt(o);
+t.x = i * o;
+t.y = n * o;
+t.z = r * o;
+t.w = s * o;
+}
+return t;
+};
+t.dot = function(t, e) {
+return t.x * e.x + t.y * e.y + t.z * e.z + t.w * e.w;
+};
+t.lerp = function(t, e, i, n) {
+var r = e.x, s = e.y, o = e.z, a = e.w;
+t.x = r + n * (i.x - r);
+t.y = s + n * (i.y - s);
+t.z = o + n * (i.z - o);
+t.w = a + n * (i.w - a);
+return t;
+};
+t.random = function(t, e) {
+e = e || 1;
+var i = 2 * (0, n.random)() * Math.PI, r = Math.acos(2 * (0, n.random)() - 1);
+t.x = Math.sin(r) * Math.cos(i) * e;
+t.y = Math.sin(r) * Math.sin(i) * e;
+t.z = Math.cos(r) * e;
+t.w = 0;
+return t;
+};
+t.transformMat4 = function(t, e, i) {
+var n = e.x, r = e.y, s = e.z, o = e.w;
+t.x = i.m00 * n + i.m04 * r + i.m08 * s + i.m12 * o;
+t.y = i.m01 * n + i.m05 * r + i.m09 * s + i.m13 * o;
+t.z = i.m02 * n + i.m06 * r + i.m10 * s + i.m14 * o;
+t.w = i.m03 * n + i.m07 * r + i.m11 * s + i.m15 * o;
+return t;
+};
+t.transformQuat = function(t, e, i) {
+var n = e.x, r = e.y, s = e.z, o = i.x, a = i.y, c = i.z, l = i.w, h = l * n + a * s - c * r, u = l * r + c * n - o * s, _ = l * s + o * r - a * n, f = -o * n - a * r - c * s;
+t.x = h * l + f * -o + u * -c - _ * -a;
+t.y = u * l + f * -a + _ * -o - h * -c;
+t.z = _ * l + f * -c + h * -a - u * -o;
+t.w = e.w;
+return t;
+};
+t.str = function(t) {
+return "vec4(" + t.x + ", " + t.y + ", " + t.z + ", " + t.w + ")";
+};
+t.array = function(t, e) {
+t[0] = e.x;
+t[1] = e.y;
+t[2] = e.z;
+t[3] = e.w;
+return t;
+};
+t.exactEquals = function(t, e) {
+return t.x === e.x && t.y === e.y && t.z === e.z && t.w === e.w;
+};
+t.equals = function(t, e) {
+var i = t.x, r = t.y, s = t.z, o = t.w, a = e.x, c = e.y, l = e.z, h = e.w;
+return Math.abs(i - a) <= n.EPSILON * Math.max(1, Math.abs(i), Math.abs(a)) && Math.abs(r - c) <= n.EPSILON * Math.max(1, Math.abs(r), Math.abs(c)) && Math.abs(s - l) <= n.EPSILON * Math.max(1, Math.abs(s), Math.abs(l)) && Math.abs(o - h) <= n.EPSILON * Math.max(1, Math.abs(o), Math.abs(h));
+};
+t.forEach = function(e, i, n, r, s, o) {
+return t._forEach(e, i, n, r, s, o);
+};
+return t;
+})();
+s._forEach = (function() {
+var t = s.create(0, 0, 0, 0);
+return function(e, i, n, r, s, o) {
+var a = void 0, c = void 0;
+i || (i = 4);
+n || (n = 0);
+c = r ? Math.min(r * i + n, e.length) : e.length;
+for (a = n; a < c; a += i) {
+t.x = e[a];
+t.y = e[a + 1];
+t.z = e[a + 2];
+t.w = e[a + 3];
+s(t, t, o);
+e[a] = t.x;
+e[a + 1] = t.y;
+e[a + 2] = t.z;
+e[a + 3] = t.w;
+}
+return e;
+};
+})();
+i.default = s;
+e.exports = i.default;
+}), {
+"./utils": 323
+} ],
+327: [ (function(t, e, i) {
+"use strict";
+cc.js;
+}), {} ],
+328: [ (function(t, e, i) {
+"use strict";
+t("./core/CCGame");
+t("./actions");
+}), {
+"./actions": 7,
+"./core/CCGame": 51
+} ],
+329: [ (function(t, e, i) {
+"use strict";
+var n = t("../compression/zlib.min"), r = t("../core/CCDebug"), s = function(t) {
+var e, i, n, s, o, a, c, l, h, u, _, f, d;
+this.data = t;
+this.pos = 8;
+this.palette = [];
+this.imgData = [];
+this.transparency = {};
+this.animation = null;
+this.text = {};
+o = null;
+for (;;) {
+e = this.readUInt32();
+switch (l = function() {
+var t, e;
+e = [];
+for (t = 0; t < 4; ++t) e.push(String.fromCharCode(this.data[this.pos++]));
+return e;
+}.call(this).join("")) {
+case "IHDR":
+this.width = this.readUInt32();
+this.height = this.readUInt32();
+this.bits = this.data[this.pos++];
+this.colorType = this.data[this.pos++];
+this.compressionMethod = this.data[this.pos++];
+this.filterMethod = this.data[this.pos++];
+this.interlaceMethod = this.data[this.pos++];
+break;
+
+case "acTL":
+this.animation = {
+numFrames: this.readUInt32(),
+numPlays: this.readUInt32() || Infinity,
+frames: []
+};
+break;
+
+case "PLTE":
+this.palette = this.read(e);
+break;
+
+case "fcTL":
+o && this.animation.frames.push(o);
+this.pos += 4;
+o = {
+width: this.readUInt32(),
+height: this.readUInt32(),
+xOffset: this.readUInt32(),
+yOffset: this.readUInt32()
+};
+s = this.readUInt16();
+n = this.readUInt16() || 100;
+o.delay = 1e3 * s / n;
+o.disposeOp = this.data[this.pos++];
+o.blendOp = this.data[this.pos++];
+o.data = [];
+break;
+
+case "IDAT":
+case "fdAT":
+if ("fdAT" === l) {
+this.pos += 4;
+e -= 4;
+}
+t = (null != o ? o.data : void 0) || this.imgData;
+for (_ = 0; 0 <= e ? _ < e : _ > e; 0 <= e ? ++_ : --_) t.push(this.data[this.pos++]);
+break;
+
+case "tRNS":
+this.transparency = {};
+switch (this.colorType) {
+case 3:
+this.transparency.indexed = this.read(e);
+if ((h = 255 - this.transparency.indexed.length) > 0) for (f = 0; 0 <= h ? f < h : f > h; 0 <= h ? ++f : --f) this.transparency.indexed.push(255);
+break;
+
+case 0:
+this.transparency.grayscale = this.read(e)[0];
+break;
+
+case 2:
+this.transparency.rgb = this.read(e);
+}
+break;
+
+case "tEXt":
+a = (u = this.read(e)).indexOf(0);
+c = String.fromCharCode.apply(String, u.slice(0, a));
+this.text[c] = String.fromCharCode.apply(String, u.slice(a + 1));
+break;
+
+case "IEND":
+o && this.animation.frames.push(o);
+this.colors = function() {
+switch (this.colorType) {
+case 0:
+case 3:
+case 4:
+return 1;
+
+case 2:
+case 6:
+return 3;
+}
+}.call(this);
+this.hasAlphaChannel = 4 === (d = this.colorType) || 6 === d;
+i = this.colors + (this.hasAlphaChannel ? 1 : 0);
+this.pixelBitlength = this.bits * i;
+this.colorSpace = function() {
+switch (this.colors) {
+case 1:
+return "DeviceGray";
+
+case 3:
+return "DeviceRGB";
+}
+}.call(this);
+Uint8Array != Array && (this.imgData = new Uint8Array(this.imgData));
+return;
+
+default:
+this.pos += e;
+}
+this.pos += 4;
+if (this.pos > this.data.length) throw new Error(r.getError(6017));
+}
+};
+s.prototype = {
+constructor: s,
+read: function(t) {
+var e, i;
+i = [];
+for (e = 0; 0 <= t ? e < t : e > t; 0 <= t ? ++e : --e) i.push(this.data[this.pos++]);
+return i;
+},
+readUInt32: function() {
+return this.data[this.pos++] << 24 | this.data[this.pos++] << 16 | this.data[this.pos++] << 8 | this.data[this.pos++];
+},
+readUInt16: function() {
+return this.data[this.pos++] << 8 | this.data[this.pos++];
+},
+decodePixels: function(t) {
+var e, i, s, o, a, c, l, h, u, _, f, d, m, p, v, y, g, x, C, b, A, S, w;
+null == t && (t = this.imgData);
+if (0 === t.length) return new Uint8Array(0);
+t = new n.Inflate(t, {
+index: 0,
+verify: !1
+}).decompress();
+y = (d = this.pixelBitlength / 8) * this.width;
+m = new Uint8Array(y * this.height);
+c = t.length;
+v = 0;
+p = 0;
+i = 0;
+for (;p < c; ) {
+switch (t[p++]) {
+case 0:
+for (o = C = 0; C < y; o = C += 1) m[i++] = t[p++];
+break;
+
+case 1:
+for (o = b = 0; b < y; o = b += 1) {
+e = t[p++];
+a = o < d ? 0 : m[i - d];
+m[i++] = (e + a) % 256;
+}
+break;
+
+case 2:
+for (o = A = 0; A < y; o = A += 1) {
+e = t[p++];
+s = (o - o % d) / d;
+g = v && m[(v - 1) * y + s * d + o % d];
+m[i++] = (g + e) % 256;
+}
+break;
+
+case 3:
+for (o = S = 0; S < y; o = S += 1) {
+e = t[p++];
+s = (o - o % d) / d;
+a = o < d ? 0 : m[i - d];
+g = v && m[(v - 1) * y + s * d + o % d];
+m[i++] = (e + Math.floor((a + g) / 2)) % 256;
+}
+break;
+
+case 4:
+for (o = w = 0; w < y; o = w += 1) {
+e = t[p++];
+s = (o - o % d) / d;
+a = o < d ? 0 : m[i - d];
+if (0 === v) g = x = 0; else {
+g = m[(v - 1) * y + s * d + o % d];
+x = s && m[(v - 1) * y + (s - 1) * d + o % d];
+}
+l = a + g - x;
+h = Math.abs(l - a);
+_ = Math.abs(l - g);
+f = Math.abs(l - x);
+u = h <= _ && h <= f ? a : _ <= f ? g : x;
+m[i++] = (e + u) % 256;
+}
+break;
+
+default:
+throw new Error(r.getError(6018, t[p - 1]));
+}
+v++;
+}
+return m;
+},
+copyToImageData: function(t, e) {
+var i, n, r, s, o, a, c, l, h, u, _;
+n = this.colors;
+h = null;
+i = this.hasAlphaChannel;
+if (this.palette.length) {
+h = null != (_ = this._decodedPalette) ? _ : this._decodedPalette = this.decodePalette();
+n = 4;
+i = !0;
+}
+l = (r = t.data || t).length;
+o = h || e;
+s = a = 0;
+if (1 === n) for (;s < l; ) {
+c = h ? 4 * e[s / 4] : a;
+u = o[c++];
+r[s++] = u;
+r[s++] = u;
+r[s++] = u;
+r[s++] = i ? o[c++] : 255;
+a = c;
+} else for (;s < l; ) {
+c = h ? 4 * e[s / 4] : a;
+r[s++] = o[c++];
+r[s++] = o[c++];
+r[s++] = o[c++];
+r[s++] = i ? o[c++] : 255;
+a = c;
+}
+},
+decodePalette: function() {
+var t, e, i, n, r, s, o, a, c;
+i = this.palette;
+s = this.transparency.indexed || [];
+r = new Uint8Array((s.length || 0) + i.length);
+n = 0;
+t = 0;
+for (e = o = 0, a = i.length; o < a; e = o += 3) {
+r[n++] = i[e];
+r[n++] = i[e + 1];
+r[n++] = i[e + 2];
+r[n++] = null != (c = s[t++]) ? c : 255;
+}
+return r;
+},
+render: function(t) {
+var e, i;
+t.width = this.width;
+t.height = this.height;
+i = (e = t.getContext("2d")).createImageData(this.width, this.height);
+this.copyToImageData(i, this.decodePixels());
+return e.putImageData(i, 0, 0);
+}
+};
+e.exports = s;
+}), {
+"../compression/zlib.min": 25,
+"../core/CCDebug": 49
+} ],
+330: [ (function(t, e, i) {
+"use strict";
+var n = t("../core/assets/CCAsset"), r = t("../core/assets/CCSpriteFrame"), s = cc.Class({
+name: "cc.ParticleAsset",
+extends: n,
+properties: {
+spriteFrame: {
+default: null,
+type: r
+}
+}
+});
+cc.ParticleAsset = e.exports = s;
+}), {
+"../core/assets/CCAsset": 56,
+"../core/assets/CCSpriteFrame": 70
+} ],
+331: [ (function(t, e, i) {
+"use strict";
+var n = t("../core/platform/CCMacro"), r = t("./CCParticleAsset"), s = t("../core/components/CCRenderComponent"), o = t("../compression/ZipUtils"), a = t("./CCPNGReader"), c = t("./CCTIFFReader"), l = t("../core/utils/texture-util"), h = t("../core/renderer/render-flow"), u = t("./particle-simulator"), _ = t("../core/assets/material/CCMaterial"), f = t("../core/utils/blend-func");
+function d(t) {
+return t.length > 8 && 137 === t[0] && 80 === t[1] && 78 === t[2] && 71 === t[3] && 13 === t[4] && 10 === t[5] && 26 === t[6] && 10 === t[7] ? n.ImageFormat.PNG : t.length > 2 && (73 === t[0] && 73 === t[1] || 77 === t[0] && 77 === t[1] || 255 === t[0] && 216 === t[1]) ? n.ImageFormat.TIFF : n.ImageFormat.UNKNOWN;
+}
+var m = cc.Enum({
+GRAVITY: 0,
+RADIUS: 1
+}), p = cc.Enum({
+FREE: 0,
+RELATIVE: 1,
+GROUPED: 2
+}), v = {
+preview: {
+default: !0,
+editorOnly: !0,
+notify: !1,
+animatable: !1,
+tooltip: !1
+},
+_custom: !1,
+custom: {
+get: function() {
+return this._custom;
+},
+set: function(t) {
+0;
+if (this._custom !== t) {
+this._custom = t;
+this._applyFile();
+0;
+}
+},
+animatable: !1,
+tooltip: !1
+},
+_file: {
+default: null,
+type: r
+},
+file: {
+get: function() {
+return this._file;
+},
+set: function(t, e) {
+if (this._file !== t) {
+this._file = t;
+if (t) {
+this._applyFile();
+0;
+} else this.custom = !0;
+}
+},
+animatable: !1,
+type: r,
+tooltip: !1
+},
+_spriteFrame: {
+default: null,
+type: cc.SpriteFrame
+},
+spriteFrame: {
+get: function() {
+return this._spriteFrame;
+},
+set: function(t, e) {
+var i = this._renderSpriteFrame;
+if (i !== t) {
+this._renderSpriteFrame = t;
+t && !t._uuid || (this._spriteFrame = t);
+if ((i && i.getTexture()) !== (t && t.getTexture())) {
+this._texture = null;
+this._applySpriteFrame(i);
+}
+0;
+}
+},
+type: cc.SpriteFrame,
+tooltip: !1
+},
+_texture: {
+default: null,
+type: cc.Texture2D,
+editorOnly: !0
+},
+texture: {
+get: function() {
+return this._texture;
+},
+set: function(t) {
+t && cc.warnID(6017);
+},
+type: cc.Texture2D,
+tooltip: !1,
+readonly: !0,
+visible: !1,
+animatable: !1
+},
+particleCount: {
+visible: !1,
+get: function() {
+return this._simulator.particles.length;
+},
+readonly: !0
+},
+_stopped: !0,
+stopped: {
+get: function() {
+return this._stopped;
+},
+animatable: !1,
+visible: !1
+},
+playOnLoad: !0,
+autoRemoveOnFinish: {
+default: !1,
+animatable: !1,
+tooltip: !1
+},
+active: {
+get: function() {
+return this._simulator.active;
+},
+visible: !1
+},
+totalParticles: 150,
+duration: -1,
+emissionRate: 10,
+life: 1,
+lifeVar: 0,
+_startColor: null,
+startColor: {
+type: cc.Color,
+get: function() {
+return this._startColor;
+},
+set: function(t) {
+this._startColor.r = t.r;
+this._startColor.g = t.g;
+this._startColor.b = t.b;
+this._startColor.a = t.a;
+}
+},
+_startColorVar: null,
+startColorVar: {
+type: cc.Color,
+get: function() {
+return this._startColorVar;
+},
+set: function(t) {
+this._startColorVar.r = t.r;
+this._startColorVar.g = t.g;
+this._startColorVar.b = t.b;
+this._startColorVar.a = t.a;
+}
+},
+_endColor: null,
+endColor: {
+type: cc.Color,
+get: function() {
+return this._endColor;
+},
+set: function(t) {
+this._endColor.r = t.r;
+this._endColor.g = t.g;
+this._endColor.b = t.b;
+this._endColor.a = t.a;
+}
+},
+_endColorVar: null,
+endColorVar: {
+type: cc.Color,
+get: function() {
+return this._endColorVar;
+},
+set: function(t) {
+this._endColorVar.r = t.r;
+this._endColorVar.g = t.g;
+this._endColorVar.b = t.b;
+this._endColorVar.a = t.a;
+}
+},
+angle: 90,
+angleVar: 20,
+startSize: 50,
+startSizeVar: 0,
+endSize: 0,
+endSizeVar: 0,
+startSpin: 0,
+startSpinVar: 0,
+endSpin: 0,
+endSpinVar: 0,
+sourcePos: cc.Vec2.ZERO,
+posVar: cc.Vec2.ZERO,
+_positionType: {
+default: p.FREE,
+formerlySerializedAs: "positionType"
+},
+positionType: {
+type: p,
+get: function() {
+return this._positionType;
+},
+set: function(t) {
+var e = this.getMaterial(0);
+e && e.define("_USE_MODEL", t !== p.FREE);
+this._positionType = t;
+}
+},
+emitterMode: {
+default: m.GRAVITY,
+type: m
+},
+gravity: cc.Vec2.ZERO,
+speed: 180,
+speedVar: 50,
+tangentialAccel: 80,
+tangentialAccelVar: 0,
+radialAccel: 0,
+radialAccelVar: 0,
+rotationIsDir: !1,
+startRadius: 0,
+startRadiusVar: 0,
+endRadius: 0,
+endRadiusVar: 0,
+rotatePerS: 0,
+rotatePerSVar: 0
+}, y = cc.Class({
+name: "cc.ParticleSystem",
+extends: s,
+mixins: [ f ],
+editor: !1,
+ctor: function() {
+this._previewTimer = null;
+this._focused = !1;
+this._simulator = new u(this);
+this._startColor = cc.color(255, 255, 255, 255);
+this._startColorVar = cc.color(0, 0, 0, 0);
+this._endColor = cc.color(255, 255, 255, 0);
+this._endColorVar = cc.color(0, 0, 0, 0);
+this._renderSpriteFrame = null;
+},
+properties: v,
+statics: {
+DURATION_INFINITY: -1,
+START_SIZE_EQUAL_TO_END_SIZE: -1,
+START_RADIUS_EQUAL_TO_END_RADIUS: -1,
+EmitterMode: m,
+PositionType: p,
+_PNGReader: a,
+_TIFFReader: c
+},
+onFocusInEditor: !1,
+onLostFocusInEditor: !1,
+_startPreview: !1,
+_stopPreview: !1,
+_convertTextureToSpriteFrame: !1,
+__preload: function() {
+0;
+if (this._custom && this.spriteFrame && !this._renderSpriteFrame) this._applySpriteFrame(this.spriteFrame); else if (this._file) if (this._custom) {
+!this._texture && this._applyFile();
+} else this._applyFile();
+this.playOnLoad && this.resetSystem();
+0;
+},
+onEnable: function() {
+this._super();
+this.node._renderFlag &= ~h.FLAG_RENDER;
+this._activateMaterial();
+},
+onDestroy: function() {
+this.autoRemoveOnFinish && (this.autoRemoveOnFinish = !1);
+if (this._buffer) {
+this._buffer.destroy();
+this._buffer = null;
+}
+this._ia = null;
+this._simulator._uvFilled = 0;
+this._super();
+},
+lateUpdate: function(t) {
+!this._simulator.finished && this._ia && this._simulator.step(t);
+},
+addParticle: function() {},
+stopSystem: function() {
+this._stopped = !0;
+this._simulator.stop();
+},
+resetSystem: function() {
+this._stopped = !1;
+this._simulator.reset();
+this._activateMaterial();
+},
+isFull: function() {
+return this.particleCount >= this.totalParticles;
+},
+setTextureWithRect: function(t, e) {
+t instanceof cc.Texture2D && (this.spriteFrame = new cc.SpriteFrame(t, e));
+},
+_applyFile: function() {
+var t = this._file;
+if (t) {
+var e = this;
+cc.loader.load(t.nativeUrl, (function(i, n) {
+if (!i && n) {
+if (e.isValid) {
+e._plistFile = t.nativeUrl;
+e._custom || e._initWithDictionary(n);
+e._spriteFrame ? !e._renderSpriteFrame && e._spriteFrame && e._applySpriteFrame(e.spriteFrame) : t.spriteFrame ? e.spriteFrame = t.spriteFrame : e._custom && e._initTextureWithDictionary(n);
+}
+} else cc.errorID(6029);
+}));
+}
+},
+_initTextureWithDictionary: function(t) {
+var e = cc.path.changeBasename(this._plistFile, t.textureFileName || "");
+if (t.textureFileName) l.loadImage(e, (function(e, i) {
+if (e) {
+t.textureFileName = void 0;
+this._initTextureWithDictionary(t);
+} else this.spriteFrame = new cc.SpriteFrame(i);
+}), this); else if (t.textureImageData) {
+var i = t.textureImageData;
+if (!(i && i.length > 0)) return !1;
+var r = cc.loader.getRes(e);
+if (!r) {
+var s = o.unzipBase64AsArray(i, 1);
+if (!s) {
+cc.logID(6030);
+return !1;
+}
+var h = d(s);
+if (h !== n.ImageFormat.TIFF && h !== n.ImageFormat.PNG) {
+cc.logID(6031);
+return !1;
+}
+var u = document.createElement("canvas");
+if (h === n.ImageFormat.PNG) {
+new a(s).render(u);
+} else c.parseTIFF(s, u);
+r = l.cacheImage(e, u);
+}
+r || cc.logID(6032);
+this.spriteFrame = new cc.SpriteFrame(r);
+}
+return !0;
+},
+_initWithDictionary: function(t) {
+this.totalParticles = parseInt(t.maxParticles || 0);
+this.life = parseFloat(t.particleLifespan || 0);
+this.lifeVar = parseFloat(t.particleLifespanVariance || 0);
+var e = t.emissionRate;
+this.emissionRate = e || Math.min(this.totalParticles / this.life, Number.MAX_VALUE);
+this.duration = parseFloat(t.duration || 0);
+this.srcBlendFactor = parseInt(t.blendFuncSource || n.SRC_ALPHA);
+this.dstBlendFactor = parseInt(t.blendFuncDestination || n.ONE_MINUS_SRC_ALPHA);
+var i = this._startColor;
+i.r = 255 * parseFloat(t.startColorRed || 0);
+i.g = 255 * parseFloat(t.startColorGreen || 0);
+i.b = 255 * parseFloat(t.startColorBlue || 0);
+i.a = 255 * parseFloat(t.startColorAlpha || 0);
+var r = this._startColorVar;
+r.r = 255 * parseFloat(t.startColorVarianceRed || 0);
+r.g = 255 * parseFloat(t.startColorVarianceGreen || 0);
+r.b = 255 * parseFloat(t.startColorVarianceBlue || 0);
+r.a = 255 * parseFloat(t.startColorVarianceAlpha || 0);
+var s = this._endColor;
+s.r = 255 * parseFloat(t.finishColorRed || 0);
+s.g = 255 * parseFloat(t.finishColorGreen || 0);
+s.b = 255 * parseFloat(t.finishColorBlue || 0);
+s.a = 255 * parseFloat(t.finishColorAlpha || 0);
+var o = this._endColorVar;
+o.r = 255 * parseFloat(t.finishColorVarianceRed || 0);
+o.g = 255 * parseFloat(t.finishColorVarianceGreen || 0);
+o.b = 255 * parseFloat(t.finishColorVarianceBlue || 0);
+o.a = 255 * parseFloat(t.finishColorVarianceAlpha || 0);
+this.startSize = parseFloat(t.startParticleSize || 0);
+this.startSizeVar = parseFloat(t.startParticleSizeVariance || 0);
+this.endSize = parseFloat(t.finishParticleSize || 0);
+this.endSizeVar = parseFloat(t.finishParticleSizeVariance || 0);
+this.positionType = parseFloat(t.positionType || p.RELATIVE);
+this.sourcePos.x = 0;
+this.sourcePos.y = 0;
+this.posVar.x = parseFloat(t.sourcePositionVariancex || 0);
+this.posVar.y = parseFloat(t.sourcePositionVariancey || 0);
+this.angle = parseFloat(t.angle || 0);
+this.angleVar = parseFloat(t.angleVariance || 0);
+this.startSpin = parseFloat(t.rotationStart || 0);
+this.startSpinVar = parseFloat(t.rotationStartVariance || 0);
+this.endSpin = parseFloat(t.rotationEnd || 0);
+this.endSpinVar = parseFloat(t.rotationEndVariance || 0);
+this.emitterMode = parseInt(t.emitterType || m.GRAVITY);
+if (this.emitterMode === m.GRAVITY) {
+this.gravity.x = parseFloat(t.gravityx || 0);
+this.gravity.y = parseFloat(t.gravityy || 0);
+this.speed = parseFloat(t.speed || 0);
+this.speedVar = parseFloat(t.speedVariance || 0);
+this.radialAccel = parseFloat(t.radialAcceleration || 0);
+this.radialAccelVar = parseFloat(t.radialAccelVariance || 0);
+this.tangentialAccel = parseFloat(t.tangentialAcceleration || 0);
+this.tangentialAccelVar = parseFloat(t.tangentialAccelVariance || 0);
+var a = t.rotationIsDir || "";
+if (null !== a) {
+a = a.toString().toLowerCase();
+this.rotationIsDir = "true" === a || "1" === a;
+} else this.rotationIsDir = !1;
+} else {
+if (this.emitterMode !== m.RADIUS) {
+cc.warnID(6009);
+return !1;
+}
+this.startRadius = parseFloat(t.maxRadius || 0);
+this.startRadiusVar = parseFloat(t.maxRadiusVariance || 0);
+this.endRadius = parseFloat(t.minRadius || 0);
+this.endRadiusVar = parseFloat(t.minRadiusVariance || 0);
+this.rotatePerS = parseFloat(t.rotatePerSecond || 0);
+this.rotatePerSVar = parseFloat(t.rotatePerSecondVariance || 0);
+}
+this._initTextureWithDictionary(t);
+return !0;
+},
+_onTextureLoaded: function() {
+this._texture = this._renderSpriteFrame.getTexture();
+this._simulator.updateUVs(!0);
+this._activateMaterial();
+},
+_applySpriteFrame: function(t) {
+t && t.off && t.off("load", this._onTextureLoaded, this);
+var e = this._renderSpriteFrame = this._renderSpriteFrame || this._spriteFrame;
+if (e) if (e.textureLoaded()) this._onTextureLoaded(null); else {
+e.once("load", this._onTextureLoaded, this);
+e.ensureLoadTexture();
+}
+},
+_activateMaterial: function() {
+if (this._texture && this._texture.loaded) {
+this._ia || y._assembler.createIA(this);
+var t = this.sharedMaterials[0];
+(t = t ? _.getInstantiatedMaterial(t, this) : _.getInstantiatedBuiltinMaterial("2d-sprite", this)).define("_USE_MODEL", this._positionType !== p.FREE);
+t.setProperty("texture", this._texture);
+this.setMaterial(0, t);
+this.markForCustomIARender(!0);
+} else {
+this.markForCustomIARender(!1);
+this._renderSpriteFrame && this._applySpriteFrame();
+}
+},
+_finishedSimulation: function() {
+0;
+this.resetSystem();
+this.stopSystem();
+this.disableRender();
+this.autoRemoveOnFinish && this._stopped && this.node.destroy();
+}
+});
+cc.ParticleSystem = e.exports = y;
+}), {
+"../compression/ZipUtils": 22,
+"../core/assets/material/CCMaterial": 75,
+"../core/components/CCRenderComponent": 106,
+"../core/platform/CCMacro": 206,
+"../core/renderer/render-flow": 245,
+"../core/utils/blend-func": 289,
+"../core/utils/texture-util": 304,
+"./CCPNGReader": 329,
+"./CCParticleAsset": 330,
+"./CCTIFFReader": 332,
+"./particle-simulator": 334,
+"fire-url": void 0
+} ],
+332: [ (function(t, e, i) {
+"use strict";
+var n = t("../core/CCDebug"), r = {
+_littleEndian: !1,
+_tiffData: null,
+_fileDirectories: [],
+getUint8: function(t) {
+return this._tiffData[t];
+},
+getUint16: function(t) {
+return this._littleEndian ? this._tiffData[t + 1] << 8 | this._tiffData[t] : this._tiffData[t] << 8 | this._tiffData[t + 1];
+},
+getUint32: function(t) {
+var e = this._tiffData;
+return this._littleEndian ? e[t + 3] << 24 | e[t + 2] << 16 | e[t + 1] << 8 | e[t] : e[t] << 24 | e[t + 1] << 16 | e[t + 2] << 8 | e[t + 3];
+},
+checkLittleEndian: function() {
+var t = this.getUint16(0);
+if (18761 === t) this.littleEndian = !0; else {
+if (19789 !== t) {
+console.log(t);
+throw TypeError(n.getError(6019));
+}
+this.littleEndian = !1;
+}
+return this.littleEndian;
+},
+hasTowel: function() {
+if (42 !== this.getUint16(2)) throw RangeError(n.getError(6020));
+return !0;
+},
+getFieldTypeName: function(t) {
+var e = this.fieldTypeNames;
+return t in e ? e[t] : null;
+},
+getFieldTagName: function(t) {
+var e = this.fieldTagNames;
+if (t in e) return e[t];
+cc.logID(6021, t);
+return "Tag" + t;
+},
+getFieldTypeLength: function(t) {
+return -1 !== [ "BYTE", "ASCII", "SBYTE", "UNDEFINED" ].indexOf(t) ? 1 : -1 !== [ "SHORT", "SSHORT" ].indexOf(t) ? 2 : -1 !== [ "LONG", "SLONG", "FLOAT" ].indexOf(t) ? 4 : -1 !== [ "RATIONAL", "SRATIONAL", "DOUBLE" ].indexOf(t) ? 8 : null;
+},
+getFieldValues: function(t, e, i, n) {
+var r = [], s = this.getFieldTypeLength(e);
+if (s * i <= 4) !1 === this.littleEndian ? r.push(n >>> 8 * (4 - s)) : r.push(n); else for (var o = 0; o < i; o++) {
+var a = s * o;
+if (s >= 8) if (-1 !== [ "RATIONAL", "SRATIONAL" ].indexOf(e)) {
+r.push(this.getUint32(n + a));
+r.push(this.getUint32(n + a + 4));
+} else cc.logID(8e3); else r.push(this.getBytes(s, n + a));
+}
+"ASCII" === e && r.forEach((function(t, e, i) {
+i[e] = String.fromCharCode(t);
+}));
+return r;
+},
+getBytes: function(t, e) {
+if (t <= 0) cc.logID(8001); else {
+if (t <= 1) return this.getUint8(e);
+if (t <= 2) return this.getUint16(e);
+if (t <= 3) return this.getUint32(e) >>> 8;
+if (t <= 4) return this.getUint32(e);
+cc.logID(8002);
+}
+},
+getBits: function(t, e, i) {
+i = i || 0;
+var n, r, s = e + Math.floor(i / 8), o = i + t, a = 32 - t;
+if (o <= 0) cc.logID(6023); else if (o <= 8) {
+n = 24 + i;
+r = this.getUint8(s);
+} else if (o <= 16) {
+n = 16 + i;
+r = this.getUint16(s);
+} else if (o <= 32) {
+n = i;
+r = this.getUint32(s);
+} else cc.logID(6022);
+return {
+bits: r << n >>> a,
+byteOffset: s + Math.floor(o / 8),
+bitOffset: o % 8
+};
+},
+parseFileDirectory: function(t) {
+for (var e = this.getUint16(t), i = [], n = t + 2, r = 0; r < e; n += 12, r++) {
+var s = this.getUint16(n), o = this.getUint16(n + 2), a = this.getUint32(n + 4), c = this.getUint32(n + 8), l = this.getFieldTagName(s), h = this.getFieldTypeName(o), u = this.getFieldValues(l, h, a, c);
+i[l] = {
+type: h,
+values: u
+};
+}
+this._fileDirectories.push(i);
+var _ = this.getUint32(n);
+0 !== _ && this.parseFileDirectory(_);
+},
+clampColorSample: function(t, e) {
+var i = Math.pow(2, 8 - e);
+return Math.floor(t * i + (i - 1));
+},
+parseTIFF: function(t, e) {
+e = e || document.createElement("canvas");
+this._tiffData = t;
+this.canvas = e;
+this.checkLittleEndian();
+if (this.hasTowel()) {
+var i = this.getUint32(4);
+this._fileDirectories.length = 0;
+this.parseFileDirectory(i);
+var r = this._fileDirectories[0], s = r.ImageWidth.values[0], o = r.ImageLength.values[0];
+this.canvas.width = s;
+this.canvas.height = o;
+var a = [], c = r.Compression ? r.Compression.values[0] : 1, l = r.SamplesPerPixel.values[0], h = [], u = 0, _ = !1;
+r.BitsPerSample.values.forEach((function(t, e, i) {
+h[e] = {
+bitsPerSample: t,
+hasBytesPerSample: !1,
+bytesPerSample: void 0
+};
+if (t % 8 == 0) {
+h[e].hasBytesPerSample = !0;
+h[e].bytesPerSample = t / 8;
+}
+u += t;
+}), this);
+if (u % 8 == 0) {
+_ = !0;
+var f = u / 8;
+}
+var d = r.StripOffsets.values, m = d.length;
+if (r.StripByteCounts) var p = r.StripByteCounts.values; else {
+cc.logID(8003);
+if (1 !== m) throw Error(n.getError(6024));
+p = [ Math.ceil(s * o * u / 8) ];
+}
+for (var v = 0; v < m; v++) {
+var y = d[v];
+a[v] = [];
+for (var g = p[v], x = 0, C = 0, b = 1, A = !0, S = [], w = 0, T = 0, E = 0; x < g; x += b) switch (c) {
+case 1:
+var M = 0;
+for (S = []; M < l; M++) {
+if (!h[M].hasBytesPerSample) {
+var B = this.getBits(h[M].bitsPerSample, y + x, C);
+S.push(B.bits);
+x = B.byteOffset - y;
+C = B.bitOffset;
+throw RangeError(n.getError(6025));
+}
+var D = h[M].bytesPerSample * M;
+S.push(this.getBytes(h[M].bytesPerSample, y + x + D));
+}
+a[v].push(S);
+if (!_) {
+b = 0;
+throw RangeError(n.getError(6026));
+}
+b = f;
+break;
+
+case 2:
+case 3:
+case 4:
+case 5:
+case 6:
+case 7:
+break;
+
+case 32773:
+if (A) {
+A = !1;
+var I = 1, P = 1, R = this.getInt8(y + x);
+R >= 0 && R <= 127 ? I = R + 1 : R >= -127 && R <= -1 ? P = 1 - R : A = !0;
+} else {
+var L = this.getUint8(y + x);
+for (M = 0; M < P; M++) {
+if (!h[T].hasBytesPerSample) throw RangeError(n.getError(6025));
+E = E << 8 * w | L;
+if (++w === h[T].bytesPerSample) {
+S.push(E);
+E = w = 0;
+T++;
+}
+if (T === l) {
+a[v].push(S);
+S = [];
+T = 0;
+}
+}
+0 === --I && (A = !0);
+}
+b = 1;
+}
+}
+if (e.getContext) {
+var F = this.canvas.getContext("2d");
+F.fillStyle = "rgba(255, 255, 255, 0)";
+var O = r.RowsPerStrip ? r.RowsPerStrip.values[0] : o, V = a.length, N = o % O, k = 0 === N ? O : N, z = O, G = 0, U = r.PhotometricInterpretation.values[0], j = [], W = 0;
+r.ExtraSamples && (W = (j = r.ExtraSamples.values).length);
+if (r.ColorMap) var H = r.ColorMap.values, q = Math.pow(2, h[0].bitsPerSample);
+for (v = 0; v < V; v++) {
+v + 1 === V && (z = k);
+for (var X = a[v].length, Y = G * v, J = 0, Z = 0; Z < X; J++) for (var K = 0; K < s; K++,
+Z++) {
+var Q = a[v][Z], $ = 0, tt = 0, et = 0, it = 1;
+if (W > 0) for (var nt = 0; nt < W; nt++) if (1 === j[nt] || 2 === j[nt]) {
+it = Q[3 + nt] / 256;
+break;
+}
+switch (U) {
+case 0:
+if (h[0].hasBytesPerSample) var rt = Math.pow(16, 2 * h[0].bytesPerSample);
+Q.forEach((function(t, e, i) {
+i[e] = rt - t;
+}));
+
+case 1:
+$ = tt = et = this.clampColorSample(Q[0], h[0].bitsPerSample);
+break;
+
+case 2:
+$ = this.clampColorSample(Q[0], h[0].bitsPerSample);
+tt = this.clampColorSample(Q[1], h[1].bitsPerSample);
+et = this.clampColorSample(Q[2], h[2].bitsPerSample);
+break;
+
+case 3:
+if (void 0 === H) throw Error(n.getError(6027));
+var st = Q[0];
+$ = this.clampColorSample(H[st], 16);
+tt = this.clampColorSample(H[q + st], 16);
+et = this.clampColorSample(H[2 * q + st], 16);
+break;
+
+default:
+throw RangeError(n.getError(6028, U));
+}
+F.fillStyle = "rgba(" + $ + ", " + tt + ", " + et + ", " + it + ")";
+F.fillRect(K, Y + J, 1, 1);
+}
+G = z;
+}
+}
+return this.canvas;
+}
+},
+fieldTagNames: {
+315: "Artist",
+258: "BitsPerSample",
+265: "CellLength",
+264: "CellWidth",
+320: "ColorMap",
+259: "Compression",
+33432: "Copyright",
+306: "DateTime",
+338: "ExtraSamples",
+266: "FillOrder",
+289: "FreeByteCounts",
+288: "FreeOffsets",
+291: "GrayResponseCurve",
+290: "GrayResponseUnit",
+316: "HostComputer",
+270: "ImageDescription",
+257: "ImageLength",
+256: "ImageWidth",
+271: "Make",
+281: "MaxSampleValue",
+280: "MinSampleValue",
+272: "Model",
+254: "NewSubfileType",
+274: "Orientation",
+262: "PhotometricInterpretation",
+284: "PlanarConfiguration",
+296: "ResolutionUnit",
+278: "RowsPerStrip",
+277: "SamplesPerPixel",
+305: "Software",
+279: "StripByteCounts",
+273: "StripOffsets",
+255: "SubfileType",
+263: "Threshholding",
+282: "XResolution",
+283: "YResolution",
+326: "BadFaxLines",
+327: "CleanFaxData",
+343: "ClipPath",
+328: "ConsecutiveBadFaxLines",
+433: "Decode",
+434: "DefaultImageColor",
+269: "DocumentName",
+336: "DotRange",
+321: "HalftoneHints",
+346: "Indexed",
+347: "JPEGTables",
+285: "PageName",
+297: "PageNumber",
+317: "Predictor",
+319: "PrimaryChromaticities",
+532: "ReferenceBlackWhite",
+339: "SampleFormat",
+559: "StripRowCounts",
+330: "SubIFDs",
+292: "T4Options",
+293: "T6Options",
+325: "TileByteCounts",
+323: "TileLength",
+324: "TileOffsets",
+322: "TileWidth",
+301: "TransferFunction",
+318: "WhitePoint",
+344: "XClipPathUnits",
+286: "XPosition",
+529: "YCbCrCoefficients",
+531: "YCbCrPositioning",
+530: "YCbCrSubSampling",
+345: "YClipPathUnits",
+287: "YPosition",
+37378: "ApertureValue",
+40961: "ColorSpace",
+36868: "DateTimeDigitized",
+36867: "DateTimeOriginal",
+34665: "Exif IFD",
+36864: "ExifVersion",
+33434: "ExposureTime",
+41728: "FileSource",
+37385: "Flash",
+40960: "FlashpixVersion",
+33437: "FNumber",
+42016: "ImageUniqueID",
+37384: "LightSource",
+37500: "MakerNote",
+37377: "ShutterSpeedValue",
+37510: "UserComment",
+33723: "IPTC",
+34675: "ICC Profile",
+700: "XMP",
+42112: "GDAL_METADATA",
+42113: "GDAL_NODATA",
+34377: "Photoshop"
+},
+fieldTypeNames: {
+1: "BYTE",
+2: "ASCII",
+3: "SHORT",
+4: "LONG",
+5: "RATIONAL",
+6: "SBYTE",
+7: "UNDEFINED",
+8: "SSHORT",
+9: "SLONG",
+10: "SRATIONAL",
+11: "FLOAT",
+12: "DOUBLE"
+}
+};
+e.exports = r;
+}), {
+"../core/CCDebug": 49
+} ],
+333: [ (function(t, e, i) {
+"use strict";
+t("./CCParticleAsset");
+t("./CCParticleSystem");
+t("./particle-simulator");
+t("./particle-system-assembler");
+}), {
+"./CCParticleAsset": 330,
+"./CCParticleSystem": 331,
+"./particle-simulator": 334,
+"./particle-system-assembler": 335
+} ],
+334: [ (function(t, e, i) {
+"use strict";
+var n = t("../core/utils/affine-transform"), r = t("../core/platform/js"), s = t("../core/utils/misc"), o = cc.v2(0, 0), a = n.create(), c = cc.v2(), l = cc.v2(), h = cc.v2(), u = cc.v2(), _ = function() {
+this.pos = cc.v2(0, 0);
+this.startPos = cc.v2(0, 0);
+this.color = cc.color(0, 0, 0, 255);
+this.deltaColor = {
+r: 0,
+g: 0,
+b: 0,
+a: 255
+};
+this.size = 0;
+this.deltaSize = 0;
+this.rotation = 0;
+this.deltaRotation = 0;
+this.timeToLive = 0;
+this.drawPos = cc.v2(0, 0);
+this.dir = cc.v2(0, 0);
+this.radialAccel = 0;
+this.tangentialAccel = 0;
+this.angle = 0;
+this.degreesPerSecond = 0;
+this.radius = 0;
+this.deltaRadius = 0;
+}, f = new r.Pool(function(t) {
+t.pos.set(o);
+t.startPos.set(o);
+t.color._val = 4278190080;
+t.deltaColor.r = t.deltaColor.g = t.deltaColor.b = 0;
+t.deltaColor.a = 255;
+t.size = 0;
+t.deltaSize = 0;
+t.rotation = 0;
+t.deltaRotation = 0;
+t.timeToLive = 0;
+t.drawPos.set(o);
+t.dir.set(o);
+t.radialAccel = 0;
+t.tangentialAccel = 0;
+t.angle = 0;
+t.degreesPerSecond = 0;
+t.radius = 0;
+t.deltaRadius = 0;
+}, 1024);
+f.get = function() {
+return this._get() || new _();
+};
+var d = function(t) {
+this.sys = t;
+this.particles = [];
+this.active = !1;
+this.finished = !1;
+this.elapsed = 0;
+this.emitCounter = 0;
+this._uvFilled = 0;
+};
+d.prototype.stop = function() {
+this.active = !1;
+this.elapsed = this.sys.duration;
+this.emitCounter = 0;
+};
+d.prototype.reset = function() {
+this.active = !0;
+this.elapsed = 0;
+this.emitCounter = 0;
+this.finished = !1;
+for (var t = this.particles, e = 0; e < t.length; ++e) f.put(t[e]);
+t.length = 0;
+};
+d.prototype.emitParticle = function(t) {
+var e = this.sys, i = s.clampf, n = f.get();
+this.particles.push(n);
+n.timeToLive = e.life + e.lifeVar * (Math.random() - .5) * 2;
+var r = n.timeToLive = Math.max(0, n.timeToLive);
+n.pos.x = e.sourcePos.x + e.posVar.x * (Math.random() - .5) * 2;
+n.pos.y = e.sourcePos.y + e.posVar.y * (Math.random() - .5) * 2;
+var o, a, c, l, h = e._startColor, u = e._startColorVar, _ = e._endColor, d = e._endColorVar;
+n.color.r = o = i(h.r + u.r * (Math.random() - .5) * 2, 0, 255);
+n.color.g = a = i(h.g + u.g * (Math.random() - .5) * 2, 0, 255);
+n.color.b = c = i(h.b + u.b * (Math.random() - .5) * 2, 0, 255);
+n.color.a = l = i(h.a + u.a * (Math.random() - .5) * 2, 0, 255);
+n.deltaColor.r = (i(_.r + d.r * (Math.random() - .5) * 2, 0, 255) - o) / r;
+n.deltaColor.g = (i(_.g + d.g * (Math.random() - .5) * 2, 0, 255) - a) / r;
+n.deltaColor.b = (i(_.b + d.b * (Math.random() - .5) * 2, 0, 255) - c) / r;
+n.deltaColor.a = (i(_.a + d.a * (Math.random() - .5) * 2, 0, 255) - l) / r;
+var p = e.startSize + e.startSizeVar * (Math.random() - .5) * 2;
+p = Math.max(0, p);
+n.size = p;
+if (e.endSize === cc.ParticleSystem.START_SIZE_EQUAL_TO_END_SIZE) n.deltaSize = 0; else {
+var v = e.endSize + e.endSizeVar * (Math.random() - .5) * 2;
+v = Math.max(0, v);
+n.deltaSize = (v - p) / r;
+}
+var y = e.startSpin + e.startSpinVar * (Math.random() - .5) * 2, g = e.endSpin + e.endSpinVar * (Math.random() - .5) * 2;
+n.rotation = y;
+n.deltaRotation = (g - y) / r;
+n.startPos.x = t.x;
+n.startPos.y = t.y;
+var x = m(e.node), C = e.positionType === cc.ParticleSystem.PositionType.FREE ? e.angle + x : e.angle, b = s.degreesToRadians(C + e.angleVar * (Math.random() - .5) * 2);
+if (e.emitterMode === cc.ParticleSystem.EmitterMode.GRAVITY) {
+var A = e.speed + e.speedVar * (Math.random() - .5) * 2;
+n.dir.x = Math.cos(b);
+n.dir.y = Math.sin(b);
+n.dir.mulSelf(A);
+n.radialAccel = e.radialAccel + e.radialAccelVar * (Math.random() - .5) * 2;
+n.tangentialAccel = e.tangentialAccel + e.tangentialAccelVar * (Math.random() - .5) * 2;
+e.rotationIsDir && (n.rotation = -s.radiansToDegrees(Math.atan2(n.dir.y, n.dir.x)));
+} else {
+var S = e.startRadius + e.startRadiusVar * (Math.random() - .5) * 2, w = e.endRadius + e.endRadiusVar * (Math.random() - .5) * 2;
+n.radius = S;
+n.deltaRadius = e.endRadius === cc.ParticleSystem.START_RADIUS_EQUAL_TO_END_RADIUS ? 0 : (w - S) / r;
+n.angle = b;
+n.degreesPerSecond = s.degreesToRadians(e.rotatePerS + e.rotatePerSVar * (Math.random() - .5) * 2);
+}
+};
+function m(t) {
+for (var e = 0, i = t; i; ) {
+e += i.angle;
+i = i.parent;
+}
+return e;
+}
+d.prototype.updateUVs = function(t) {
+var e = this.particles.length;
+if (this.sys._buffer && this.sys._renderSpriteFrame) {
+for (var i = 4 * this.sys._vertexFormat._bytes / 4, n = this.sys._buffer._vData, r = this.sys._renderSpriteFrame.uv, s = t ? 0 : this._uvFilled; s < e; s++) {
+var o = s * i;
+n[o + 2] = r[0];
+n[o + 3] = r[1];
+n[o + 7] = r[2];
+n[o + 8] = r[3];
+n[o + 12] = r[4];
+n[o + 13] = r[5];
+n[o + 17] = r[6];
+n[o + 18] = r[7];
+}
+this._uvFilled = e;
+}
+};
+d.prototype.updateParticleBuffer = function(t, e, i, n) {
+var r = i._vData, o = i._uintVData, a = e.x, c = e.y, l = t.size / 2;
+if (t.rotation) {
+var h = -l, u = -l, _ = l, f = l, d = -s.degreesToRadians(t.rotation), m = Math.cos(d), p = Math.sin(d);
+r[n] = h * m - u * p + a;
+r[n + 1] = h * p + u * m + c;
+r[n + 5] = _ * m - u * p + a;
+r[n + 6] = _ * p + u * m + c;
+r[n + 10] = h * m - f * p + a;
+r[n + 11] = h * p + f * m + c;
+r[n + 15] = _ * m - f * p + a;
+r[n + 16] = _ * p + f * m + c;
+} else {
+r[n] = a - l;
+r[n + 1] = c - l;
+r[n + 5] = a + l;
+r[n + 6] = c - l;
+r[n + 10] = a - l;
+r[n + 11] = c + l;
+r[n + 15] = a + l;
+r[n + 16] = c + l;
+}
+o[n + 4] = t.color._val;
+o[n + 9] = t.color._val;
+o[n + 14] = t.color._val;
+o[n + 19] = t.color._val;
+};
+d.prototype.step = function(t) {
+var e = this.sys, i = e.node, r = this.particles, _ = 4 * e._vertexFormat._bytes / 4;
+i._updateWorldMatrix();
+a = n.identity();
+if (e.positionType === cc.ParticleSystem.PositionType.FREE) {
+a.tx = i._worldMatrix.m12;
+a.ty = i._worldMatrix.m13;
+n.transformVec2(c, o, a);
+} else if (e.positionType === cc.ParticleSystem.PositionType.RELATIVE) {
+var d = s.degreesToRadians(-i.angle), m = Math.cos(d), p = Math.sin(d);
+a = n.create(m, -p, p, m, 0, 0);
+c.x = i._position.x;
+c.y = i._position.y;
+}
+n.invert(a, a);
+var v = a;
+if (this.active && e.emissionRate) {
+var y = 1 / e.emissionRate;
+r.length < e.totalParticles && (this.emitCounter += t);
+for (;r.length < e.totalParticles && this.emitCounter > y; ) {
+this.emitParticle(c);
+this.emitCounter -= y;
+}
+this.elapsed += t;
+-1 !== e.duration && e.duration < this.elapsed && e.stopSystem();
+}
+var g = e._buffer, x = r.length;
+g.reset();
+g.request(4 * x, 6 * x);
+x > this._uvFilled && this.updateUVs();
+for (var C = 0; C < r.length; ) {
+l.x = l.y = h.x = h.y = u.x = u.y = 0;
+var b = r[C];
+b.timeToLive -= t;
+if (b.timeToLive > 0) {
+if (e.emitterMode === cc.ParticleSystem.EmitterMode.GRAVITY) {
+var A = u, S = l, w = h;
+if (b.pos.x || b.pos.y) {
+S.set(b.pos);
+S.normalizeSelf();
+}
+w.set(S);
+S.mulSelf(b.radialAccel);
+var T = w.x;
+w.x = -w.y;
+w.y = T;
+w.mulSelf(b.tangentialAccel);
+A.set(S);
+A.addSelf(w);
+A.addSelf(e.gravity);
+A.mulSelf(t);
+b.dir.addSelf(A);
+A.set(b.dir);
+A.mulSelf(t);
+b.pos.addSelf(A);
+} else {
+b.angle += b.degreesPerSecond * t;
+b.radius += b.deltaRadius * t;
+b.pos.x = -Math.cos(b.angle) * b.radius;
+b.pos.y = -Math.sin(b.angle) * b.radius;
+}
+b.color.r += b.deltaColor.r * t;
+b.color.g += b.deltaColor.g * t;
+b.color.b += b.deltaColor.b * t;
+b.color.a += b.deltaColor.a * t;
+b.size += b.deltaSize * t;
+b.size < 0 && (b.size = 0);
+b.rotation += b.deltaRotation * t;
+var E = l, M = h;
+if (e.positionType === cc.ParticleSystem.PositionType.FREE) {
+M.set(b.startPos);
+M.negSelf();
+E.set(b.pos);
+E.subSelf(M);
+} else if (e.positionType === cc.ParticleSystem.PositionType.RELATIVE) {
+var B = u;
+n.transformVec2(M, c, v);
+n.transformVec2(B, b.startPos, v);
+M.subSelf(B);
+E.set(b.pos);
+E.subSelf(M);
+} else E.set(b.pos);
+var D = _ * C;
+this.updateParticleBuffer(b, E, g, D);
+++C;
+} else {
+var I = r[C];
+C !== r.length - 1 && (r[C] = r[r.length - 1]);
+f.put(I);
+r.length--;
+}
+}
+if (r.length > 0) {
+g.uploadData();
+e._ia._count = 6 * r.length;
+} else if (!this.active) {
+this.finished = !0;
+e._finishedSimulation();
+}
+};
+e.exports = d;
+}), {
+"../core/platform/js": 221,
+"../core/utils/affine-transform": 286,
+"../core/utils/misc": 297
+} ],
+335: [ (function(t, e, i) {
+"use strict";
+var n = s(t("../renderer/render-data/ia-render-data")), r = s(t("../renderer/core/input-assembler"));
+function s(t) {
+return t && t.__esModule ? t : {
+default: t
+};
+}
+var o = t("./CCParticleSystem"), a = t("../core/renderer/"), c = t("../core/renderer/webgl/vertex-format").vfmtPosUvColor, l = t("../core/renderer/webgl/quad-buffer"), h = {
+createIA: function(t) {
+a.device;
+t._vertexFormat = c;
+t._buffer = new l(a._handle, c);
+t._ia = new r.default();
+t._ia._vertexBuffer = t._buffer._vb;
+t._ia._indexBuffer = t._buffer._ib;
+t._ia._start = 0;
+t._ia._count = 0;
+},
+updateRenderData: function(t) {
+t._renderData || (t._renderData = new n.default());
+t._renderData.ia = t._ia;
+t._renderData.material = t.sharedMaterials[0];
+},
+renderIA: function(t, e) {
+e._flushIA(t._renderData);
+}
+};
+o._assembler = h;
+e.exports = h;
+}), {
+"../core/renderer/": 244,
+"../core/renderer/webgl/quad-buffer": 282,
+"../core/renderer/webgl/vertex-format": 284,
+"../renderer/core/input-assembler": 339,
+"../renderer/render-data/ia-render-data": 368,
+"./CCParticleSystem": 331
+} ],
+336: [ (function(t, e, i) {
+"use strict";
+i.__esModule = !0;
+var n = 0, r = {};
+i.default = {
+addStage: function(t) {
+if (void 0 === r[t]) {
+var e = 1 << n;
+r[t] = e;
+n += 1;
+}
+},
+stageID: function(t) {
+var e = r[t];
+return void 0 === e ? -1 : e;
+},
+stageIDs: function(t) {
+for (var e = 0, i = 0; i < t.length; ++i) {
+var n = r[t[i]];
+void 0 !== n && (e |= n);
+}
+return e;
+}
+};
+e.exports = i.default;
+}), {} ],
+337: [ (function(t, e, i) {
+"use strict";
+i.__esModule = !0;
+i.default = void 0;
+var n, r, s = t("../memop"), o = u(t("../enums")), a = t("../../core/vmath"), c = u(t("./program-lib")), l = u(t("./view")), h = u(t("../gfx"));
+function u(t) {
+return t && t.__esModule ? t : {
+default: t
+};
+}
+function _(t, e) {
+if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function");
+}
+var f = a.mat3.create(), d = a.mat4.create(), m = new s.RecyclePool(function() {
+return {
+stage: null,
+items: null
+};
+}, 8), p = new s.RecyclePool(function() {
+return new Float32Array(2);
+}, 8), v = new s.RecyclePool(function() {
+return new Float32Array(3);
+}, 8), y = new s.RecyclePool(function() {
+return new Float32Array(4);
+}, 8), g = new s.RecyclePool(function() {
+return new Float32Array(9);
+}, 8), x = new s.RecyclePool(function() {
+return new Float32Array(16);
+}, 8), C = new s.RecyclePool(function() {
+return new Float32Array(64);
+}, 8), b = new s.RecyclePool(function() {
+return new Int32Array(2);
+}, 8), A = new s.RecyclePool(function() {
+return new Int32Array(3);
+}, 8), S = new s.RecyclePool(function() {
+return new Int32Array(4);
+}, 8), w = new s.RecyclePool(function() {
+return new Int32Array(64);
+}, 8), T = ((n = {})[o.default.PARAM_INT] = function(t) {
+return t;
+}, n[o.default.PARAM_INT2] = function(t) {
+return a.vec2.array(b.add(), t);
+}, n[o.default.PARAM_INT3] = function(t) {
+return a.vec3.array(A.add(), t);
+}, n[o.default.PARAM_INT4] = function(t) {
+return a.vec4.array(S.add(), t);
+}, n[o.default.PARAM_FLOAT] = function(t) {
+return t;
+}, n[o.default.PARAM_FLOAT2] = function(t) {
+return a.vec2.array(p.add(), t);
+}, n[o.default.PARAM_FLOAT3] = function(t) {
+return a.vec3.array(v.add(), t);
+}, n[o.default.PARAM_FLOAT4] = function(t) {
+return a.vec4.array(y.add(), t);
+}, n[o.default.PARAM_COLOR3] = function(t) {
+return a.color3.array(v.add(), t);
+}, n[o.default.PARAM_COLOR4] = function(t) {
+return a.color4.array(y.add(), t);
+}, n[o.default.PARAM_MAT2] = function(t) {
+return a.mat2.array(y.add(), t);
+}, n[o.default.PARAM_MAT3] = function(t) {
+return a.mat3.array(g.add(), t);
+}, n[o.default.PARAM_MAT4] = function(t) {
+return a.mat4.array(x.add(), t);
+}, n), E = ((r = {})[o.default.PARAM_INT] = {
+func: function(t) {
+for (var e = w.add(), i = 0; i < t.length; ++i) e[i] = t[i];
+return e;
+},
+size: 1
+}, r[o.default.PARAM_INT2] = {
+func: function(t) {
+for (var e = w.add(), i = 0; i < t.length; ++i) {
+e[2 * i] = t[i].x;
+e[2 * i + 1] = t[i].y;
+}
+return e;
+},
+size: 2
+}, r[o.default.PARAM_INT3] = {
+func: void 0,
+size: 3
+}, r[o.default.PARAM_INT4] = {
+func: function(t) {
+for (var e = w.add(), i = 0; i < t.length; ++i) {
+var n = t[i];
+e[4 * i] = n.x;
+e[4 * i + 1] = n.y;
+e[4 * i + 2] = n.z;
+e[4 * i + 3] = n.w;
+}
+return e;
+},
+size: 4
+}, r[o.default.PARAM_FLOAT] = {
+func: function(t) {
+for (var e = C.add(), i = 0; i < t.length; ++i) e[i] = t[i];
+return e;
+},
+size: 1
+}, r[o.default.PARAM_FLOAT2] = {
+func: function(t) {
+for (var e = C.add(), i = 0; i < t.length; ++i) {
+e[2 * i] = t[i].x;
+e[2 * i + 1] = t[i].y;
+}
+return e;
+},
+size: 2
+}, r[o.default.PARAM_FLOAT3] = {
+func: void 0,
+size: 3
+}, r[o.default.PARAM_FLOAT4] = {
+func: function(t) {
+for (var e = C.add(), i = 0; i < t.length; ++i) {
+var n = t[i];
+e[4 * i] = n.x;
+e[4 * i + 1] = n.y;
+e[4 * i + 2] = n.z;
+e[4 * i + 3] = n.w;
+}
+return e;
+},
+size: 4
+}, r[o.default.PARAM_COLOR3] = {
+func: void 0,
+size: 3
+}, r[o.default.PARAM_COLOR4] = {
+func: function(t) {
+for (var e = C.add(), i = 0; i < t.length; ++i) {
+var n = t[i];
+e[4 * i] = n.r;
+e[4 * i + 1] = n.g;
+e[4 * i + 2] = n.b;
+e[4 * i + 3] = n.a;
+}
+return e;
+},
+size: 4
+}, r[o.default.PARAM_MAT2] = {
+func: function(t) {
+for (var e = C.add(), i = 0; i < t.length; ++i) {
+var n = t[i];
+e[4 * i] = n.m00;
+e[4 * i + 1] = n.m01;
+e[4 * i + 2] = n.m02;
+e[4 * i + 3] = n.m03;
+}
+return e;
+},
+size: 4
+}, r[o.default.PARAM_MAT3] = {
+func: void 0,
+size: 9
+}, r[o.default.PARAM_MAT4] = {
+func: function(t) {
+for (var e = C.add(), i = 0; i < t.length; ++i) {
+var n = t[i];
+e[16 * i] = n.m00;
+e[16 * i + 1] = n.m01;
+e[16 * i + 2] = n.m02;
+e[16 * i + 3] = n.m03;
+e[16 * i + 4] = n.m04;
+e[16 * i + 5] = n.m05;
+e[16 * i + 6] = n.m06;
+e[16 * i + 7] = n.m07;
+e[16 * i + 8] = n.m08;
+e[16 * i + 9] = n.m09;
+e[16 * i + 10] = n.m10;
+e[16 * i + 11] = n.m11;
+e[16 * i + 12] = n.m12;
+e[16 * i + 13] = n.m13;
+e[16 * i + 14] = n.m14;
+e[16 * i + 15] = n.m15;
+}
+return e;
+},
+size: 16
+}, r), M = (function() {
+function t(e, i) {
+var n;
+_(this, t);
+this._device = e;
+this._programLib = new c.default(e);
+this._opts = i;
+this._type2defaultValue = ((n = {})[o.default.PARAM_INT] = 0, n[o.default.PARAM_INT2] = a.vec2.create(0, 0),
+n[o.default.PARAM_INT3] = a.vec3.create(0, 0, 0), n[o.default.PARAM_INT4] = a.vec4.create(0, 0, 0, 0),
+n[o.default.PARAM_FLOAT] = 0, n[o.default.PARAM_FLOAT2] = a.vec2.create(0, 0), n[o.default.PARAM_FLOAT3] = a.vec3.create(0, 0, 0),
+n[o.default.PARAM_FLOAT4] = a.vec4.create(0, 0, 0, 0), n[o.default.PARAM_COLOR3] = a.color3.create(0, 0, 0),
+n[o.default.PARAM_COLOR4] = a.color4.create(0, 0, 0, 1), n[o.default.PARAM_MAT2] = a.mat2.create(),
+n[o.default.PARAM_MAT3] = a.mat3.create(), n[o.default.PARAM_MAT4] = a.mat4.create(),
+n[o.default.PARAM_TEXTURE_2D] = i.defaultTexture, n[o.default.PARAM_TEXTURE_CUBE] = i.defaultTextureCube,
+n);
+this._stage2fn = {};
+this._usedTextureUnits = 0;
+this._viewPools = new s.RecyclePool(function() {
+return new l.default();
+}, 8);
+this._drawItemsPools = new s.RecyclePool(function() {
+return {
+model: null,
+node: null,
+ia: null,
+effect: null,
+defines: null,
+uniforms: null
+};
+}, 100);
+this._stageItemsPools = new s.RecyclePool(function() {
+return new s.RecyclePool(function() {
+return {
+model: null,
+node: null,
+ia: null,
+effect: null,
+defines: null,
+technique: null,
+sortKey: -1,
+uniforms: null
+};
+}, 100);
+}, 16);
+}
+t.prototype._resetTextuerUnit = function() {
+this._usedTextureUnits = 0;
+};
+t.prototype._allocTextureUnit = function() {
+var t = this._device, e = this._usedTextureUnits;
+e >= t._caps.maxTextureUnits && console.warn("Trying to use " + e + " texture units while this GPU supports only " + t._caps.maxTextureUnits);
+this._usedTextureUnits += 1;
+return e;
+};
+t.prototype._registerStage = function(t, e) {
+this._stage2fn[t] = e;
+};
+t.prototype.clear = function() {
+this._programLib.clear();
+this.reset();
+};
+t.prototype.reset = function() {
+this._viewPools.reset();
+this._stageItemsPools.reset();
+};
+t.prototype._requestView = function() {
+return this._viewPools.add();
+};
+t.prototype._render = function(t, e) {
+var i = this._device;
+i.setFrameBuffer(t._framebuffer);
+i.setViewport(t._rect.x, t._rect.y, t._rect.w, t._rect.h);
+var n = {};
+t._clearFlags & o.default.CLEAR_COLOR && (n.color = [ t._color.r, t._color.g, t._color.b, t._color.a ]);
+t._clearFlags & o.default.CLEAR_DEPTH && (n.depth = t._depth);
+t._clearFlags & o.default.CLEAR_STENCIL && (n.stencil = t._stencil);
+i.clear(n);
+this._drawItemsPools.reset();
+for (var r = 0; r < e._models.length; ++r) {
+var s = e._models.data[r];
+if (0 != (s._cullingMask & t._cullingMask)) {
+var a = this._drawItemsPools.add();
+s.extractDrawItem(a);
+}
+}
+m.reset();
+for (var c = 0; c < t._stages.length; ++c) {
+var l = t._stages[c], h = this._stageItemsPools.add();
+h.reset();
+for (var u = 0; u < this._drawItemsPools.length; ++u) {
+var _ = this._drawItemsPools.data[u], f = _.effect.getTechnique(l);
+if (f) {
+var d = h.add();
+d.model = _.model;
+d.node = _.node;
+d.ia = _.ia;
+d.effect = _.effect;
+d.defines = _.defines;
+d.technique = f;
+d.sortKey = -1;
+d.uniforms = _.uniforms;
+}
+}
+var p = m.add();
+p.stage = l;
+p.items = h;
+}
+for (var v = 0; v < m.length; ++v) {
+var y = m.data[v];
+(0, this._stage2fn[y.stage])(t, y.items);
+}
+};
+t.prototype._setProperty = function(t) {
+var e = this._device, i = t.value;
+void 0 === i && (i = t.val);
+void 0 === i && (i = this._type2defaultValue[t.type]);
+if (void 0 !== i) if (t.type === o.default.PARAM_TEXTURE_2D || t.type === o.default.PARAM_TEXTURE_CUBE) if (void 0 !== t.size) {
+if (t.size !== i.length) {
+console.error("The length of texture array (" + i.length + ") is not corrent(expect " + t.size + ").");
+return;
+}
+for (var n = w.add(), r = 0; r < i.length; ++r) n[r] = this._allocTextureUnit();
+e.setTextureArray(t.name, i, n);
+} else e.setTexture(t.name, i, this._allocTextureUnit()); else {
+var s = void 0;
+if (i instanceof Float32Array || i instanceof Int32Array) {
+e.setUniformDirectly(t.name, i);
+return;
+}
+if (void 0 !== t.size) {
+var a = E[t.type];
+if (void 0 === a.func) {
+console.error("Uniform array of color3/int3/float3/mat3 can not be supportted!");
+return;
+}
+if (t.size * a.size > 64) {
+console.error("Uniform array is too long!");
+return;
+}
+s = a.func(i);
+} else {
+s = (0, T[t.type])(i);
+}
+e.setUniform(t.name, s);
+} else console.warn("Failed to set technique property " + t.name + ", value not found.");
+};
+t.prototype._draw = function(t) {
+var e = this._device, i = this._programLib, n = t.node, r = t.ia, s = t.uniforms, o = t.technique, c = t.defines, l = t.effect;
+p.reset();
+v.reset();
+y.reset();
+g.reset();
+x.reset();
+C.reset();
+b.reset();
+A.reset();
+S.reset();
+w.reset();
+n.getWorldMatrix(d);
+e.setUniform("cc_matWorld", a.mat4.array(x.add(), d));
+var u = a.mat3.invert(f, a.mat3.fromMat4(f, d));
+if (u) {
+a.mat3.transpose(f, u);
+e.setUniform("cc_matWorldIT", a.mat3.array(g.add(), f));
+}
+for (var _ = 0; _ < s.length; _++) {
+var m = s[_];
+for (var T in m) this._setProperty(m[T]);
+}
+for (var E = 0; E < o._passes.length; ++E) {
+var M = o._passes[E], B = r.count;
+r._vertexBuffer && e.setVertexBuffer(0, r._vertexBuffer);
+r._indexBuffer && e.setIndexBuffer(r._indexBuffer);
+e.setPrimitiveType(r._primitiveType);
+var D = i.getProgram(M._programName, c, l._name);
+e.setProgram(D);
+e.setCullMode(M._cullMode);
+if (M._blend) {
+e.enableBlend();
+e.setBlendFuncSep(M._blendSrc, M._blendDst, M._blendSrcAlpha, M._blendDstAlpha);
+e.setBlendEqSep(M._blendEq, M._blendAlphaEq);
+e.setBlendColor32(M._blendColor);
+}
+if (M._depthTest) {
+e.enableDepthTest();
+e.setDepthFunc(M._depthFunc);
+}
+M._depthWrite && e.enableDepthWrite();
+e.setStencilTest(M._stencilTest);
+if (M._stencilTest === h.default.STENCIL_ENABLE) {
+e.setStencilFuncFront(M._stencilFuncFront, M._stencilRefFront, M._stencilMaskFront);
+e.setStencilOpFront(M._stencilFailOpFront, M._stencilZFailOpFront, M._stencilZPassOpFront, M._stencilWriteMaskFront);
+e.setStencilFuncBack(M._stencilFuncBack, M._stencilRefBack, M._stencilMaskBack);
+e.setStencilOpBack(M._stencilFailOpBack, M._stencilZFailOpBack, M._stencilZPassOpBack, M._stencilWriteMaskBack);
+}
+e.draw(r._start, B);
+this._resetTextuerUnit();
+}
+};
+return t;
+})();
+i.default = M;
+e.exports = i.default;
+}), {
+"../../core/vmath": 317,
+"../enums": 344,
+"../gfx": 349,
+"../memop": 361,
+"./program-lib": 341,
+"./view": 343
+} ],
+338: [ (function(t, e, i) {
+"use strict";
+i.__esModule = !0;
+var n = a(t("../config")), r = a(t("../core/pass")), s = a(t("../core/technique")), o = t("../types");
+function a(t) {
+return t && t.__esModule ? t : {
+default: t
+};
+}
+function c(t, e) {
+if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function");
+}
+var l = function(t) {
+return o.enums2ctor[t] || o.enums2ctor.default;
+}, h = (function() {
+function t(e, i) {
+var n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {}, r = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : {}, s = arguments.length > 4 && void 0 !== arguments[4] ? arguments[4] : [];
+c(this, t);
+this._name = e;
+this._techniques = i;
+this._properties = n;
+this._defines = r;
+this._dependencies = s;
+}
+t.prototype.clear = function() {
+this._techniques.length = 0;
+this._properties = {};
+this._defines = {};
+};
+t.prototype.getDefaultTechnique = function() {
+return this._techniques[0];
+};
+t.prototype.getTechnique = function(t) {
+var e = n.default.stageID(t);
+if (-1 === e) return null;
+for (var i = 0; i < this._techniques.length; ++i) {
+var r = this._techniques[i];
+if (r.stageIDs & e) return r;
+}
+return null;
+};
+t.prototype.getProperty = function(t) {
+if (!this._properties[t]) {
+cc.warn(this._name + " : Failed to get property " + t + ", property not found.");
+return null;
+}
+return this._properties[t].value;
+};
+t.prototype.setProperty = function(t, e) {
+this._properties[t] ? this._properties[t].value = e : cc.warn(this._name + " : Failed to set property " + t + ", property not found.");
+};
+t.prototype.getDefine = function(t) {
+var e = this._defines[t];
+void 0 === e && cc.warn(this._name + " : Failed to get define " + t + ", define not found.");
+return e;
+};
+t.prototype.define = function(t, e) {
+void 0 !== this._defines[t] ? this._defines[t] = e : cc.warn(this._name + " : Failed to set define " + t + ", define not found.");
+};
+t.prototype.extractProperties = function() {
+var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};
+Object.assign(t, this._properties);
+return t;
+};
+t.prototype.extractDefines = function() {
+var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};
+Object.assign(t, this._defines);
+return t;
+};
+t.prototype.extractDependencies = function() {
+for (var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}, e = 0; e < this._dependencies.length; ++e) {
+var i = this._dependencies[e];
+t[i.define] = i.extension;
+}
+return t;
+};
+return t;
+})(), u = function(t) {
+return t.map((function(t) {
+return Object.assign({}, t);
+}));
+}, _ = function(t) {
+return o.ctor2default[l(t)];
+}, f = function(t) {
+var e = [], i = cc.renderer._forward._programLib;
+t.techniques.forEach((function(t) {
+t.passes.forEach((function(t) {
+e.push(i.getTemplate(t.program));
+}));
+}));
+return e;
+}, d = (function() {
+function t(t, e, i) {
+return {
+type: e,
+displayName: t,
+instanceType: l(e),
+value: _(e)(i)
+};
+}
+return function(e, i) {
+var n = {};
+i.forEach((function(e) {
+e.uniforms.forEach((function(e) {
+e.property && (n[e.name] = t(e.displayName, e.type, e.value));
+}));
+}));
+var r = function(r) {
+var s = e.properties[r], o = void 0;
+if (void 0 !== s.tech && void 0 !== s.pass) {
+var a = e.techniques[s.tech].passes[s.pass].program;
+o = i.find((function(t) {
+return t.name === a;
+})).uniforms.find((function(t) {
+return t.name === r;
+}));
+} else for (var c = 0; c < i.length && !(o = i[c].uniforms.find((function(t) {
+return t.name === r;
+}))); c++) ;
+if (!o) {
+cc.warn(e.name + " : illegal property: " + r);
+return "continue";
+}
+n[r] = t(s.displayName || o.displayName, s.type || o.type, s.value || o.value);
+};
+for (var s in e.properties) r(s);
+return n;
+};
+})();
+h.parseEffect = function(t) {
+for (var e = t.techniques.length, i = new Array(e), n = 0; n < e; ++n) {
+for (var o = t.techniques[n], a = o.passes.length, c = new Array(a), l = 0; l < a; ++l) {
+var m = o.passes[l];
+c[l] = new r.default(m.program);
+c[l].setDepth(m.depthTest, m.depthWrite, m.depthFunc);
+c[l].setCullMode(m.cullMode);
+c[l].setBlend(m.blend, m.blendEq, m.blendSrc, m.blendDst, m.blendAlphaEq, m.blendSrcAlpha, m.blendDstAlpha, m.blendColor);
+c[l].setStencilFront(m.stencilTest, m.stencilFuncFront, m.stencilRefFront, m.stencilMaskFront, m.stencilFailOpFront, m.stencilZFailOpFront, m.stencilZPassOpFront, m.stencilWriteMaskFront);
+c[l].setStencilBack(m.stencilTest, m.stencilFuncBack, m.stencilRefBack, m.stencilMaskBack, m.stencilFailOpBack, m.stencilZFailOpBack, m.stencilZPassOpBack, m.stencilWriteMaskBack);
+}
+i[n] = new s.default(o.stages, c, o.layer);
+}
+var p = f(t), v = d(t, p), y = {}, g = {};
+p.forEach((function(t) {
+t.uniforms.forEach((function(t) {
+var e = t.name, i = y[e] = Object.assign({}, t);
+i.value = _(t.type)(t.value);
+if (v[e]) {
+i.type = v[e].type;
+i.value = v[e].value;
+}
+}));
+t.defines.forEach((function(t) {
+g[t.name] = _(t.type)();
+}));
+}));
+var x = p.reduce((function(t, e) {
+return t.concat(e.extensions);
+}), []);
+x = u(x);
+return new h(t.name, i, y, g, x);
+};
+0;
+i.default = h;
+cc.Effect = h;
+e.exports = i.default;
+}), {
+"../config": 336,
+"../core/pass": 340,
+"../core/technique": 342,
+"../types": 375
+} ],
+339: [ (function(t, e, i) {
+"use strict";
+i.__esModule = !0;
+i.default = void 0;
+var n = (function() {
+function t(t, e) {
+for (var i = 0; i < e.length; i++) {
+var n = e[i];
+n.enumerable = n.enumerable || !1;
+n.configurable = !0;
+"value" in n && (n.writable = !0);
+Object.defineProperty(t, n.key, n);
+}
+}
+return function(e, i, n) {
+i && t(e.prototype, i);
+n && t(e, n);
+return e;
+};
+})(), r = (function(t) {
+return t && t.__esModule ? t : {
+default: t
+};
+})(t("../gfx"));
+function s(t, e) {
+if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function");
+}
+var o = (function() {
+function t(e, i) {
+var n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : r.default.PT_TRIANGLES;
+s(this, t);
+this._vertexBuffer = e;
+this._indexBuffer = i;
+this._primitiveType = n;
+this._start = 0;
+this._count = -1;
+}
+n(t, [ {
+key: "count",
+get: function() {
+return -1 !== this._count ? this._count : this._indexBuffer ? this._indexBuffer.count : this._vertexBuffer.count;
+}
+} ]);
+return t;
+})();
+i.default = o;
+e.exports = i.default;
+}), {
+"../gfx": 349
+} ],
+340: [ (function(t, e, i) {
+"use strict";
+i.__esModule = !0;
+i.default = void 0;
+var n = (function(t) {
+return t && t.__esModule ? t : {
+default: t
+};
+})(t("../gfx"));
+function r(t, e) {
+if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function");
+}
+var s = (function() {
+function t(e) {
+r(this, t);
+this._programName = e;
+this._cullMode = n.default.CULL_BACK;
+this._blend = !1;
+this._blendEq = n.default.BLEND_FUNC_ADD;
+this._blendAlphaEq = n.default.BLEND_FUNC_ADD;
+this._blendSrc = n.default.BLEND_SRC_ALPHA;
+this._blendDst = n.default.BLEND_ONE_MINUS_SRC_ALPHA;
+this._blendSrcAlpha = n.default.BLEND_SRC_ALPHA;
+this._blendDstAlpha = n.default.BLEND_ONE_MINUS_SRC_ALPHA;
+this._blendColor = 4294967295;
+this._depthTest = !1;
+this._depthWrite = !1;
+this._depthFunc = n.default.DS_FUNC_LESS, this._stencilTest = n.default.STENCIL_INHERIT;
+this._stencilFuncFront = n.default.DS_FUNC_ALWAYS;
+this._stencilRefFront = 0;
+this._stencilMaskFront = 255;
+this._stencilFailOpFront = n.default.STENCIL_OP_KEEP;
+this._stencilZFailOpFront = n.default.STENCIL_OP_KEEP;
+this._stencilZPassOpFront = n.default.STENCIL_OP_KEEP;
+this._stencilWriteMaskFront = 255;
+this._stencilFuncBack = n.default.DS_FUNC_ALWAYS;
+this._stencilRefBack = 0;
+this._stencilMaskBack = 255;
+this._stencilFailOpBack = n.default.STENCIL_OP_KEEP;
+this._stencilZFailOpBack = n.default.STENCIL_OP_KEEP;
+this._stencilZPassOpBack = n.default.STENCIL_OP_KEEP;
+this._stencilWriteMaskBack = 255;
+}
+t.prototype.setCullMode = function() {
+var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : n.default.CULL_BACK;
+this._cullMode = t;
+};
+t.prototype.setBlend = function() {
+var t = arguments.length > 0 && void 0 !== arguments[0] && arguments[0], e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : n.default.BLEND_FUNC_ADD, i = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : n.default.BLEND_SRC_ALPHA, r = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : n.default.BLEND_ONE_MINUS_SRC_ALPHA, s = arguments.length > 4 && void 0 !== arguments[4] ? arguments[4] : n.default.BLEND_FUNC_ADD, o = arguments.length > 5 && void 0 !== arguments[5] ? arguments[5] : n.default.BLEND_SRC_ALPHA, a = arguments.length > 6 && void 0 !== arguments[6] ? arguments[6] : n.default.BLEND_ONE_MINUS_SRC_ALPHA, c = arguments.length > 7 && void 0 !== arguments[7] ? arguments[7] : 4294967295;
+this._blend = t;
+this._blendEq = e;
+this._blendSrc = i;
+this._blendDst = r;
+this._blendAlphaEq = s;
+this._blendSrcAlpha = o;
+this._blendDstAlpha = a;
+this._blendColor = c;
+};
+t.prototype.setDepth = function() {
+var t = arguments.length > 0 && void 0 !== arguments[0] && arguments[0], e = arguments.length > 1 && void 0 !== arguments[1] && arguments[1], i = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : n.default.DS_FUNC_LESS;
+this._depthTest = t;
+this._depthWrite = e;
+this._depthFunc = i;
+};
+t.prototype.setStencilFront = function() {
+var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : n.default.STENCIL_INHERIT, e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : n.default.DS_FUNC_ALWAYS, i = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : 0, r = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : 255, s = arguments.length > 4 && void 0 !== arguments[4] ? arguments[4] : n.default.STENCIL_OP_KEEP, o = arguments.length > 5 && void 0 !== arguments[5] ? arguments[5] : n.default.STENCIL_OP_KEEP, a = arguments.length > 6 && void 0 !== arguments[6] ? arguments[6] : n.default.STENCIL_OP_KEEP, c = arguments.length > 7 && void 0 !== arguments[7] ? arguments[7] : 255;
+this._stencilTest = t;
+this._stencilFuncFront = e;
+this._stencilRefFront = i;
+this._stencilMaskFront = r;
+this._stencilFailOpFront = s;
+this._stencilZFailOpFront = o;
+this._stencilZPassOpFront = a;
+this._stencilWriteMaskFront = c;
+};
+t.prototype.setStencilEnabled = function() {
+var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : n.default.STENCIL_INHERIT;
+this._stencilTest = t;
+};
+t.prototype.setStencilBack = function() {
+var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : n.default.STENCIL_INHERIT, e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : n.default.DS_FUNC_ALWAYS, i = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : 0, r = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : 255, s = arguments.length > 4 && void 0 !== arguments[4] ? arguments[4] : n.default.STENCIL_OP_KEEP, o = arguments.length > 5 && void 0 !== arguments[5] ? arguments[5] : n.default.STENCIL_OP_KEEP, a = arguments.length > 6 && void 0 !== arguments[6] ? arguments[6] : n.default.STENCIL_OP_KEEP, c = arguments.length > 7 && void 0 !== arguments[7] ? arguments[7] : 255;
+this._stencilTest = t;
+this._stencilFuncBack = e;
+this._stencilRefBack = i;
+this._stencilMaskBack = r;
+this._stencilFailOpBack = s;
+this._stencilZFailOpBack = o;
+this._stencilZPassOpBack = a;
+this._stencilWriteMaskBack = c;
+};
+return t;
+})();
+i.default = s;
+e.exports = i.default;
+}), {
+"../gfx": 349
+} ],
+341: [ (function(i, n, r) {
+"use strict";
+r.__esModule = !0;
+r.default = void 0;
+var s = (function(t) {
+return t && t.__esModule ? t : {
+default: t
+};
+})(i("../gfx"));
+function o(t, e) {
+if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function");
+}
+var a = 0;
+function c(i) {
+for (var n = [], r = {}, s = i.length - 1; s >= 0; s--) {
+var o = i[s];
+for (var a in o) {
+var c = o[a];
+if (void 0 !== c && void 0 === r[a]) {
+"number" !== ("object" === (e = typeof c) ? t(c) : e) && (c = c ? 1 : 0);
+r[a] = c;
+n.push("#define " + a + " " + c);
+}
+}
+}
+return n.join("\n") + "\n";
+}
+function l(t, e) {
+for (var i = {}, n = t, r = e.length - 1; r >= 0; r--) {
+var s = e[r];
+for (var o in s) {
+var a = s[o];
+void 0 !== a && (void 0 === i[o] && Number.isInteger(a) && (i[o] = a));
+}
+}
+for (var c in i) {
+var l = new RegExp(c, "g");
+n = n.replace(l, i[c]);
+}
+return n;
+}
+function h(t) {
+return t.replace(/#pragma for (\w+) in range\(\s*(\d+)\s*,\s*(\d+)\s*\)([\s\S]+?)#pragma endFor/g, (function(t, e, i, n, r) {
+var s = "", o = parseInt(i), a = parseInt(n);
+(o.isNaN || a.isNaN) && console.error("Unroll For Loops Error: begin and end of range must be an int num.");
+for (var c = o; c < a; ++c) s += r.replace(new RegExp("{" + e + "}", "g"), c);
+return s;
+}));
+}
+var u = (function() {
+function t(e) {
+o(this, t);
+this._device = e;
+this._templates = {};
+this._cache = {};
+}
+t.prototype.clear = function() {
+this._templates = {};
+this._cache = {};
+};
+t.prototype.define = function(t) {
+var e = t.name, i = t.vert, n = t.frag, r = t.defines;
+t.extensions;
+if (!this._templates[e]) {
+for (var s = ++a, o = 0, c = 0; c < r.length; ++c) {
+var l = r[c], h = 1;
+if ("number" === l.type) {
+var u = l.range || [];
+l.min = u[0] || 0;
+l.max = u[1] || 4;
+h = Math.ceil(Math.log2(l.max - l.min));
+l._map = function(t) {
+return t - this.min << this._offset;
+}.bind(l);
+} else l._map = function(t) {
+return t ? 1 << this._offset : 0;
+}.bind(l);
+o += h;
+l._offset = o;
+}
+this._templates[e] = {
+id: s,
+name: e,
+vert: i,
+frag: n,
+defines: r,
+attributes: t.attributes,
+uniforms: t.uniforms,
+extensions: t.extensions
+};
+}
+};
+t.prototype.getTemplate = function(t) {
+return this._templates[t];
+};
+t.prototype.hasProgram = function(t) {
+return void 0 !== this._templates[t];
+};
+t.prototype.getKey = function(t, e) {
+for (var i = this._templates[t], n = 0, r = 0; r < i.defines.length; ++r) {
+var s = i.defines[r], o = this._getValueFromDefineList(s.name, e);
+void 0 !== o && (n |= s._map(o));
+}
+return i.id + ":" + n;
+};
+t.prototype.getProgram = function(t, e, i) {
+var n = this.getKey(t, e), r = this._cache[n];
+if (r) return r;
+var o = this._templates[t], a = c(e), u = l(o.vert, e);
+u = a + h(u);
+var _ = l(o.frag, e);
+_ = a + h(_);
+var f = (r = new s.default.Program(this._device, {
+vert: u,
+frag: _
+})).link();
+if (f) {
+var d = u.split("\n"), m = _.split("\n"), p = Object.keys(e).length;
+f.forEach((function(t) {
+var e = t.line - 1, n = t.line - p, r = ("vs" === t.type ? d : m)[e], s = t.info || "Failed to compile " + t.type + " " + t.fileID + " (ln " + n + "): \n " + t.message + ": \n " + r;
+cc.error(i + " : " + s);
+}));
+}
+this._cache[n] = r;
+return r;
+};
+t.prototype._getValueFromDefineList = function(t, e) {
+for (var i = void 0, n = e.length - 1; n >= 0; n--) if (void 0 !== (i = e[n][t])) return i;
+};
+return t;
+})();
+r.default = u;
+n.exports = r.default;
+}), {
+"../gfx": 349
+} ],
+342: [ (function(t, e, i) {
+"use strict";
+i.__esModule = !0;
+i.default = void 0;
+var n = (function() {
+function t(t, e) {
+for (var i = 0; i < e.length; i++) {
+var n = e[i];
+n.enumerable = n.enumerable || !1;
+n.configurable = !0;
+"value" in n && (n.writable = !0);
+Object.defineProperty(t, n.key, n);
+}
+}
+return function(e, i, n) {
+i && t(e.prototype, i);
+n && t(e, n);
+return e;
+};
+})(), r = (function(t) {
+return t && t.__esModule ? t : {
+default: t
+};
+})(t("../config"));
+function s(t, e) {
+if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function");
+}
+var o = 0, a = (function() {
+function t(e, i) {
+var n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : 0;
+s(this, t);
+this._id = o++;
+this._stageIDs = r.default.stageIDs(e);
+this._passes = i;
+this._layer = n;
+}
+t.prototype.setStages = function(t) {
+this._stageIDs = r.default.stageIDs(t);
+};
+n(t, [ {
+key: "passes",
+get: function() {
+return this._passes;
+}
+}, {
+key: "stageIDs",
+get: function() {
+return this._stageIDs;
+}
+} ]);
+return t;
+})();
+i.default = a;
+e.exports = i.default;
+}), {
+"../config": 336
+} ],
+343: [ (function(t, e, i) {
+"use strict";
+i.__esModule = !0;
+i.default = void 0;
+var n = t("../../core/vmath"), r = (function(t) {
+return t && t.__esModule ? t : {
+default: t
+};
+})(t("../enums"));
+function s(t, e) {
+if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function");
+}
+var o = n.mat4.create(), a = 0, c = (function() {
+function t() {
+s(this, t);
+this._id = a++;
+this._priority = 0;
+this._rect = {
+x: 0,
+y: 0,
+w: 1,
+h: 1
+};
+this._color = n.color4.create(.3, .3, .3, 1);
+this._depth = 1;
+this._stencil = 0;
+this._clearFlags = r.default.CLEAR_COLOR | r.default.CLEAR_DEPTH;
+this._clearModel = null;
+this._matView = n.mat4.create();
+this._matProj = n.mat4.create();
+this._matViewProj = n.mat4.create();
+this._matInvViewProj = n.mat4.create();
+this._stages = [];
+this._cullingByID = !1;
+this._framebuffer = null;
+this._shadowLight = null;
+this._cullingMask = 4294967295;
+}
+t.prototype.getForward = function(t) {
+return n.vec3.set(t, -this._matView.m02, -this._matView.m06, -this._matView.m10);
+};
+t.prototype.getPosition = function(t) {
+n.mat4.invert(o, this._matView);
+return n.mat4.getTranslation(t, o);
+};
+return t;
+})();
+i.default = c;
+e.exports = i.default;
+}), {
+"../../core/vmath": 317,
+"../enums": 344
+} ],
+344: [ (function(t, e, i) {
+"use strict";
+i.__esModule = !0;
+i.default = {
+PROJ_PERSPECTIVE: 0,
+PROJ_ORTHO: 1,
+LIGHT_DIRECTIONAL: 0,
+LIGHT_POINT: 1,
+LIGHT_SPOT: 2,
+SHADOW_NONE: 0,
+SHADOW_HARD: 1,
+SHADOW_SOFT: 2,
+PARAM_INT: 0,
+PARAM_INT2: 1,
+PARAM_INT3: 2,
+PARAM_INT4: 3,
+PARAM_FLOAT: 4,
+PARAM_FLOAT2: 5,
+PARAM_FLOAT3: 6,
+PARAM_FLOAT4: 7,
+PARAM_COLOR3: 8,
+PARAM_COLOR4: 9,
+PARAM_MAT2: 10,
+PARAM_MAT3: 11,
+PARAM_MAT4: 12,
+PARAM_TEXTURE_2D: 13,
+PARAM_TEXTURE_CUBE: 14,
+CLEAR_COLOR: 1,
+CLEAR_DEPTH: 2,
+CLEAR_STENCIL: 4,
+CLEAR_SKYBOX: 8,
+BUFFER_VIEW_INT8: 0,
+BUFFER_VIEW_UINT8: 1,
+BUFFER_VIEW_INT16: 2,
+BUFFER_VIEW_UINT16: 3,
+BUFFER_VIEW_INT32: 4,
+BUFFER_VIEW_UINT32: 5,
+BUFFER_VIEW_FLOAT32: 6
+};
+e.exports = i.default;
+}), {} ],
+345: [ (function(t, e, i) {
+"use strict";
+i.__esModule = !0;
+i.default = void 0;
+var n, r, s = (function() {
+function t(t, e) {
+for (var i = 0; i < e.length; i++) {
+var n = e[i];
+n.enumerable = n.enumerable || !1;
+n.configurable = !0;
+"value" in n && (n.writable = !0);
+Object.defineProperty(t, n.key, n);
+}
+}
+return function(e, i, n) {
+i && t(e.prototype, i);
+n && t(e, n);
+return e;
+};
+})(), o = h(t("./state")), a = t("./enums"), c = h(t("./texture-2d")), l = h(t("./texture-cube"));
+function h(t) {
+return t && t.__esModule ? t : {
+default: t
+};
+}
+function u(t, e) {
+if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function");
+}
+var _ = ((n = {})[5124] = function(t, e, i) {
+t.uniform1i(e, i);
+}, n[5126] = function(t, e, i) {
+t.uniform1f(e, i);
+}, n[35664] = function(t, e, i) {
+t.uniform2fv(e, i);
+}, n[35665] = function(t, e, i) {
+t.uniform3fv(e, i);
+}, n[35666] = function(t, e, i) {
+t.uniform4fv(e, i);
+}, n[35667] = function(t, e, i) {
+t.uniform2iv(e, i);
+}, n[35668] = function(t, e, i) {
+t.uniform3iv(e, i);
+}, n[35669] = function(t, e, i) {
+t.uniform4iv(e, i);
+}, n[35670] = function(t, e, i) {
+t.uniform1i(e, i);
+}, n[35671] = function(t, e, i) {
+t.uniform2iv(e, i);
+}, n[35672] = function(t, e, i) {
+t.uniform3iv(e, i);
+}, n[35673] = function(t, e, i) {
+t.uniform4iv(e, i);
+}, n[35674] = function(t, e, i) {
+t.uniformMatrix2fv(e, !1, i);
+}, n[35675] = function(t, e, i) {
+t.uniformMatrix3fv(e, !1, i);
+}, n[35676] = function(t, e, i) {
+t.uniformMatrix4fv(e, !1, i);
+}, n[35678] = function(t, e, i) {
+t.uniform1i(e, i);
+}, n[35680] = function(t, e, i) {
+t.uniform1i(e, i);
+}, n), f = ((r = {})[5124] = function(t, e, i) {
+t.uniform1iv(e, i);
+}, r[5126] = function(t, e, i) {
+t.uniform1fv(e, i);
+}, r[35664] = function(t, e, i) {
+t.uniform2fv(e, i);
+}, r[35665] = function(t, e, i) {
+t.uniform3fv(e, i);
+}, r[35666] = function(t, e, i) {
+t.uniform4fv(e, i);
+}, r[35667] = function(t, e, i) {
+t.uniform2iv(e, i);
+}, r[35668] = function(t, e, i) {
+t.uniform3iv(e, i);
+}, r[35669] = function(t, e, i) {
+t.uniform4iv(e, i);
+}, r[35670] = function(t, e, i) {
+t.uniform1iv(e, i);
+}, r[35671] = function(t, e, i) {
+t.uniform2iv(e, i);
+}, r[35672] = function(t, e, i) {
+t.uniform3iv(e, i);
+}, r[35673] = function(t, e, i) {
+t.uniform4iv(e, i);
+}, r[35674] = function(t, e, i) {
+t.uniformMatrix2fv(e, !1, i);
+}, r[35675] = function(t, e, i) {
+t.uniformMatrix3fv(e, !1, i);
+}, r[35676] = function(t, e, i) {
+t.uniformMatrix4fv(e, !1, i);
+}, r[35678] = function(t, e, i) {
+t.uniform1iv(e, i);
+}, r[35680] = function(t, e, i) {
+t.uniform1iv(e, i);
+}, r);
+function d(t, e, i) {
+if (e.blend === i.blend) {
+if (!1 !== i.blend) {
+e.blendColor !== i.blendColor && t.blendColor((i.blendColor >> 24) / 255, (i.blendColor >> 16 & 255) / 255, (i.blendColor >> 8 & 255) / 255, (255 & i.blendColor) / 255);
+if (e.blendSep === i.blendSep) if (i.blendSep) {
+e.blendSrc === i.blendSrc && e.blendDst === i.blendDst && e.blendSrcAlpha === i.blendSrcAlpha && e.blendDstAlpha === i.blendDstAlpha || t.blendFuncSeparate(i.blendSrc, i.blendDst, i.blendSrcAlpha, i.blendDstAlpha);
+e.blendEq === i.blendEq && e.blendAlphaEq === i.blendAlphaEq || t.blendEquationSeparate(i.blendEq, i.blendAlphaEq);
+} else {
+e.blendSrc === i.blendSrc && e.blendDst === i.blendDst || t.blendFunc(i.blendSrc, i.blendDst);
+e.blendEq !== i.blendEq && t.blendEquation(i.blendEq);
+} else if (i.blendSep) {
+t.blendFuncSeparate(i.blendSrc, i.blendDst, i.blendSrcAlpha, i.blendDstAlpha);
+t.blendEquationSeparate(i.blendEq, i.blendAlphaEq);
+} else {
+t.blendFunc(i.blendSrc, i.blendDst);
+t.blendEquation(i.blendEq);
+}
+}
+} else {
+if (!i.blend) {
+t.disable(t.BLEND);
+return;
+}
+t.enable(t.BLEND);
+i.blendSrc !== a.enums.BLEND_CONSTANT_COLOR && i.blendSrc !== a.enums.BLEND_ONE_MINUS_CONSTANT_COLOR && i.blendDst !== a.enums.BLEND_CONSTANT_COLOR && i.blendDst !== a.enums.BLEND_ONE_MINUS_CONSTANT_COLOR || t.blendColor((i.blendColor >> 24) / 255, (i.blendColor >> 16 & 255) / 255, (i.blendColor >> 8 & 255) / 255, (255 & i.blendColor) / 255);
+if (i.blendSep) {
+t.blendFuncSeparate(i.blendSrc, i.blendDst, i.blendSrcAlpha, i.blendDstAlpha);
+t.blendEquationSeparate(i.blendEq, i.blendAlphaEq);
+} else {
+t.blendFunc(i.blendSrc, i.blendDst);
+t.blendEquation(i.blendEq);
+}
+}
+}
+function m(t, e, i) {
+if (e.depthTest === i.depthTest) {
+e.depthWrite !== i.depthWrite && t.depthMask(i.depthWrite);
+if (!1 !== i.depthTest) e.depthFunc !== i.depthFunc && t.depthFunc(i.depthFunc); else if (i.depthWrite) {
+i.depthTest = !0;
+i.depthFunc = a.enums.DS_FUNC_ALWAYS;
+t.enable(t.DEPTH_TEST);
+t.depthFunc(i.depthFunc);
+}
+} else {
+if (!i.depthTest) {
+t.disable(t.DEPTH_TEST);
+return;
+}
+t.enable(t.DEPTH_TEST);
+t.depthFunc(i.depthFunc);
+t.depthMask(i.depthWrite);
+}
+}
+function p(t, e, i) {
+if (i.stencilTest !== a.enums.STENCIL_INHERIT) if (i.stencilTest === e.stencilTest) {
+if (i.stencilTest !== a.enums.STENCIL_DISABLE) if (e.stencilSep === i.stencilSep) if (i.stencilSep) {
+e.stencilFuncFront === i.stencilFuncFront && e.stencilRefFront === i.stencilRefFront && e.stencilMaskFront === i.stencilMaskFront || t.stencilFuncSeparate(t.FRONT, i.stencilFuncFront, i.stencilRefFront, i.stencilMaskFront);
+e.stencilWriteMaskFront !== i.stencilWriteMaskFront && t.stencilMaskSeparate(t.FRONT, i.stencilWriteMaskFront);
+e.stencilFailOpFront === i.stencilFailOpFront && e.stencilZFailOpFront === i.stencilZFailOpFront && e.stencilZPassOpFront === i.stencilZPassOpFront || t.stencilOpSeparate(t.FRONT, i.stencilFailOpFront, i.stencilZFailOpFront, i.stencilZPassOpFront);
+e.stencilFuncBack === i.stencilFuncBack && e.stencilRefBack === i.stencilRefBack && e.stencilMaskBack === i.stencilMaskBack || t.stencilFuncSeparate(t.BACK, i.stencilFuncBack, i.stencilRefBack, i.stencilMaskBack);
+e.stencilWriteMaskBack !== i.stencilWriteMaskBack && t.stencilMaskSeparate(t.BACK, i.stencilWriteMaskBack);
+e.stencilFailOpBack === i.stencilFailOpBack && e.stencilZFailOpBack === i.stencilZFailOpBack && e.stencilZPassOpBack === i.stencilZPassOpBack || t.stencilOpSeparate(t.BACK, i.stencilFailOpBack, i.stencilZFailOpBack, i.stencilZPassOpBack);
+} else {
+e.stencilFuncFront === i.stencilFuncFront && e.stencilRefFront === i.stencilRefFront && e.stencilMaskFront === i.stencilMaskFront || t.stencilFunc(i.stencilFuncFront, i.stencilRefFront, i.stencilMaskFront);
+e.stencilWriteMaskFront !== i.stencilWriteMaskFront && t.stencilMask(i.stencilWriteMaskFront);
+e.stencilFailOpFront === i.stencilFailOpFront && e.stencilZFailOpFront === i.stencilZFailOpFront && e.stencilZPassOpFront === i.stencilZPassOpFront || t.stencilOp(i.stencilFailOpFront, i.stencilZFailOpFront, i.stencilZPassOpFront);
+} else if (i.stencilSep) {
+t.stencilFuncSeparate(t.FRONT, i.stencilFuncFront, i.stencilRefFront, i.stencilMaskFront);
+t.stencilMaskSeparate(t.FRONT, i.stencilWriteMaskFront);
+t.stencilOpSeparate(t.FRONT, i.stencilFailOpFront, i.stencilZFailOpFront, i.stencilZPassOpFront);
+t.stencilFuncSeparate(t.BACK, i.stencilFuncBack, i.stencilRefBack, i.stencilMaskBack);
+t.stencilMaskSeparate(t.BACK, i.stencilWriteMaskBack);
+t.stencilOpSeparate(t.BACK, i.stencilFailOpBack, i.stencilZFailOpBack, i.stencilZPassOpBack);
+} else {
+t.stencilFunc(i.stencilFuncFront, i.stencilRefFront, i.stencilMaskFront);
+t.stencilMask(i.stencilWriteMaskFront);
+t.stencilOp(i.stencilFailOpFront, i.stencilZFailOpFront, i.stencilZPassOpFront);
+}
+} else {
+if (i.stencilTest === a.enums.STENCIL_DISABLE) {
+t.disable(t.STENCIL_TEST);
+return;
+}
+t.enable(t.STENCIL_TEST);
+if (i.stencilSep) {
+t.stencilFuncSeparate(t.FRONT, i.stencilFuncFront, i.stencilRefFront, i.stencilMaskFront);
+t.stencilMaskSeparate(t.FRONT, i.stencilWriteMaskFront);
+t.stencilOpSeparate(t.FRONT, i.stencilFailOpFront, i.stencilZFailOpFront, i.stencilZPassOpFront);
+t.stencilFuncSeparate(t.BACK, i.stencilFuncBack, i.stencilRefBack, i.stencilMaskBack);
+t.stencilMaskSeparate(t.BACK, i.stencilWriteMaskBack);
+t.stencilOpSeparate(t.BACK, i.stencilFailOpBack, i.stencilZFailOpBack, i.stencilZPassOpBack);
+} else {
+t.stencilFunc(i.stencilFuncFront, i.stencilRefFront, i.stencilMaskFront);
+t.stencilMask(i.stencilWriteMaskFront);
+t.stencilOp(i.stencilFailOpFront, i.stencilZFailOpFront, i.stencilZPassOpFront);
+}
+}
+}
+function v(t, e, i) {
+if (e.cullMode !== i.cullMode) if (i.cullMode !== a.enums.CULL_NONE) {
+t.enable(t.CULL_FACE);
+t.cullFace(i.cullMode);
+} else t.disable(t.CULL_FACE);
+}
+function y(t, e, i, n) {
+var r = !1;
+if (-1 !== n.maxStream) {
+if (i.maxStream !== n.maxStream) r = !0; else if (i.program !== n.program) r = !0; else for (var s = 0; s < n.maxStream + 1; ++s) if (i.vertexBuffers[s] !== n.vertexBuffers[s] || i.vertexBufferOffsets[s] !== n.vertexBufferOffsets[s]) {
+r = !0;
+break;
+}
+if (r) {
+for (var o = 0; o < t._caps.maxVertexAttribs; ++o) t._newAttributes[o] = 0;
+for (var a = 0; a < n.maxStream + 1; ++a) {
+var c = n.vertexBuffers[a], l = n.vertexBufferOffsets[a];
+if (c && -1 !== c._glID) {
+e.bindBuffer(e.ARRAY_BUFFER, c._glID);
+for (var h = 0; h < n.program._attributes.length; ++h) {
+var u = n.program._attributes[h], _ = c._format.element(u.name);
+if (_) {
+if (0 === t._enabledAttributes[u.location]) {
+e.enableVertexAttribArray(u.location);
+t._enabledAttributes[u.location] = 1;
+}
+t._newAttributes[u.location] = 1;
+e.vertexAttribPointer(u.location, _.num, _.type, _.normalize, _.stride, _.offset + l * _.stride);
+} else console.warn("Can not find vertex attribute: " + u.name);
+}
+}
+}
+for (var f = 0; f < t._caps.maxVertexAttribs; ++f) if (t._enabledAttributes[f] !== t._newAttributes[f]) {
+e.disableVertexAttribArray(f);
+t._enabledAttributes[f] = 0;
+}
+}
+}
+}
+function g(t, e, i) {
+for (var n = 0; n < i.maxTextureSlot + 1; ++n) if (e.textureUnits[n] !== i.textureUnits[n]) {
+var r = i.textureUnits[n];
+if (r && -1 !== r._glID) {
+t.activeTexture(t.TEXTURE0 + n);
+t.bindTexture(r._target, r._glID);
+}
+}
+}
+function x(t, e, i) {
+var n = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : 0;
+i instanceof c.default ? t.framebufferTexture2D(t.FRAMEBUFFER, e, t.TEXTURE_2D, i._glID, 0) : i instanceof l.default ? t.framebufferTexture2D(t.FRAMEBUFFER, e, t.TEXTURE_CUBE_MAP_POSITIVE_X + n, i._glID, 0) : t.framebufferRenderbuffer(t.FRAMEBUFFER, e, t.RENDERBUFFER, i._glID);
+}
+var C = (function() {
+s(t, [ {
+key: "caps",
+get: function() {
+return this._caps;
+}
+} ]);
+function t(e, i) {
+u(this, t);
+var n = void 0;
+void 0 === (i = i || {}).alpha && (i.alpha = !1);
+void 0 === i.stencil && (i.stencil = !0);
+void 0 === i.depth && (i.depth = !0);
+void 0 === i.antialias && (i.antialias = !1);
+void 0 === i.preserveDrawingBuffer && (i.preserveDrawingBuffer = !1);
+try {
+n = e.getContext("webgl", i) || e.getContext("experimental-webgl", i) || e.getContext("webkit-3d", i) || e.getContext("moz-webgl", i);
+} catch (t) {
+console.error(t);
+return;
+}
+n || console.error("This device does not support webgl");
+this._gl = n;
+this._extensions = {};
+this._caps = {};
+this._stats = {
+texture: 0,
+vb: 0,
+ib: 0,
+drawcalls: 0
+};
+this._initExtensions([ "EXT_texture_filter_anisotropic", "EXT_shader_texture_lod", "OES_standard_derivatives", "OES_texture_float", "OES_texture_float_linear", "OES_texture_half_float", "OES_texture_half_float_linear", "OES_vertex_array_object", "WEBGL_compressed_texture_atc", "WEBGL_compressed_texture_etc", "WEBGL_compressed_texture_etc1", "WEBGL_compressed_texture_pvrtc", "WEBGL_compressed_texture_s3tc", "WEBGL_depth_texture", "WEBGL_draw_buffers" ]);
+this._initCaps();
+this._initStates();
+o.default.initDefault(this);
+this._current = new o.default(this);
+this._next = new o.default(this);
+this._uniforms = {};
+this._vx = this._vy = this._vw = this._vh = 0;
+this._sx = this._sy = this._sw = this._sh = 0;
+this._framebuffer = null;
+this._enabledAttributes = new Array(this._caps.maxVertexAttribs);
+this._newAttributes = new Array(this._caps.maxVertexAttribs);
+for (var r = 0; r < this._caps.maxVertexAttribs; ++r) {
+this._enabledAttributes[r] = 0;
+this._newAttributes[r] = 0;
+}
+}
+t.prototype._initExtensions = function(t) {
+for (var e = this._gl, i = 0; i < t.length; ++i) for (var n = t[i], r = [ "", "WEBKIT_", "MOZ_" ], s = 0; s < r.length; s++) try {
+var o = e.getExtension(r[s] + n);
+if (o) {
+this._extensions[n] = o;
+break;
+}
+} catch (t) {
+console.error(t);
+}
+};
+t.prototype._initCaps = function() {
+var t = this._gl, e = this.ext("WEBGL_draw_buffers");
+this._caps.maxVertexStreams = 4;
+this._caps.maxVertexTextures = t.getParameter(t.MAX_VERTEX_TEXTURE_IMAGE_UNITS);
+this._caps.maxFragUniforms = t.getParameter(t.MAX_FRAGMENT_UNIFORM_VECTORS);
+this._caps.maxTextureUnits = t.getParameter(t.MAX_TEXTURE_IMAGE_UNITS);
+this._caps.maxVertexAttribs = t.getParameter(t.MAX_VERTEX_ATTRIBS);
+this._caps.maxTextureSize = t.getParameter(t.MAX_TEXTURE_SIZE);
+this._caps.maxDrawBuffers = e ? t.getParameter(e.MAX_DRAW_BUFFERS_WEBGL) : 1;
+this._caps.maxColorAttachments = e ? t.getParameter(e.MAX_COLOR_ATTACHMENTS_WEBGL) : 1;
+};
+t.prototype._initStates = function() {
+var t = this._gl;
+t.disable(t.BLEND);
+t.blendFunc(t.ONE, t.ZERO);
+t.blendEquation(t.FUNC_ADD);
+t.blendColor(1, 1, 1, 1);
+t.colorMask(!0, !0, !0, !0);
+t.enable(t.CULL_FACE);
+t.cullFace(t.BACK);
+t.disable(t.DEPTH_TEST);
+t.depthFunc(t.LESS);
+t.depthMask(!1);
+t.disable(t.POLYGON_OFFSET_FILL);
+t.depthRange(0, 1);
+t.disable(t.STENCIL_TEST);
+t.stencilFunc(t.ALWAYS, 0, 255);
+t.stencilMask(255);
+t.stencilOp(t.KEEP, t.KEEP, t.KEEP);
+t.clearDepth(1);
+t.clearColor(0, 0, 0, 0);
+t.clearStencil(0);
+t.disable(t.SCISSOR_TEST);
+};
+t.prototype._restoreTexture = function(t) {
+var e = this._gl, i = this._current.textureUnits[t];
+i && -1 !== i._glID ? e.bindTexture(i._target, i._glID) : e.bindTexture(e.TEXTURE_2D, null);
+};
+t.prototype._restoreIndexBuffer = function() {
+var t = this._gl, e = this._current.indexBuffer;
+e && -1 !== e._glID ? t.bindBuffer(t.ELEMENT_ARRAY_BUFFER, e._glID) : t.bindBuffer(t.ELEMENT_ARRAY_BUFFER, null);
+};
+t.prototype.ext = function(t) {
+return this._extensions[t];
+};
+t.prototype.allowFloatTexture = function() {
+return null != this.ext("OES_texture_float");
+};
+t.prototype.setFrameBuffer = function(t) {
+if (this._framebuffer !== t) {
+this._framebuffer = t;
+var e = this._gl;
+if (null !== t) {
+e.bindFramebuffer(e.FRAMEBUFFER, t._glID);
+for (var i = t._colors.length, n = 0; n < i; ++n) {
+var r = t._colors[n];
+x(e, e.COLOR_ATTACHMENT0 + n, r);
+}
+for (var s = i; s < this._caps.maxColorAttachments; ++s) e.framebufferTexture2D(e.FRAMEBUFFER, e.COLOR_ATTACHMENT0 + s, e.TEXTURE_2D, null, 0);
+t._depth && x(e, e.DEPTH_ATTACHMENT, t._depth);
+t._stencil && x(e, e.STENCIL_ATTACHMENT, t._stencil);
+t._depthStencil && x(e, e.DEPTH_STENCIL_ATTACHMENT, t._depthStencil);
+} else e.bindFramebuffer(e.FRAMEBUFFER, null);
+}
+};
+t.prototype.setViewport = function(t, e, i, n) {
+if (this._vx !== t || this._vy !== e || this._vw !== i || this._vh !== n) {
+this._gl.viewport(t, e, i, n);
+this._vx = t;
+this._vy = e;
+this._vw = i;
+this._vh = n;
+}
+};
+t.prototype.setScissor = function(t, e, i, n) {
+if (this._sx !== t || this._sy !== e || this._sw !== i || this._sh !== n) {
+this._gl.scissor(t, e, i, n);
+this._sx = t;
+this._sy = e;
+this._sw = i;
+this._sh = n;
+}
+};
+t.prototype.clear = function(t) {
+if (void 0 !== t.color || void 0 !== t.depth || void 0 !== t.stencil) {
+var e = this._gl, i = 0;
+if (void 0 !== t.color) {
+i |= e.COLOR_BUFFER_BIT;
+e.clearColor(t.color[0], t.color[1], t.color[2], t.color[3]);
+}
+if (void 0 !== t.depth) {
+i |= e.DEPTH_BUFFER_BIT;
+e.clearDepth(t.depth);
+e.enable(e.DEPTH_TEST);
+e.depthMask(!0);
+e.depthFunc(e.ALWAYS);
+}
+if (void 0 !== t.stencil) {
+i |= e.STENCIL_BUFFER_BIT;
+e.clearStencil(t.stencil);
+}
+e.clear(i);
+if (void 0 !== t.depth) if (!1 === this._current.depthTest) e.disable(e.DEPTH_TEST); else {
+!1 === this._current.depthWrite && e.depthMask(!1);
+this._current.depthFunc !== a.enums.DS_FUNC_ALWAYS && e.depthFunc(this._current.depthFunc);
+}
+}
+};
+t.prototype.enableBlend = function() {
+this._next.blend = !0;
+};
+t.prototype.enableDepthTest = function() {
+this._next.depthTest = !0;
+};
+t.prototype.enableDepthWrite = function() {
+this._next.depthWrite = !0;
+};
+t.prototype.setStencilTest = function(t) {
+this._next.stencilTest = t;
+};
+t.prototype.setStencilFunc = function(t, e, i) {
+this._next.stencilSep = !1;
+this._next.stencilFuncFront = this._next.stencilFuncBack = t;
+this._next.stencilRefFront = this._next.stencilRefBack = e;
+this._next.stencilMaskFront = this._next.stencilMaskBack = i;
+};
+t.prototype.setStencilFuncFront = function(t, e, i) {
+this._next.stencilSep = !0;
+this._next.stencilFuncFront = t;
+this._next.stencilRefFront = e;
+this._next.stencilMaskFront = i;
+};
+t.prototype.setStencilFuncBack = function(t, e, i) {
+this._next.stencilSep = !0;
+this._next.stencilFuncBack = t;
+this._next.stencilRefBack = e;
+this._next.stencilMaskBack = i;
+};
+t.prototype.setStencilOp = function(t, e, i, n) {
+this._next.stencilFailOpFront = this._next.stencilFailOpBack = t;
+this._next.stencilZFailOpFront = this._next.stencilZFailOpBack = e;
+this._next.stencilZPassOpFront = this._next.stencilZPassOpBack = i;
+this._next.stencilWriteMaskFront = this._next.stencilWriteMaskBack = n;
+};
+t.prototype.setStencilOpFront = function(t, e, i, n) {
+this._next.stencilSep = !0;
+this._next.stencilFailOpFront = t;
+this._next.stencilZFailOpFront = e;
+this._next.stencilZPassOpFront = i;
+this._next.stencilWriteMaskFront = n;
+};
+t.prototype.setStencilOpBack = function(t, e, i, n) {
+this._next.stencilSep = !0;
+this._next.stencilFailOpBack = t;
+this._next.stencilZFailOpBack = e;
+this._next.stencilZPassOpBack = i;
+this._next.stencilWriteMaskBack = n;
+};
+t.prototype.setDepthFunc = function(t) {
+this._next.depthFunc = t;
+};
+t.prototype.setBlendColor32 = function(t) {
+this._next.blendColor = t;
+};
+t.prototype.setBlendColor = function(t, e, i, n) {
+this._next.blendColor = (255 * t << 24 | 255 * e << 16 | 255 * i << 8 | 255 * n) >>> 0;
+};
+t.prototype.setBlendFunc = function(t, e) {
+this._next.blendSep = !1;
+this._next.blendSrc = t;
+this._next.blendDst = e;
+};
+t.prototype.setBlendFuncSep = function(t, e, i, n) {
+this._next.blendSep = !0;
+this._next.blendSrc = t;
+this._next.blendDst = e;
+this._next.blendSrcAlpha = i;
+this._next.blendDstAlpha = n;
+};
+t.prototype.setBlendEq = function(t) {
+this._next.blendSep = !1;
+this._next.blendEq = t;
+};
+t.prototype.setBlendEqSep = function(t, e) {
+this._next.blendSep = !0;
+this._next.blendEq = t;
+this._next.blendAlphaEq = e;
+};
+t.prototype.setCullMode = function(t) {
+this._next.cullMode = t;
+};
+t.prototype.setVertexBuffer = function(t, e) {
+var i = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : 0;
+this._next.vertexBuffers[t] = e;
+this._next.vertexBufferOffsets[t] = i;
+this._next.maxStream < t && (this._next.maxStream = t);
+};
+t.prototype.setIndexBuffer = function(t) {
+this._next.indexBuffer = t;
+};
+t.prototype.setProgram = function(t) {
+this._next.program = t;
+};
+t.prototype.setTexture = function(t, e, i) {
+if (i >= this._caps.maxTextureUnits) console.warn("Can not set texture " + t + " at stage " + i + ", max texture exceed: " + this._caps.maxTextureUnits); else {
+this._next.textureUnits[i] = e;
+this.setUniform(t, i);
+this._next.maxTextureSlot < i && (this._next.maxTextureSlot = i);
+}
+};
+t.prototype.setTextureArray = function(t, e, i) {
+var n = e.length;
+if (n >= this._caps.maxTextureUnits) console.warn("Can not set " + n + " textures for " + t + ", max texture exceed: " + this._caps.maxTextureUnits); else {
+for (var r = 0; r < n; ++r) {
+var s = i[r];
+this._next.textureUnits[s] = e[r];
+}
+this.setUniform(t, i);
+}
+};
+t.prototype.setUniform = function(t, e) {
+var i = this._uniforms[t], n = !1, r = !1, s = !1, o = !1;
+do {
+if (!i) break;
+s = Array.isArray(e) || e instanceof Float32Array;
+o = e instanceof Int32Array;
+r = s || o;
+if (i.isArray !== r) break;
+if (i.isArray && i.value.length !== e.length) break;
+n = !0;
+} while (0);
+if (n) {
+var a = i.value, c = !1;
+if (i.isArray) {
+for (var l = 0, h = a.length; l < h; l++) if (a[l] !== e[l]) {
+c = !0;
+a[l] = e[l];
+}
+} else if (a !== e) {
+c = !0;
+i.value = e;
+}
+c && (i.dirty = !0);
+} else {
+var u = e;
+s ? u = new Float32Array(e) : o && (u = new Int32Array(e));
+i = {
+dirty: !0,
+value: u,
+isArray: r
+};
+}
+this._uniforms[t] = i;
+};
+t.prototype.setUniformDirectly = function(t, e) {
+var i = this._uniforms[t];
+i || (this._uniforms[t] = i = {});
+i.dirty = !0;
+i.value = e;
+};
+t.prototype.setPrimitiveType = function(t) {
+this._next.primitiveType = t;
+};
+t.prototype.draw = function(t, e) {
+var i = this._gl, n = this._current, r = this._next;
+d(i, n, r);
+m(i, n, r);
+p(i, n, r);
+v(i, n, r);
+y(this, i, n, r);
+n.indexBuffer !== r.indexBuffer && i.bindBuffer(i.ELEMENT_ARRAY_BUFFER, r.indexBuffer && -1 !== r.indexBuffer._glID ? r.indexBuffer._glID : null);
+var s = !1;
+if (n.program !== r.program) {
+r.program._linked ? i.useProgram(r.program._glID) : console.warn("Failed to use program: has not linked yet.");
+s = !0;
+}
+g(i, n, r);
+for (var o = 0; o < r.program._uniforms.length; ++o) {
+var a = r.program._uniforms[o], c = this._uniforms[a.name];
+if (c && (s || c.dirty)) {
+c.dirty = !1;
+var l = void 0 === a.size ? _[a.type] : f[a.type];
+l ? l(i, a.location, c.value) : console.warn("Can not find commit function for uniform " + a.name);
+}
+}
+e && (r.indexBuffer ? i.drawElements(this._next.primitiveType, e, r.indexBuffer._format, t * r.indexBuffer._bytesPerIndex) : i.drawArrays(this._next.primitiveType, t, e));
+this._stats.drawcalls += 1;
+n.set(r);
+r.reset();
+};
+return t;
+})();
+i.default = C;
+e.exports = i.default;
+}), {
+"./enums": 346,
+"./state": 353,
+"./texture-2d": 354,
+"./texture-cube": 355
+} ],
+346: [ (function(t, e, i) {
+"use strict";
+i.__esModule = !0;
+i.attrTypeBytes = function(t) {
+if (t === s.ATTR_TYPE_INT8) return 1;
+if (t === s.ATTR_TYPE_UINT8) return 1;
+if (t === s.ATTR_TYPE_INT16) return 2;
+if (t === s.ATTR_TYPE_UINT16) return 2;
+if (t === s.ATTR_TYPE_INT32) return 4;
+if (t === s.ATTR_TYPE_UINT32) return 4;
+if (t === s.ATTR_TYPE_FLOAT32) return 4;
+console.warn("Unknown ATTR_TYPE: " + t);
+return 0;
+};
+i.glFilter = function(t, e) {
+var i = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : -1, r = n[e][i + 1];
+if (void 0 === r) {
+console.warn("Unknown FILTER: " + e);
+return -1 === i ? t.LINEAR : t.LINEAR_MIPMAP_LINEAR;
+}
+return r;
+};
+i.glTextureFmt = function(t) {
+var e = r[t];
+if (void 0 === e) {
+console.warn("Unknown TEXTURE_FMT: " + t);
+return r[s.TEXTURE_FMT_RGBA8];
+}
+return e;
+};
+var n = [ [ 9728, 9984, 9986 ], [ 9729, 9985, 9987 ] ], r = [ {
+format: 6407,
+internalFormat: 33776,
+pixelType: null
+}, {
+format: 6408,
+internalFormat: 33777,
+pixelType: null
+}, {
+format: 6408,
+internalFormat: 33778,
+pixelType: null
+}, {
+format: 6408,
+internalFormat: 33779,
+pixelType: null
+}, {
+format: 6407,
+internalFormat: 36196,
+pixelType: null
+}, {
+format: 6407,
+internalFormat: 35841,
+pixelType: null
+}, {
+format: 6408,
+internalFormat: 35843,
+pixelType: null
+}, {
+format: 6407,
+internalFormat: 35840,
+pixelType: null
+}, {
+format: 6408,
+internalFormat: 35842,
+pixelType: null
+}, {
+format: 6406,
+internalFormat: 6406,
+pixelType: 5121
+}, {
+format: 6409,
+internalFormat: 6409,
+pixelType: 5121
+}, {
+format: 6410,
+internalFormat: 6410,
+pixelType: 5121
+}, {
+format: 6407,
+internalFormat: 6407,
+pixelType: 33635
+}, {
+format: 6408,
+internalFormat: 6408,
+pixelType: 32820
+}, {
+format: 6408,
+internalFormat: 6408,
+pixelType: 32819
+}, {
+format: 6407,
+internalFormat: 6407,
+pixelType: 5121
+}, {
+format: 6408,
+internalFormat: 6408,
+pixelType: 5121
+}, {
+format: 6407,
+internalFormat: 6407,
+pixelType: 36193
+}, {
+format: 6408,
+internalFormat: 6408,
+pixelType: 36193
+}, {
+format: 6407,
+internalFormat: 6407,
+pixelType: 5126
+}, {
+format: 6408,
+internalFormat: 6408,
+pixelType: 5126
+}, {
+format: null,
+internalFormat: null,
+pixelType: null
+}, {
+format: null,
+internalFormat: null,
+pixelType: null
+}, {
+format: null,
+internalFormat: null,
+pixelType: null
+}, {
+format: null,
+internalFormat: null,
+pixelType: null
+}, {
+format: 6402,
+internalFormat: 6402,
+pixelType: 5123
+}, {
+format: 6402,
+internalFormat: 6402,
+pixelType: 5125
+}, {
+format: 6402,
+internalFormat: 6402,
+pixelType: 5125
+}, {
+format: 6407,
+internalFormat: 37492,
+pixelType: null
+}, {
+format: 6408,
+internalFormat: 37496,
+pixelType: null
+} ], s = i.enums = {
+USAGE_STATIC: 35044,
+USAGE_DYNAMIC: 35048,
+USAGE_STREAM: 35040,
+INDEX_FMT_UINT8: 5121,
+INDEX_FMT_UINT16: 5123,
+INDEX_FMT_UINT32: 5125,
+ATTR_POSITION: "a_position",
+ATTR_NORMAL: "a_normal",
+ATTR_TANGENT: "a_tangent",
+ATTR_BITANGENT: "a_bitangent",
+ATTR_WEIGHTS: "a_weights",
+ATTR_JOINTS: "a_joints",
+ATTR_COLOR: "a_color",
+ATTR_COLOR0: "a_color0",
+ATTR_COLOR1: "a_color1",
+ATTR_UV: "a_uv",
+ATTR_UV0: "a_uv0",
+ATTR_UV1: "a_uv1",
+ATTR_UV2: "a_uv2",
+ATTR_UV3: "a_uv3",
+ATTR_UV4: "a_uv4",
+ATTR_UV5: "a_uv5",
+ATTR_UV6: "a_uv6",
+ATTR_UV7: "a_uv7",
+ATTR_TYPE_INT8: 5120,
+ATTR_TYPE_UINT8: 5121,
+ATTR_TYPE_INT16: 5122,
+ATTR_TYPE_UINT16: 5123,
+ATTR_TYPE_INT32: 5124,
+ATTR_TYPE_UINT32: 5125,
+ATTR_TYPE_FLOAT32: 5126,
+FILTER_NEAREST: 0,
+FILTER_LINEAR: 1,
+WRAP_REPEAT: 10497,
+WRAP_CLAMP: 33071,
+WRAP_MIRROR: 33648,
+TEXTURE_FMT_RGB_DXT1: 0,
+TEXTURE_FMT_RGBA_DXT1: 1,
+TEXTURE_FMT_RGBA_DXT3: 2,
+TEXTURE_FMT_RGBA_DXT5: 3,
+TEXTURE_FMT_RGB_ETC1: 4,
+TEXTURE_FMT_RGB_PVRTC_2BPPV1: 5,
+TEXTURE_FMT_RGBA_PVRTC_2BPPV1: 6,
+TEXTURE_FMT_RGB_PVRTC_4BPPV1: 7,
+TEXTURE_FMT_RGBA_PVRTC_4BPPV1: 8,
+TEXTURE_FMT_A8: 9,
+TEXTURE_FMT_L8: 10,
+TEXTURE_FMT_L8_A8: 11,
+TEXTURE_FMT_R5_G6_B5: 12,
+TEXTURE_FMT_R5_G5_B5_A1: 13,
+TEXTURE_FMT_R4_G4_B4_A4: 14,
+TEXTURE_FMT_RGB8: 15,
+TEXTURE_FMT_RGBA8: 16,
+TEXTURE_FMT_RGB16F: 17,
+TEXTURE_FMT_RGBA16F: 18,
+TEXTURE_FMT_RGB32F: 19,
+TEXTURE_FMT_RGBA32F: 20,
+TEXTURE_FMT_R32F: 21,
+TEXTURE_FMT_111110F: 22,
+TEXTURE_FMT_SRGB: 23,
+TEXTURE_FMT_SRGBA: 24,
+TEXTURE_FMT_D16: 25,
+TEXTURE_FMT_D32: 26,
+TEXTURE_FMT_D24S8: 27,
+TEXTURE_FMT_RGB_ETC2: 28,
+TEXTURE_FMT_RGBA_ETC2: 29,
+DS_FUNC_NEVER: 512,
+DS_FUNC_LESS: 513,
+DS_FUNC_EQUAL: 514,
+DS_FUNC_LEQUAL: 515,
+DS_FUNC_GREATER: 516,
+DS_FUNC_NOTEQUAL: 517,
+DS_FUNC_GEQUAL: 518,
+DS_FUNC_ALWAYS: 519,
+RB_FMT_RGBA4: 32854,
+RB_FMT_RGB5_A1: 32855,
+RB_FMT_RGB565: 36194,
+RB_FMT_D16: 33189,
+RB_FMT_S8: 36168,
+RB_FMT_D24S8: 34041,
+BLEND_FUNC_ADD: 32774,
+BLEND_FUNC_SUBTRACT: 32778,
+BLEND_FUNC_REVERSE_SUBTRACT: 32779,
+BLEND_ZERO: 0,
+BLEND_ONE: 1,
+BLEND_SRC_COLOR: 768,
+BLEND_ONE_MINUS_SRC_COLOR: 769,
+BLEND_DST_COLOR: 774,
+BLEND_ONE_MINUS_DST_COLOR: 775,
+BLEND_SRC_ALPHA: 770,
+BLEND_ONE_MINUS_SRC_ALPHA: 771,
+BLEND_DST_ALPHA: 772,
+BLEND_ONE_MINUS_DST_ALPHA: 773,
+BLEND_CONSTANT_COLOR: 32769,
+BLEND_ONE_MINUS_CONSTANT_COLOR: 32770,
+BLEND_CONSTANT_ALPHA: 32771,
+BLEND_ONE_MINUS_CONSTANT_ALPHA: 32772,
+BLEND_SRC_ALPHA_SATURATE: 776,
+STENCIL_DISABLE: 0,
+STENCIL_ENABLE: 1,
+STENCIL_INHERIT: 2,
+STENCIL_OP_KEEP: 7680,
+STENCIL_OP_ZERO: 0,
+STENCIL_OP_REPLACE: 7681,
+STENCIL_OP_INCR: 7682,
+STENCIL_OP_INCR_WRAP: 34055,
+STENCIL_OP_DECR: 7683,
+STENCIL_OP_DECR_WRAP: 34056,
+STENCIL_OP_INVERT: 5386,
+CULL_NONE: 0,
+CULL_FRONT: 1028,
+CULL_BACK: 1029,
+CULL_FRONT_AND_BACK: 1032,
+PT_POINTS: 0,
+PT_LINES: 1,
+PT_LINE_LOOP: 2,
+PT_LINE_STRIP: 3,
+PT_TRIANGLES: 4,
+PT_TRIANGLE_STRIP: 5,
+PT_TRIANGLE_FAN: 6
+};
+}), {} ],
+347: [ (function(t, e, i) {
+"use strict";
+i.__esModule = !0;
+function n(t, e) {
+if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function");
+}
+var r = (function() {
+function t(e, i, r, s) {
+n(this, t);
+this._device = e;
+this._width = i;
+this._height = r;
+this._colors = s.colors || [];
+this._depth = s.depth || null;
+this._stencil = s.stencil || null;
+this._depthStencil = s.depthStencil || null;
+this._glID = e._gl.createFramebuffer();
+}
+t.prototype.destroy = function() {
+if (null !== this._glID) {
+this._device._gl.deleteFramebuffer(this._glID);
+this._glID = null;
+} else console.error("The frame-buffer already destroyed");
+};
+return t;
+})();
+i.default = r;
+e.exports = i.default;
+}), {} ],
+348: [ (function(t, e, i) {
+"use strict";
+i.__esModule = !0;
+var n = (function() {
+function t(t, e) {
+for (var i = 0; i < e.length; i++) {
+var n = e[i];
+n.enumerable = n.enumerable || !1;
+n.configurable = !0;
+"value" in n && (n.writable = !0);
+Object.defineProperty(t, n.key, n);
+}
+}
+return function(e, i, n) {
+i && t(e.prototype, i);
+n && t(e, n);
+return e;
+};
+})(), r = t("./enums");
+function s(t, e) {
+if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function");
+}
+var o = (function() {
+function t(e, i, n, o, a) {
+s(this, t);
+this._device = e;
+this._format = i;
+this._usage = n;
+this._numIndices = a;
+this._bytesPerIndex = 0;
+i === r.enums.INDEX_FMT_UINT8 ? this._bytesPerIndex = 1 : i === r.enums.INDEX_FMT_UINT16 ? this._bytesPerIndex = 2 : i === r.enums.INDEX_FMT_UINT32 && (this._bytesPerIndex = 4);
+this._bytes = this._bytesPerIndex * a;
+this._glID = e._gl.createBuffer();
+this.update(0, o);
+e._stats.ib += this._bytes;
+}
+t.prototype.destroy = function() {
+if (-1 !== this._glID) {
+this._device._gl.deleteBuffer(this._glID);
+this._device._stats.ib -= this.bytes;
+this._glID = -1;
+} else console.error("The buffer already destroyed");
+};
+t.prototype.update = function(t, e) {
+if (-1 !== this._glID) if (e && e.byteLength + t > this._bytes) console.error("Failed to update data, bytes exceed."); else {
+var i = this._device._gl, n = this._usage;
+i.bindBuffer(i.ELEMENT_ARRAY_BUFFER, this._glID);
+e ? t ? i.bufferSubData(i.ELEMENT_ARRAY_BUFFER, t, e) : i.bufferData(i.ELEMENT_ARRAY_BUFFER, e, n) : this._bytes ? i.bufferData(i.ELEMENT_ARRAY_BUFFER, this._bytes, n) : console.warn("bufferData should not submit 0 bytes data");
+this._device._restoreIndexBuffer();
+} else console.error("The buffer is destroyed");
+};
+n(t, [ {
+key: "count",
+get: function() {
+return this._numIndices;
+}
+} ]);
+return t;
+})();
+i.default = o;
+e.exports = i.default;
+}), {
+"./enums": 346
+} ],
+349: [ (function(t, e, i) {
+"use strict";
+i.__esModule = !0;
+var n = t("./enums"), r = d(t("./vertex-format")), s = d(t("./index-buffer")), o = d(t("./vertex-buffer")), a = d(t("./program")), c = d(t("./texture")), l = d(t("./texture-2d")), h = d(t("./texture-cube")), u = d(t("./render-buffer")), _ = d(t("./frame-buffer")), f = d(t("./device"));
+function d(t) {
+return t && t.__esModule ? t : {
+default: t
+};
+}
+var m = {
+VertexFormat: r.default,
+IndexBuffer: s.default,
+VertexBuffer: o.default,
+Program: a.default,
+Texture: c.default,
+Texture2D: l.default,
+TextureCube: h.default,
+RenderBuffer: u.default,
+FrameBuffer: _.default,
+Device: f.default,
+attrTypeBytes: n.attrTypeBytes,
+glFilter: n.glFilter,
+glTextureFmt: n.glTextureFmt
+};
+Object.assign(m, n.enums);
+i.default = m;
+cc.gfx = m;
+e.exports = i.default;
+}), {
+"./device": 345,
+"./enums": 346,
+"./frame-buffer": 347,
+"./index-buffer": 348,
+"./program": 351,
+"./render-buffer": 352,
+"./texture": 356,
+"./texture-2d": 354,
+"./texture-cube": 355,
+"./vertex-buffer": 357,
+"./vertex-format": 358
+} ],
+350: [ (function(t, e, i) {
+"use strict";
+i.__esModule = !0;
+i.isPow2 = function(t) {
+return !(t & t - 1 || !t);
+};
+}), {} ],
+351: [ (function(t, e, i) {
+"use strict";
+i.__esModule = !0;
+var n = (function() {
+function t(t, e) {
+for (var i = 0; i < e.length; i++) {
+var n = e[i];
+n.enumerable = n.enumerable || !1;
+n.configurable = !0;
+"value" in n && (n.writable = !0);
+Object.defineProperty(t, n.key, n);
+}
+}
+return function(e, i, n) {
+i && t(e.prototype, i);
+n && t(e, n);
+return e;
+};
+})();
+function r(t, e) {
+if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function");
+}
+var s = 0;
+function o(t, e, i) {
+i.split("\n").forEach((function(i) {
+if (!(i.length < 5)) {
+var n = /^ERROR:\s+(\d+):(\d+):\s*(.*)$/.exec(i);
+n ? t.push({
+type: e,
+fileID: 0 | n[1],
+line: 0 | n[2],
+message: n[3].trim()
+}) : i.length > 0 && t.push({
+type: e,
+fileID: -1,
+line: 0,
+message: i
+});
+}
+}));
+}
+var a = (function() {
+function t(e, i) {
+r(this, t);
+this._device = e;
+this._attributes = [];
+this._uniforms = [];
+this._samplers = [];
+this._errors = [];
+this._linked = !1;
+this._vertSource = i.vert;
+this._fragSource = i.frag;
+this._glID = null;
+this._id = s++;
+}
+t.prototype.link = function() {
+if (!this._linked) {
+var t = this._device._gl, e = c(t, t.VERTEX_SHADER, this._vertSource), i = c(t, t.FRAGMENT_SHADER, this._fragSource), n = t.createProgram();
+t.attachShader(n, e);
+t.attachShader(n, i);
+t.linkProgram(n);
+var r = !1, s = this._errors;
+if (!t.getShaderParameter(e, t.COMPILE_STATUS)) {
+o(s, "vs", t.getShaderInfoLog(e));
+r = !0;
+}
+if (!t.getShaderParameter(i, t.COMPILE_STATUS)) {
+o(s, "fs", t.getShaderInfoLog(i));
+r = !0;
+}
+t.deleteShader(e);
+t.deleteShader(i);
+if (r) return s;
+if (!t.getProgramParameter(n, t.LINK_STATUS)) {
+s.push({
+info: "Failed to link shader program: " + t.getProgramInfoLog(n)
+});
+return s;
+}
+this._glID = n;
+for (var a = t.getProgramParameter(n, t.ACTIVE_ATTRIBUTES), l = 0; l < a; ++l) {
+var h = t.getActiveAttrib(n, l), u = t.getAttribLocation(n, h.name);
+this._attributes.push({
+name: h.name,
+location: u,
+type: h.type
+});
+}
+for (var _ = t.getProgramParameter(n, t.ACTIVE_UNIFORMS), f = 0; f < _; ++f) {
+var d = t.getActiveUniform(n, f), m = d.name, p = t.getUniformLocation(n, m), v = "[0]" === m.substr(m.length - 3);
+v && (m = m.substr(0, m.length - 3));
+var y = {
+name: m,
+location: p,
+type: d.type,
+size: v ? d.size : void 0
+};
+this._uniforms.push(y);
+}
+this._linked = !0;
+}
+};
+t.prototype.destroy = function() {
+this._device._gl.deleteProgram(this._glID);
+this._linked = !1;
+this._glID = null;
+this._attributes = [];
+this._uniforms = [];
+this._samplers = [];
+};
+n(t, [ {
+key: "id",
+get: function() {
+return this._id;
+}
+} ]);
+return t;
+})();
+i.default = a;
+function c(t, e, i) {
+var n = t.createShader(e);
+t.shaderSource(n, i);
+t.compileShader(n);
+return n;
+}
+e.exports = i.default;
+}), {} ],
+352: [ (function(t, e, i) {
+"use strict";
+i.__esModule = !0;
+function n(t, e) {
+if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function");
+}
+var r = (function() {
+function t(e, i, r, s) {
+n(this, t);
+this._device = e;
+this._format = i;
+this._glID = e._gl.createRenderbuffer();
+this.update(r, s);
+}
+t.prototype.update = function(t, e) {
+this._width = t;
+this._height = e;
+var i = this._device._gl;
+i.bindRenderbuffer(i.RENDERBUFFER, this._glID);
+i.renderbufferStorage(i.RENDERBUFFER, this._format, t, e);
+i.bindRenderbuffer(i.RENDERBUFFER, null);
+};
+t.prototype.destroy = function() {
+if (null !== this._glID) {
+var t = this._device._gl;
+t.bindRenderbuffer(t.RENDERBUFFER, null);
+t.deleteRenderbuffer(this._glID);
+this._glID = null;
+} else console.error("The render-buffer already destroyed");
+};
+return t;
+})();
+i.default = r;
+e.exports = i.default;
+}), {} ],
+353: [ (function(t, e, i) {
+"use strict";
+i.__esModule = !0;
+i.default = void 0;
+var n = t("./enums");
+function r(t, e) {
+if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function");
+}
+var s = {
+blend: !1,
+blendSep: !1,
+blendColor: 4294967295,
+blendEq: n.enums.BLEND_FUNC_ADD,
+blendAlphaEq: n.enums.BLEND_FUNC_ADD,
+blendSrc: n.enums.BLEND_ONE,
+blendDst: n.enums.BLEND_ZERO,
+blendSrcAlpha: n.enums.BLEND_ONE,
+blendDstAlpha: n.enums.BLEND_ZERO,
+depthTest: !1,
+depthWrite: !1,
+depthFunc: n.enums.DS_FUNC_LESS,
+stencilTest: !1,
+stencilSep: !1,
+stencilFuncFront: n.enums.DS_FUNC_ALWAYS,
+stencilRefFront: 0,
+stencilMaskFront: 255,
+stencilFailOpFront: n.enums.STENCIL_OP_KEEP,
+stencilZFailOpFront: n.enums.STENCIL_OP_KEEP,
+stencilZPassOpFront: n.enums.STENCIL_OP_KEEP,
+stencilWriteMaskFront: 255,
+stencilFuncBack: n.enums.DS_FUNC_ALWAYS,
+stencilRefBack: 0,
+stencilMaskBack: 255,
+stencilFailOpBack: n.enums.STENCIL_OP_KEEP,
+stencilZFailOpBack: n.enums.STENCIL_OP_KEEP,
+stencilZPassOpBack: n.enums.STENCIL_OP_KEEP,
+stencilWriteMaskBack: 255,
+cullMode: n.enums.CULL_BACK,
+primitiveType: n.enums.PT_TRIANGLES,
+maxStream: -1,
+vertexBuffers: [],
+vertexBufferOffsets: [],
+indexBuffer: null,
+maxTextureSlot: -1,
+textureUnits: [],
+program: null
+}, o = (function() {
+function t(e) {
+r(this, t);
+this.vertexBuffers = new Array(e._caps.maxVertexStreams);
+this.vertexBufferOffsets = new Array(e._caps.maxVertexStreams);
+this.textureUnits = new Array(e._caps.maxTextureUnits);
+this.set(s);
+}
+t.initDefault = function(t) {
+s.vertexBuffers = new Array(t._caps.maxVertexStreams);
+s.vertexBufferOffsets = new Array(t._caps.maxVertexStreams);
+s.textureUnits = new Array(t._caps.maxTextureUnits);
+};
+t.prototype.reset = function() {
+this.set(s);
+};
+t.prototype.set = function(t) {
+this.blend = t.blend;
+this.blendSep = t.blendSep;
+this.blendColor = t.blendColor;
+this.blendEq = t.blendEq;
+this.blendAlphaEq = t.blendAlphaEq;
+this.blendSrc = t.blendSrc;
+this.blendDst = t.blendDst;
+this.blendSrcAlpha = t.blendSrcAlpha;
+this.blendDstAlpha = t.blendDstAlpha;
+this.depthTest = t.depthTest;
+this.depthWrite = t.depthWrite;
+this.depthFunc = t.depthFunc;
+this.stencilTest = t.stencilTest;
+this.stencilSep = t.stencilSep;
+this.stencilFuncFront = t.stencilFuncFront;
+this.stencilRefFront = t.stencilRefFront;
+this.stencilMaskFront = t.stencilMaskFront;
+this.stencilFailOpFront = t.stencilFailOpFront;
+this.stencilZFailOpFront = t.stencilZFailOpFront;
+this.stencilZPassOpFront = t.stencilZPassOpFront;
+this.stencilWriteMaskFront = t.stencilWriteMaskFront;
+this.stencilFuncBack = t.stencilFuncBack;
+this.stencilRefBack = t.stencilRefBack;
+this.stencilMaskBack = t.stencilMaskBack;
+this.stencilFailOpBack = t.stencilFailOpBack;
+this.stencilZFailOpBack = t.stencilZFailOpBack;
+this.stencilZPassOpBack = t.stencilZPassOpBack;
+this.stencilWriteMaskBack = t.stencilWriteMaskBack;
+this.cullMode = t.cullMode;
+this.primitiveType = t.primitiveType;
+this.maxStream = t.maxStream;
+for (var e = 0; e < t.vertexBuffers.length; ++e) this.vertexBuffers[e] = t.vertexBuffers[e];
+for (var i = 0; i < t.vertexBufferOffsets.length; ++i) this.vertexBufferOffsets[i] = t.vertexBufferOffsets[i];
+this.indexBuffer = t.indexBuffer;
+this.maxTextureSlot = t.maxTextureSlot;
+for (var n = 0; n < t.textureUnits.length; ++n) this.textureUnits[n] = t.textureUnits[n];
+this.program = t.program;
+};
+return t;
+})();
+i.default = o;
+e.exports = i.default;
+}), {
+"./enums": 346
+} ],
+354: [ (function(i, n, r) {
+"use strict";
+r.__esModule = !0;
+r.default = void 0;
+var s = (function(t) {
+return t && t.__esModule ? t : {
+default: t
+};
+})(i("./texture")), o = i("./enums"), a = i("./misc");
+function c(t, e) {
+if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function");
+}
+function l(i, n) {
+if (!i) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
+return !n || "object" !== ("object" === (e = typeof n) ? t(n) : e) && "function" !== ("object" === (e = typeof n) ? t(n) : e) ? i : n;
+}
+function h(i, n) {
+if ("function" !== ("object" === (e = typeof n) ? t(n) : e) && null !== n) throw new TypeError("Super expression must either be null or a function, not " + ("object" === (e = typeof n) ? t(n) : e));
+i.prototype = Object.create(n && n.prototype, {
+constructor: {
+value: i,
+enumerable: !1,
+writable: !0,
+configurable: !0
+}
+});
+n && (Object.setPrototypeOf ? Object.setPrototypeOf(i, n) : i.__proto__ = n);
+}
+Object.getPrototypeOf(Object.getPrototypeOf(new Uint8Array())).constructor;
+var u = (function(t) {
+h(e, t);
+function e(i, n) {
+c(this, e);
+var r = l(this, t.call(this, i)), s = r._device._gl;
+r._target = s.TEXTURE_2D;
+r._glID = s.createTexture();
+n.images = n.images || [ null ];
+r.update(n);
+return r;
+}
+e.prototype.update = function(t) {
+var e = this._device._gl, i = this._genMipmap;
+if (t) {
+void 0 !== t.width && (this._width = t.width);
+void 0 !== t.height && (this._height = t.height);
+void 0 !== t.anisotropy && (this._anisotropy = t.anisotropy);
+void 0 !== t.minFilter && (this._minFilter = t.minFilter);
+void 0 !== t.magFilter && (this._magFilter = t.magFilter);
+void 0 !== t.mipFilter && (this._mipFilter = t.mipFilter);
+void 0 !== t.wrapS && (this._wrapS = t.wrapS);
+void 0 !== t.wrapT && (this._wrapT = t.wrapT);
+if (void 0 !== t.format) {
+this._format = t.format;
+this._compressed = this._format >= o.enums.TEXTURE_FMT_RGB_DXT1 && this._format <= o.enums.TEXTURE_FMT_RGBA_PVRTC_4BPPV1 || this._format >= o.enums.TEXTURE_FMT_RGB_ETC2 && this._format <= o.enums.TEXTURE_FMT_RGBA_ETC2;
+}
+if (void 0 !== t.genMipmaps) {
+this._genMipmap = t.genMipmaps;
+i = t.genMipmaps;
+}
+var n = this._device.caps.maxTextureSize || Number.MAX_VALUE, r = Math.max(t.width || 0, t.height || 0);
+n < r && console.warn("The current texture size " + r + " exceeds the maximum size [" + n + "] supported on the device.");
+if (void 0 !== t.images && t.images.length > 1) {
+i = !1;
+(t.width > t.height ? t.width : t.height) >> t.images.length - 1 != 1 && console.error("texture-2d mipmap is invalid, should have a 1x1 mipmap.");
+}
+}
+(0, a.isPow2)(this._width) && (0, a.isPow2)(this._height) || (i = !1);
+e.activeTexture(e.TEXTURE0);
+e.bindTexture(e.TEXTURE_2D, this._glID);
+if (void 0 !== t.images && t.images.length > 0) {
+this._setMipmap(t.images, t.flipY, t.premultiplyAlpha);
+t.images.length > 1 && (this._genMipmap = !0);
+}
+if (i) {
+e.hint(e.GENERATE_MIPMAP_HINT, e.NICEST);
+e.generateMipmap(e.TEXTURE_2D);
+this._genMipmap = !0;
+}
+this._setTexInfo();
+this._device._restoreTexture(0);
+};
+e.prototype.updateSubImage = function(t) {
+var e = this._device._gl, i = (0, o.glTextureFmt)(this._format);
+e.activeTexture(e.TEXTURE0);
+e.bindTexture(e.TEXTURE_2D, this._glID);
+this._setSubImage(i, t);
+this._device._restoreTexture(0);
+};
+e.prototype.updateImage = function(t) {
+var e = this._device._gl, i = (0, o.glTextureFmt)(this._format);
+e.activeTexture(e.TEXTURE0);
+e.bindTexture(e.TEXTURE_2D, this._glID);
+this._setImage(i, t);
+this._device._restoreTexture(0);
+};
+e.prototype._setSubImage = function(t, e) {
+var i = this._device._gl, n = e.flipY, r = e.premultiplyAlpha, s = e.image;
+if (!s || ArrayBuffer.isView(s) || s instanceof ArrayBuffer) {
+void 0 === n ? i.pixelStorei(i.UNPACK_FLIP_Y_WEBGL, !1) : i.pixelStorei(i.UNPACK_FLIP_Y_WEBGL, n);
+void 0 === r ? i.pixelStorei(i.UNPACK_PREMULTIPLY_ALPHA_WEBGL, !1) : i.pixelStorei(i.UNPACK_PREMULTIPLY_ALPHA_WEBGL, r);
+this._compressed ? i.compressedTexSubImage2D(i.TEXTURE_2D, e.level, e.x, e.y, e.width, e.height, t.format, s) : i.texSubImage2D(i.TEXTURE_2D, e.level, e.x, e.y, e.width, e.height, t.format, t.pixelType, s);
+} else {
+void 0 === n ? i.pixelStorei(i.UNPACK_FLIP_Y_WEBGL, !0) : i.pixelStorei(i.UNPACK_FLIP_Y_WEBGL, n);
+void 0 === r ? i.pixelStorei(i.UNPACK_PREMULTIPLY_ALPHA_WEBGL, !1) : i.pixelStorei(i.UNPACK_PREMULTIPLY_ALPHA_WEBGL, r);
+i.texSubImage2D(i.TEXTURE_2D, e.level, e.x, e.y, t.format, t.pixelType, s);
+}
+};
+e.prototype._setImage = function(t, e) {
+var i = this._device._gl, n = e.flipY, r = e.premultiplyAlpha, s = e.image;
+if (!s || ArrayBuffer.isView(s) || s instanceof ArrayBuffer) {
+void 0 === n ? i.pixelStorei(i.UNPACK_FLIP_Y_WEBGL, !1) : i.pixelStorei(i.UNPACK_FLIP_Y_WEBGL, n);
+void 0 === r ? i.pixelStorei(i.UNPACK_PREMULTIPLY_ALPHA_WEBGL, !1) : i.pixelStorei(i.UNPACK_PREMULTIPLY_ALPHA_WEBGL, r);
+this._compressed ? i.compressedTexImage2D(i.TEXTURE_2D, e.level, t.internalFormat, e.width, e.height, 0, s) : i.texImage2D(i.TEXTURE_2D, e.level, t.internalFormat, e.width, e.height, 0, t.format, t.pixelType, s);
+} else {
+void 0 === n ? i.pixelStorei(i.UNPACK_FLIP_Y_WEBGL, !0) : i.pixelStorei(i.UNPACK_FLIP_Y_WEBGL, n);
+void 0 === r ? i.pixelStorei(i.UNPACK_PREMULTIPLY_ALPHA_WEBGL, !1) : i.pixelStorei(i.UNPACK_PREMULTIPLY_ALPHA_WEBGL, r);
+i.texImage2D(i.TEXTURE_2D, e.level, t.internalFormat, t.format, t.pixelType, s);
+}
+};
+e.prototype._setMipmap = function(t, e, i) {
+for (var n = (0, o.glTextureFmt)(this._format), r = {
+width: this._width,
+height: this._height,
+flipY: e,
+premultiplyAlpha: i,
+level: 0,
+image: null
+}, s = 0; s < t.length; ++s) {
+r.level = s;
+r.width = this._width >> s;
+r.height = this._height >> s;
+r.image = t[s];
+this._setImage(n, r);
+}
+};
+e.prototype._setTexInfo = function() {
+var t = this._device._gl, e = (0, a.isPow2)(this._width) && (0, a.isPow2)(this._height);
+if (!e && (this._wrapS !== o.enums.WRAP_CLAMP || this._wrapT !== o.enums.WRAP_CLAMP)) {
+console.warn("WebGL1 doesn't support all wrap modes with NPOT textures");
+this._wrapS = o.enums.WRAP_CLAMP;
+this._wrapT = o.enums.WRAP_CLAMP;
+}
+var i = this._genMipmap ? this._mipFilter : -1;
+if (!e && -1 !== i) {
+console.warn("NPOT textures do not support mipmap filter");
+i = -1;
+}
+t.texParameteri(t.TEXTURE_2D, t.TEXTURE_MIN_FILTER, (0, o.glFilter)(t, this._minFilter, i));
+t.texParameteri(t.TEXTURE_2D, t.TEXTURE_MAG_FILTER, (0, o.glFilter)(t, this._magFilter, -1));
+t.texParameteri(t.TEXTURE_2D, t.TEXTURE_WRAP_S, this._wrapS);
+t.texParameteri(t.TEXTURE_2D, t.TEXTURE_WRAP_T, this._wrapT);
+var n = this._device.ext("EXT_texture_filter_anisotropic");
+n && t.texParameteri(t.TEXTURE_2D, n.TEXTURE_MAX_ANISOTROPY_EXT, this._anisotropy);
+};
+return e;
+})(s.default);
+r.default = u;
+n.exports = r.default;
+}), {
+"./enums": 346,
+"./misc": 350,
+"./texture": 356
+} ],
+355: [ (function(i, n, r) {
+"use strict";
+r.__esModule = !0;
+r.default = void 0;
+var s = (function(t) {
+return t && t.__esModule ? t : {
+default: t
+};
+})(i("./texture")), o = i("./enums"), a = i("./misc");
+function c(t, e) {
+if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function");
+}
+function l(i, n) {
+if (!i) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
+return !n || "object" !== ("object" === (e = typeof n) ? t(n) : e) && "function" !== ("object" === (e = typeof n) ? t(n) : e) ? i : n;
+}
+function h(i, n) {
+if ("function" !== ("object" === (e = typeof n) ? t(n) : e) && null !== n) throw new TypeError("Super expression must either be null or a function, not " + ("object" === (e = typeof n) ? t(n) : e));
+i.prototype = Object.create(n && n.prototype, {
+constructor: {
+value: i,
+enumerable: !1,
+writable: !0,
+configurable: !0
+}
+});
+n && (Object.setPrototypeOf ? Object.setPrototypeOf(i, n) : i.__proto__ = n);
+}
+var u = (function(t) {
+h(e, t);
+function e(i, n) {
+c(this, e);
+var r = l(this, t.call(this, i)), s = r._device._gl;
+r._target = s.TEXTURE_CUBE_MAP;
+r._glID = s.createTexture();
+r.update(n);
+return r;
+}
+e.prototype.update = function(t) {
+var e = this._device._gl, i = this._genMipmaps;
+if (t) {
+void 0 !== t.width && (this._width = t.width);
+void 0 !== t.height && (this._height = t.height);
+void 0 !== t.anisotropy && (this._anisotropy = t.anisotropy);
+void 0 !== t.minFilter && (this._minFilter = t.minFilter);
+void 0 !== t.magFilter && (this._magFilter = t.magFilter);
+void 0 !== t.mipFilter && (this._mipFilter = t.mipFilter);
+void 0 !== t.wrapS && (this._wrapS = t.wrapS);
+void 0 !== t.wrapT && (this._wrapT = t.wrapT);
+if (void 0 !== t.format) {
+this._format = t.format;
+this._compressed = this._format >= o.enums.TEXTURE_FMT_RGB_DXT1 && this._format <= o.enums.TEXTURE_FMT_RGBA_PVRTC_4BPPV1 || this._format >= o.enums.TEXTURE_FMT_RGB_ETC2 && this._format <= o.enums.TEXTURE_FMT_RGBA_ETC2;
+}
+if (void 0 !== t.genMipmaps) {
+this._genMipmaps = t.genMipmaps;
+i = t.genMipmaps;
+}
+if (void 0 !== t.images && t.images.length > 1) {
+i = !1;
+t.width !== t.height && console.warn("texture-cube width and height should be identical.");
+t.width >> t.images.length - 1 != 1 && console.error("texture-cube mipmap is invalid. please set mipmap as 1x1, 2x2, 4x4 ... nxn");
+}
+}
+(0, a.isPow2)(this._width) && (0, a.isPow2)(this._height) || (i = !1);
+e.activeTexture(e.TEXTURE0);
+e.bindTexture(e.TEXTURE_CUBE_MAP, this._glID);
+if (void 0 !== t.images && t.images.length > 0) {
+this._setMipmap(t.images, t.flipY, t.premultiplyAlpha);
+t.images.length > 1 && (this._genMipmaps = !0);
+}
+if (i) {
+e.hint(e.GENERATE_MIPMAP_HINT, e.NICEST);
+e.generateMipmap(e.TEXTURE_CUBE_MAP);
+this._genMipmaps = !0;
+}
+this._setTexInfo();
+this._device._restoreTexture(0);
+};
+e.prototype.updateSubImage = function(t) {
+var e = this._device._gl, i = (0, o.glTextureFmt)(this._format);
+e.activeTexture(e.TEXTURE0);
+e.bindTexture(e.TEXTURE_CUBE_MAP, this._glID);
+this._setSubImage(i, t);
+this._device._restoreTexture(0);
+};
+e.prototype.updateImage = function(t) {
+var e = this._device._gl, i = (0, o.glTextureFmt)(this._format);
+e.activeTexture(e.TEXTURE0);
+e.bindTexture(e.TEXTURE_CUBE_MAP, this._glID);
+this._setImage(i, t);
+this._device._restoreTexture(0);
+};
+e.prototype._setSubImage = function(t, e) {
+var i = this._device._gl, n = e.flipY, r = e.premultiplyAlpha, s = e.faceIndex, o = e.image;
+void 0 === n ? i.pixelStorei(i.UNPACK_FLIP_Y_WEBGL, !1) : i.pixelStorei(i.UNPACK_FLIP_Y_WEBGL, n);
+void 0 === r ? i.pixelStorei(i.UNPACK_PREMULTIPLY_ALPHA_WEBGL, !1) : i.pixelStorei(i.UNPACK_PREMULTIPLY_ALPHA_WEBGL, r);
+!o || ArrayBuffer.isView(o) || o instanceof ArrayBuffer ? this._compressed ? i.compressedTexSubImage2D(i.TEXTURE_CUBE_MAP_POSITIVE_X + s, e.level, e.x, e.y, e.width, e.height, t.format, o) : i.texSubImage2D(i.TEXTURE_CUBE_MAP_POSITIVE_X + s, e.level, e.x, e.y, e.width, e.height, t.format, t.pixelType, o) : i.texSubImage2D(i.TEXTURE_CUBE_MAP_POSITIVE_X + s, e.level, e.x, e.y, t.format, t.pixelType, o);
+};
+e.prototype._setImage = function(t, e) {
+var i = this._device._gl, n = e.flipY, r = e.premultiplyAlpha, s = e.faceIndex, o = e.image;
+void 0 === n ? i.pixelStorei(i.UNPACK_FLIP_Y_WEBGL, !1) : i.pixelStorei(i.UNPACK_FLIP_Y_WEBGL, n);
+void 0 === r ? i.pixelStorei(i.UNPACK_PREMULTIPLY_ALPHA_WEBGL, !1) : i.pixelStorei(i.UNPACK_PREMULTIPLY_ALPHA_WEBGL, r);
+!o || ArrayBuffer.isView(o) || o instanceof ArrayBuffer ? this._compressed ? i.compressedTexImage2D(i.TEXTURE_CUBE_MAP_POSITIVE_X + s, e.level, t.internalFormat, e.width, e.height, 0, o) : i.texImage2D(i.TEXTURE_CUBE_MAP_POSITIVE_X + s, e.level, t.internalFormat, e.width, e.height, 0, t.format, t.pixelType, o) : i.texImage2D(i.TEXTURE_CUBE_MAP_POSITIVE_X + s, e.level, t.internalFormat, t.format, t.pixelType, o);
+};
+e.prototype._setMipmap = function(t, e, i) {
+for (var n = (0, o.glTextureFmt)(this._format), r = {
+width: this._width,
+height: this._height,
+faceIndex: 0,
+flipY: e,
+premultiplyAlpha: i,
+level: 0,
+image: null
+}, s = 0; s < t.length; ++s) {
+var a = t[s];
+r.level = s;
+r.width = this._width >> s;
+r.height = this._height >> s;
+for (var c = 0; c < 6; ++c) {
+r.faceIndex = c;
+r.image = a[c];
+this._setImage(n, r);
+}
+}
+};
+e.prototype._setTexInfo = function() {
+var t = this._device._gl, e = (0, a.isPow2)(this._width) && (0, a.isPow2)(this._height);
+if (!e && (this._wrapS !== o.enums.WRAP_CLAMP || this._wrapT !== o.enums.WRAP_CLAMP)) {
+console.warn("WebGL1 doesn't support all wrap modes with NPOT textures");
+this._wrapS = o.enums.WRAP_CLAMP;
+this._wrapT = o.enums.WRAP_CLAMP;
+}
+var i = this._genMipmaps ? this._mipFilter : -1;
+if (!e && -1 !== i) {
+console.warn("NPOT textures do not support mipmap filter");
+i = -1;
+}
+t.texParameteri(t.TEXTURE_CUBE_MAP, t.TEXTURE_MIN_FILTER, (0, o.glFilter)(t, this._minFilter, i));
+t.texParameteri(t.TEXTURE_CUBE_MAP, t.TEXTURE_MAG_FILTER, (0, o.glFilter)(t, this._magFilter, -1));
+t.texParameteri(t.TEXTURE_CUBE_MAP, t.TEXTURE_WRAP_S, this._wrapS);
+t.texParameteri(t.TEXTURE_CUBE_MAP, t.TEXTURE_WRAP_T, this._wrapT);
+var n = this._device.ext("EXT_texture_filter_anisotropic");
+n && t.texParameteri(t.TEXTURE_CUBE_MAP, n.TEXTURE_MAX_ANISOTROPY_EXT, this._anisotropy);
+};
+return e;
+})(s.default);
+r.default = u;
+n.exports = r.default;
+}), {
+"./enums": 346,
+"./misc": 350,
+"./texture": 356
+} ],
+356: [ (function(t, e, i) {
+"use strict";
+i.__esModule = !0;
+i.default = void 0;
+var n = t("./enums");
+function r(t, e) {
+if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function");
+}
+var s = 0, o = (function() {
+function t(e) {
+r(this, t);
+this._device = e;
+this._width = 4;
+this._height = 4;
+this._genMipmaps = !1;
+this._compressed = !1;
+this._anisotropy = 1;
+this._minFilter = n.enums.FILTER_LINEAR;
+this._magFilter = n.enums.FILTER_LINEAR;
+this._mipFilter = n.enums.FILTER_LINEAR;
+this._wrapS = n.enums.WRAP_REPEAT;
+this._wrapT = n.enums.WRAP_REPEAT;
+this._format = n.enums.TEXTURE_FMT_RGBA8;
+this._target = -1;
+this._id = s++;
+}
+t.prototype.destroy = function() {
+if (null !== this._glID) {
+this._device._gl.deleteTexture(this._glID);
+this._device._stats.tex -= this.bytes;
+this._glID = null;
+} else console.error("The texture already destroyed");
+};
+return t;
+})();
+i.default = o;
+e.exports = i.default;
+}), {
+"./enums": 346
+} ],
+357: [ (function(t, e, i) {
+"use strict";
+i.__esModule = !0;
+var n = (function() {
+function t(t, e) {
+for (var i = 0; i < e.length; i++) {
+var n = e[i];
+n.enumerable = n.enumerable || !1;
+n.configurable = !0;
+"value" in n && (n.writable = !0);
+Object.defineProperty(t, n.key, n);
+}
+}
+return function(e, i, n) {
+i && t(e.prototype, i);
+n && t(e, n);
+return e;
+};
+})();
+t("./enums");
+function r(t, e) {
+if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function");
+}
+var s = (function() {
+function t(e, i, n, s, o) {
+r(this, t);
+this._device = e;
+this._format = i;
+this._usage = n;
+this._numVertices = o;
+this._bytes = this._format._bytes * o;
+this._glID = e._gl.createBuffer();
+this.update(0, s);
+e._stats.vb += this._bytes;
+}
+t.prototype.destroy = function() {
+if (-1 !== this._glID) {
+this._device._gl.deleteBuffer(this._glID);
+this._device._stats.vb -= this.bytes;
+this._glID = -1;
+} else console.error("The buffer already destroyed");
+};
+t.prototype.update = function(t, e) {
+if (-1 !== this._glID) if (e && e.byteLength + t > this._bytes) console.error("Failed to update data, bytes exceed."); else {
+var i = this._device._gl, n = this._usage;
+i.bindBuffer(i.ARRAY_BUFFER, this._glID);
+e ? t ? i.bufferSubData(i.ARRAY_BUFFER, t, e) : i.bufferData(i.ARRAY_BUFFER, e, n) : this._bytes ? i.bufferData(i.ARRAY_BUFFER, this._bytes, n) : console.warn("bufferData should not submit 0 bytes data");
+i.bindBuffer(i.ARRAY_BUFFER, null);
+} else console.error("The buffer is destroyed");
+};
+n(t, [ {
+key: "count",
+get: function() {
+return this._numVertices;
+}
+} ]);
+return t;
+})();
+i.default = s;
+e.exports = i.default;
+}), {
+"./enums": 346
+} ],
+358: [ (function(t, e, i) {
+"use strict";
+i.__esModule = !0;
+i.default = void 0;
+var n = t("./enums");
+function r(t, e) {
+if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function");
+}
+var s = (function() {
+function t(e) {
+r(this, t);
+this._attr2el = {};
+this._elements = [];
+this._bytes = 0;
+for (var i = 0, s = e.length; i < s; ++i) {
+var o = e[i], a = {
+name: o.name,
+offset: this._bytes,
+stride: 0,
+stream: -1,
+type: o.type,
+num: o.num,
+normalize: void 0 !== o.normalize && o.normalize,
+bytes: o.num * (0, n.attrTypeBytes)(o.type)
+};
+this._attr2el[a.name] = a;
+this._elements.push(a);
+this._bytes += a.bytes;
+}
+for (var c = 0, l = this._elements.length; c < l; ++c) {
+this._elements[c].stride = this._bytes;
+}
+}
+t.prototype.element = function(t) {
+return this._attr2el[t];
+};
+return t;
+})();
+i.default = s;
+e.exports = i.default;
+}), {
+"./enums": 346
+} ],
+359: [ (function(t, e, i) {
+"use strict";
+i.__esModule = !0;
+function n(t, e) {
+if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function");
+}
+var r = (function() {
+function t(e, i) {
+n(this, t);
+this._cursor = 0;
+this._data = new Array(i);
+for (var r = 0; r < i; ++r) this._data[r] = e();
+}
+t.prototype.request = function() {
+var t = this._data[this._cursor];
+this._cursor = (this._cursor + 1) % this._data.length;
+return t;
+};
+return t;
+})();
+i.default = r;
+e.exports = i.default;
+}), {} ],
+360: [ (function(t, e, i) {
+"use strict";
+i.__esModule = !0;
+i.default = void 0;
+var n = (function() {
+function t(t, e) {
+for (var i = 0; i < e.length; i++) {
+var n = e[i];
+n.enumerable = n.enumerable || !1;
+n.configurable = !0;
+"value" in n && (n.writable = !0);
+Object.defineProperty(t, n.key, n);
+}
+}
+return function(e, i, n) {
+i && t(e.prototype, i);
+n && t(e, n);
+return e;
+};
+})(), r = (function(t) {
+return t && t.__esModule ? t : {
+default: t
+};
+})(t("./timsort"));
+function s(t, e) {
+if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function");
+}
+var o = (function() {
+function t(e) {
+s(this, t);
+this._count = 0;
+this._data = new Array(e);
+}
+t.prototype._resize = function(t) {
+if (t > this._data.length) for (var e = this._data.length; e < t; ++e) this._data[e] = void 0;
+};
+t.prototype.reset = function() {
+for (var t = 0; t < this._count; ++t) this._data[t] = void 0;
+this._count = 0;
+};
+t.prototype.push = function(t) {
+this._count >= this._data.length && this._resize(2 * this._data.length);
+this._data[this._count] = t;
+++this._count;
+};
+t.prototype.pop = function() {
+--this._count;
+this._count < 0 && (this._count = 0);
+var t = this._data[this._count];
+this._data[this._count] = void 0;
+return t;
+};
+t.prototype.fastRemove = function(t) {
+if (!(t >= this._count || t < 0)) {
+var e = this._count - 1;
+this._data[t] = this._data[e];
+this._data[e] = void 0;
+this._count -= 1;
+}
+};
+t.prototype.indexOf = function(t) {
+return this._data.indexOf(t);
+};
+t.prototype.sort = function(t) {
+return (0, r.default)(this._data, 0, this._count, t);
+};
+n(t, [ {
+key: "length",
+get: function() {
+return this._count;
+}
+}, {
+key: "data",
+get: function() {
+return this._data;
+}
+} ]);
+return t;
+})();
+i.default = o;
+e.exports = i.default;
+}), {
+"./timsort": 365
+} ],
+361: [ (function(t, e, i) {
+"use strict";
+i.__esModule = !0;
+var n = t("./circular-pool");
+Object.defineProperty(i, "CircularPool", {
+enumerable: !0,
+get: function() {
+return l(n).default;
+}
+});
+var r = t("./fixed-array");
+Object.defineProperty(i, "FixedArray", {
+enumerable: !0,
+get: function() {
+return l(r).default;
+}
+});
+var s = t("./linked-array");
+Object.defineProperty(i, "LinkedArray", {
+enumerable: !0,
+get: function() {
+return l(s).default;
+}
+});
+var o = t("./pool");
+Object.defineProperty(i, "Pool", {
+enumerable: !0,
+get: function() {
+return l(o).default;
+}
+});
+var a = t("./recycle-pool");
+Object.defineProperty(i, "RecyclePool", {
+enumerable: !0,
+get: function() {
+return l(a).default;
+}
+});
+var c = t("./typed-array-pool");
+Object.defineProperty(i, "TypedArrayPool", {
+enumerable: !0,
+get: function() {
+return l(c).default;
+}
+});
+function l(t) {
+return t && t.__esModule ? t : {
+default: t
+};
+}
+}), {
+"./circular-pool": 359,
+"./fixed-array": 360,
+"./linked-array": 362,
+"./pool": 363,
+"./recycle-pool": 364,
+"./typed-array-pool": 366
+} ],
+362: [ (function(t, e, i) {
+"use strict";
+i.__esModule = !0;
+i.default = void 0;
+var n = (function() {
+function t(t, e) {
+for (var i = 0; i < e.length; i++) {
+var n = e[i];
+n.enumerable = n.enumerable || !1;
+n.configurable = !0;
+"value" in n && (n.writable = !0);
+Object.defineProperty(t, n.key, n);
+}
+}
+return function(e, i, n) {
+i && t(e.prototype, i);
+n && t(e, n);
+return e;
+};
+})(), r = (function(t) {
+return t && t.__esModule ? t : {
+default: t
+};
+})(t("./pool"));
+function s(t, e) {
+if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function");
+}
+var o = (function() {
+function t(e, i) {
+s(this, t);
+this._fn = e;
+this._count = 0;
+this._head = null;
+this._tail = null;
+this._pool = new r.default(e, i);
+}
+t.prototype.add = function() {
+var t = this._pool.alloc();
+if (this._tail) {
+this._tail._next = t;
+t._prev = this._tail;
+} else this._head = t;
+this._tail = t;
+this._count += 1;
+return t;
+};
+t.prototype.remove = function(t) {
+t._prev ? t._prev._next = t._next : this._head = t._next;
+t._next ? t._next._prev = t._prev : this._tail = t._prev;
+t._next = null;
+t._prev = null;
+this._pool.free(t);
+this._count -= 1;
+};
+t.prototype.forEach = function(t, e) {
+var i = this._head;
+if (i) {
+e && (t = t.bind(e));
+for (var n = 0, r = i; i; ) {
+r = i._next;
+t(i, n, this);
+i = r;
+++n;
+}
+}
+};
+n(t, [ {
+key: "head",
+get: function() {
+return this._head;
+}
+}, {
+key: "tail",
+get: function() {
+return this._tail;
+}
+}, {
+key: "length",
+get: function() {
+return this._count;
+}
+} ]);
+return t;
+})();
+i.default = o;
+e.exports = i.default;
+}), {
+"./pool": 363
+} ],
+363: [ (function(t, e, i) {
+"use strict";
+i.__esModule = !0;
+function n(t, e) {
+if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function");
+}
+var r = (function() {
+function t(e, i) {
+n(this, t);
+this._fn = e;
+this._idx = i - 1;
+this._frees = new Array(i);
+for (var r = 0; r < i; ++r) this._frees[r] = e();
+}
+t.prototype._expand = function(t) {
+var e = this._frees;
+this._frees = new Array(t);
+for (var i = t - e.length, n = 0; n < i; ++n) this._frees[n] = this._fn();
+for (var r = i, s = 0; r < t; ++r, ++s) this._frees[r] = e[s];
+this._idx += i;
+};
+t.prototype.alloc = function() {
+this._idx < 0 && this._expand(Math.round(1.2 * this._frees.length) + 1);
+var t = this._frees[this._idx];
+this._frees[this._idx] = null;
+--this._idx;
+return t;
+};
+t.prototype.free = function(t) {
+++this._idx;
+this._frees[this._idx] = t;
+};
+return t;
+})();
+i.default = r;
+e.exports = i.default;
+}), {} ],
+364: [ (function(t, e, i) {
+"use strict";
+i.__esModule = !0;
+i.default = void 0;
+var n = (function() {
+function t(t, e) {
+for (var i = 0; i < e.length; i++) {
+var n = e[i];
+n.enumerable = n.enumerable || !1;
+n.configurable = !0;
+"value" in n && (n.writable = !0);
+Object.defineProperty(t, n.key, n);
+}
+}
+return function(e, i, n) {
+i && t(e.prototype, i);
+n && t(e, n);
+return e;
+};
+})(), r = (function(t) {
+return t && t.__esModule ? t : {
+default: t
+};
+})(t("./timsort"));
+function s(t, e) {
+if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function");
+}
+var o = (function() {
+function t(e, i) {
+s(this, t);
+this._fn = e;
+this._count = 0;
+this._data = new Array(i);
+for (var n = 0; n < i; ++n) this._data[n] = e();
+}
+t.prototype.reset = function() {
+this._count = 0;
+};
+t.prototype.resize = function(t) {
+if (t > this._data.length) for (var e = this._data.length; e < t; ++e) this._data[e] = this._fn();
+};
+t.prototype.add = function() {
+this._count >= this._data.length && this.resize(2 * this._data.length);
+return this._data[this._count++];
+};
+t.prototype.remove = function(t) {
+if (!(t >= this._count)) {
+var e = this._count - 1, i = this._data[t];
+this._data[t] = this._data[e];
+this._data[e] = i;
+this._count -= 1;
+}
+};
+t.prototype.sort = function(t) {
+return (0, r.default)(this._data, 0, this._count, t);
+};
+n(t, [ {
+key: "length",
+get: function() {
+return this._count;
+}
+}, {
+key: "data",
+get: function() {
+return this._data;
+}
+} ]);
+return t;
+})();
+i.default = o;
+e.exports = i.default;
+}), {
+"./timsort": 365
+} ],
+365: [ (function(t, e, i) {
+"use strict";
+i.__esModule = !0;
+i.default = function(t, e, i, n) {
+if (!Array.isArray(t)) throw new TypeError("Can only sort arrays");
+void 0 === e && (e = 0);
+void 0 === i && (i = t.length);
+void 0 === n && (n = l);
+var s = i - e;
+if (!(s < 2)) {
+var o = 0;
+if (s < r) f(t, e, i, e + (o = u(t, e, i, n)), n); else {
+var a = new p(t, n), c = h(s);
+do {
+if ((o = u(t, e, i, n)) < c) {
+var _ = s;
+_ > c && (_ = c);
+f(t, e, e + _, e + o, n);
+o = _;
+}
+a.pushRun(e, o);
+a.mergeRuns();
+s -= o;
+e += o;
+} while (0 !== s);
+a.forceMergeRuns();
+}
+}
+};
+function n(t, e) {
+if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function");
+}
+var r = 32, s = 7, o = 256, a = [ 1, 10, 100, 1e3, 1e4, 1e5, 1e6, 1e7, 1e8, 1e9 ];
+function c(t) {
+return t < 1e5 ? t < 100 ? t < 10 ? 0 : 1 : t < 1e4 ? t < 1e3 ? 2 : 3 : 4 : t < 1e7 ? t < 1e6 ? 5 : 6 : t < 1e9 ? t < 1e8 ? 7 : 8 : 9;
+}
+function l(t, e) {
+if (t === e) return 0;
+if (~~t === t && ~~e === e) {
+if (0 === t || 0 === e) return t < e ? -1 : 1;
+if (t < 0 || e < 0) {
+if (e >= 0) return -1;
+if (t >= 0) return 1;
+t = -t;
+e = -e;
+}
+var i = c(t), n = c(e), r = 0;
+if (i < n) {
+t *= a[n - i - 1];
+e /= 10;
+r = -1;
+} else if (i > n) {
+e *= a[i - n - 1];
+t /= 10;
+r = 1;
+}
+return t === e ? r : t < e ? -1 : 1;
+}
+var s = String(t), o = String(e);
+return s === o ? 0 : s < o ? -1 : 1;
+}
+function h(t) {
+for (var e = 0; t >= r; ) {
+e |= 1 & t;
+t >>= 1;
+}
+return t + e;
+}
+function u(t, e, i, n) {
+var r = e + 1;
+if (r === i) return 1;
+if (n(t[r++], t[e]) < 0) {
+for (;r < i && n(t[r], t[r - 1]) < 0; ) r++;
+_(t, e, r);
+} else for (;r < i && n(t[r], t[r - 1]) >= 0; ) r++;
+return r - e;
+}
+function _(t, e, i) {
+i--;
+for (;e < i; ) {
+var n = t[e];
+t[e++] = t[i];
+t[i--] = n;
+}
+}
+function f(t, e, i, n, r) {
+n === e && n++;
+for (;n < i; n++) {
+for (var s = t[n], o = e, a = n; o < a; ) {
+var c = o + a >>> 1;
+r(s, t[c]) < 0 ? a = c : o = c + 1;
+}
+var l = n - o;
+switch (l) {
+case 3:
+t[o + 3] = t[o + 2];
+
+case 2:
+t[o + 2] = t[o + 1];
+
+case 1:
+t[o + 1] = t[o];
+break;
+
+default:
+for (;l > 0; ) {
+t[o + l] = t[o + l - 1];
+l--;
+}
+}
+t[o] = s;
+}
+}
+function d(t, e, i, n, r, s) {
+var o = 0, a = 0, c = 1;
+if (s(t, e[i + r]) > 0) {
+a = n - r;
+for (;c < a && s(t, e[i + r + c]) > 0; ) {
+o = c;
+(c = 1 + (c << 1)) <= 0 && (c = a);
+}
+c > a && (c = a);
+o += r;
+c += r;
+} else {
+a = r + 1;
+for (;c < a && s(t, e[i + r - c]) <= 0; ) {
+o = c;
+(c = 1 + (c << 1)) <= 0 && (c = a);
+}
+c > a && (c = a);
+var l = o;
+o = r - c;
+c = r - l;
+}
+o++;
+for (;o < c; ) {
+var h = o + (c - o >>> 1);
+s(t, e[i + h]) > 0 ? o = h + 1 : c = h;
+}
+return c;
+}
+function m(t, e, i, n, r, s) {
+var o = 0, a = 0, c = 1;
+if (s(t, e[i + r]) < 0) {
+a = r + 1;
+for (;c < a && s(t, e[i + r - c]) < 0; ) {
+o = c;
+(c = 1 + (c << 1)) <= 0 && (c = a);
+}
+c > a && (c = a);
+var l = o;
+o = r - c;
+c = r - l;
+} else {
+a = n - r;
+for (;c < a && s(t, e[i + r + c]) >= 0; ) {
+o = c;
+(c = 1 + (c << 1)) <= 0 && (c = a);
+}
+c > a && (c = a);
+o += r;
+c += r;
+}
+o++;
+for (;o < c; ) {
+var h = o + (c - o >>> 1);
+s(t, e[i + h]) < 0 ? c = h : o = h + 1;
+}
+return c;
+}
+var p = (function() {
+function t(e, i) {
+n(this, t);
+this.array = e;
+this.compare = i;
+this.minGallop = s;
+this.length = e.length;
+this.tmpStorageLength = o;
+this.length < 2 * o && (this.tmpStorageLength = this.length >>> 1);
+this.tmp = new Array(this.tmpStorageLength);
+this.stackLength = this.length < 120 ? 5 : this.length < 1542 ? 10 : this.length < 119151 ? 19 : 40;
+this.runStart = new Array(this.stackLength);
+this.runLength = new Array(this.stackLength);
+this.stackSize = 0;
+}
+t.prototype.pushRun = function(t, e) {
+this.runStart[this.stackSize] = t;
+this.runLength[this.stackSize] = e;
+this.stackSize += 1;
+};
+t.prototype.mergeRuns = function() {
+for (;this.stackSize > 1; ) {
+var t = this.stackSize - 2;
+if (t >= 1 && this.runLength[t - 1] <= this.runLength[t] + this.runLength[t + 1] || t >= 2 && this.runLength[t - 2] <= this.runLength[t] + this.runLength[t - 1]) this.runLength[t - 1] < this.runLength[t + 1] && t--; else if (this.runLength[t] > this.runLength[t + 1]) break;
+this.mergeAt(t);
+}
+};
+t.prototype.forceMergeRuns = function() {
+for (;this.stackSize > 1; ) {
+var t = this.stackSize - 2;
+t > 0 && this.runLength[t - 1] < this.runLength[t + 1] && t--;
+this.mergeAt(t);
+}
+};
+t.prototype.mergeAt = function(t) {
+var e = this.compare, i = this.array, n = this.runStart[t], r = this.runLength[t], s = this.runStart[t + 1], o = this.runLength[t + 1];
+this.runLength[t] = r + o;
+if (t === this.stackSize - 3) {
+this.runStart[t + 1] = this.runStart[t + 2];
+this.runLength[t + 1] = this.runLength[t + 2];
+}
+this.stackSize--;
+var a = m(i[s], i, n, r, 0, e);
+n += a;
+0 !== (r -= a) && 0 !== (o = d(i[n + r - 1], i, s, o, o - 1, e)) && (r <= o ? this.mergeLow(n, r, s, o) : this.mergeHigh(n, r, s, o));
+};
+t.prototype.mergeLow = function(t, e, i, n) {
+var r = this.compare, o = this.array, a = this.tmp, c = 0;
+for (c = 0; c < e; c++) a[c] = o[t + c];
+var l = 0, h = i, u = t;
+o[u++] = o[h++];
+if (0 != --n) if (1 !== e) {
+for (var _ = this.minGallop; ;) {
+var f = 0, p = 0, v = !1;
+do {
+if (r(o[h], a[l]) < 0) {
+o[u++] = o[h++];
+p++;
+f = 0;
+if (0 == --n) {
+v = !0;
+break;
+}
+} else {
+o[u++] = a[l++];
+f++;
+p = 0;
+if (1 == --e) {
+v = !0;
+break;
+}
+}
+} while ((f | p) < _);
+if (v) break;
+do {
+if (0 !== (f = m(o[h], a, l, e, 0, r))) {
+for (c = 0; c < f; c++) o[u + c] = a[l + c];
+u += f;
+l += f;
+if ((e -= f) <= 1) {
+v = !0;
+break;
+}
+}
+o[u++] = o[h++];
+if (0 == --n) {
+v = !0;
+break;
+}
+if (0 !== (p = d(a[l], o, h, n, 0, r))) {
+for (c = 0; c < p; c++) o[u + c] = o[h + c];
+u += p;
+h += p;
+if (0 === (n -= p)) {
+v = !0;
+break;
+}
+}
+o[u++] = a[l++];
+if (1 == --e) {
+v = !0;
+break;
+}
+_--;
+} while (f >= s || p >= s);
+if (v) break;
+_ < 0 && (_ = 0);
+_ += 2;
+}
+this.minGallop = _;
+_ < 1 && (this.minGallop = 1);
+if (1 === e) {
+for (c = 0; c < n; c++) o[u + c] = o[h + c];
+o[u + n] = a[l];
+} else {
+if (0 === e) throw new Error("mergeLow preconditions were not respected");
+for (c = 0; c < e; c++) o[u + c] = a[l + c];
+}
+} else {
+for (c = 0; c < n; c++) o[u + c] = o[h + c];
+o[u + n] = a[l];
+} else for (c = 0; c < e; c++) o[u + c] = a[l + c];
+};
+t.prototype.mergeHigh = function(t, e, i, n) {
+var r = this.compare, o = this.array, a = this.tmp, c = 0;
+for (c = 0; c < n; c++) a[c] = o[i + c];
+var l = t + e - 1, h = n - 1, u = i + n - 1, _ = 0, f = 0;
+o[u--] = o[l--];
+if (0 != --e) if (1 !== n) {
+for (var p = this.minGallop; ;) {
+var v = 0, y = 0, g = !1;
+do {
+if (r(a[h], o[l]) < 0) {
+o[u--] = o[l--];
+v++;
+y = 0;
+if (0 == --e) {
+g = !0;
+break;
+}
+} else {
+o[u--] = a[h--];
+y++;
+v = 0;
+if (1 == --n) {
+g = !0;
+break;
+}
+}
+} while ((v | y) < p);
+if (g) break;
+do {
+if (0 !== (v = e - m(a[h], o, t, e, e - 1, r))) {
+e -= v;
+f = (u -= v) + 1;
+_ = (l -= v) + 1;
+for (c = v - 1; c >= 0; c--) o[f + c] = o[_ + c];
+if (0 === e) {
+g = !0;
+break;
+}
+}
+o[u--] = a[h--];
+if (1 == --n) {
+g = !0;
+break;
+}
+if (0 !== (y = n - d(o[l], a, 0, n, n - 1, r))) {
+n -= y;
+f = (u -= y) + 1;
+_ = (h -= y) + 1;
+for (c = 0; c < y; c++) o[f + c] = a[_ + c];
+if (n <= 1) {
+g = !0;
+break;
+}
+}
+o[u--] = o[l--];
+if (0 == --e) {
+g = !0;
+break;
+}
+p--;
+} while (v >= s || y >= s);
+if (g) break;
+p < 0 && (p = 0);
+p += 2;
+}
+this.minGallop = p;
+p < 1 && (this.minGallop = 1);
+if (1 === n) {
+f = (u -= e) + 1;
+_ = (l -= e) + 1;
+for (c = e - 1; c >= 0; c--) o[f + c] = o[_ + c];
+o[u] = a[h];
+} else {
+if (0 === n) throw new Error("mergeHigh preconditions were not respected");
+_ = u - (n - 1);
+for (c = 0; c < n; c++) o[_ + c] = a[c];
+}
+} else {
+f = (u -= e) + 1;
+_ = (l -= e) + 1;
+for (c = e - 1; c >= 0; c--) o[f + c] = o[_ + c];
+o[u] = a[h];
+} else {
+_ = u - (n - 1);
+for (c = 0; c < n; c++) o[_ + c] = a[c];
+}
+};
+return t;
+})();
+e.exports = i.default;
+}), {} ],
+366: [ (function(t, e, i) {
+"use strict";
+i.__esModule = !0;
+for (var n = Array(8), r = 0; r < 8; ++r) n[r] = [];
+function s(t) {
+for (var e = 16; e <= 1 << 28; e *= 16) if (t <= e) return e;
+return 0;
+}
+function o(t) {
+var e = void 0, i = void 0;
+e = (t > 65535) << 4;
+e |= i = ((t >>>= e) > 255) << 3;
+e |= i = ((t >>>= i) > 15) << 2;
+return (e |= i = ((t >>>= i) > 3) << 1) | (t >>>= i) >> 1;
+}
+function a(t) {
+var e = s(t), i = n[o(e) >> 2];
+return i.length > 0 ? i.pop() : new ArrayBuffer(e);
+}
+function c(t) {
+n[o(t.byteLength) >> 2].push(t);
+}
+i.default = {
+alloc_int8: function(t) {
+var e = new Int8Array(a(t), 0, t);
+return e.length !== t ? e.subarray(0, t) : e;
+},
+alloc_uint8: function(t) {
+var e = new Uint8Array(a(t), 0, t);
+return e.length !== t ? e.subarray(0, t) : e;
+},
+alloc_int16: function(t) {
+var e = new Int16Array(a(2 * t), 0, t);
+return e.length !== t ? e.subarray(0, t) : e;
+},
+alloc_uint16: function(t) {
+var e = new Uint16Array(a(2 * t), 0, t);
+return e.length !== t ? e.subarray(0, t) : e;
+},
+alloc_int32: function(t) {
+var e = new Int32Array(a(4 * t), 0, t);
+return e.length !== t ? e.subarray(0, t) : e;
+},
+alloc_uint32: function(t) {
+var e = new Uint32Array(a(4 * t), 0, t);
+return e.length !== t ? e.subarray(0, t) : e;
+},
+alloc_float32: function(t) {
+var e = new Float32Array(a(4 * t), 0, t);
+return e.length !== t ? e.subarray(0, t) : e;
+},
+alloc_float64: function(t) {
+var e = new Float64Array(a(8 * t), 0, t);
+return e.length !== t ? e.subarray(0, t) : e;
+},
+alloc_dataview: function(t) {
+var e = new DataView(a(t), 0, t);
+return e.length !== t ? e.subarray(0, t) : e;
+},
+free: function(t) {
+c(t.buffer);
+},
+reset: function() {
+for (var t = Array(8), e = 0; e < 8; ++e) t[e] = [];
+}
+};
+e.exports = i.default;
+}), {} ],
+367: [ (function(t, e, i) {
+"use strict";
+i.__esModule = !0;
+function n(t, e) {
+if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function");
+}
+i.default = function t() {
+n(this, t);
+this.material = null;
+this.vertexCount = 0;
+this.indiceCount = 0;
+};
+e.exports = i.default;
+}), {} ],
+368: [ (function(i, n, r) {
+"use strict";
+r.__esModule = !0;
+r.default = void 0;
+var s = (function() {
+function t(t, e) {
+for (var i = 0; i < e.length; i++) {
+var n = e[i];
+n.enumerable = n.enumerable || !1;
+n.configurable = !0;
+"value" in n && (n.writable = !0);
+Object.defineProperty(t, n.key, n);
+}
+}
+return function(e, i, n) {
+i && t(e.prototype, i);
+n && t(e, n);
+return e;
+};
+})();
+function o(t, e) {
+if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function");
+}
+function a(i, n) {
+if (!i) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
+return !n || "object" !== ("object" === (e = typeof n) ? t(n) : e) && "function" !== ("object" === (e = typeof n) ? t(n) : e) ? i : n;
+}
+function c(i, n) {
+if ("function" !== ("object" === (e = typeof n) ? t(n) : e) && null !== n) throw new TypeError("Super expression must either be null or a function, not " + ("object" === (e = typeof n) ? t(n) : e));
+i.prototype = Object.create(n && n.prototype, {
+constructor: {
+value: i,
+enumerable: !1,
+writable: !0,
+configurable: !0
+}
+});
+n && (Object.setPrototypeOf ? Object.setPrototypeOf(i, n) : i.__proto__ = n);
+}
+var l = (function(t) {
+c(e, t);
+function e() {
+o(this, e);
+var i = a(this, t.call(this));
+i.ia = null;
+return i;
+}
+s(e, [ {
+key: "type",
+get: function() {
+return e.type;
+}
+} ]);
+return e;
+})(function(t) {
+return t && t.__esModule ? t : {
+default: t
+};
+}(i("./base-render-data")).default);
+r.default = l;
+l.type = "IARenderData";
+cc.IARenderData = l;
+n.exports = r.default;
+}), {
+"./base-render-data": 367
+} ],
+369: [ (function(i, n, r) {
+"use strict";
+r.__esModule = !0;
+r.default = void 0;
+var s, o = (function() {
+function t(t, e) {
+for (var i = 0; i < e.length; i++) {
+var n = e[i];
+n.enumerable = n.enumerable || !1;
+n.configurable = !0;
+"value" in n && (n.writable = !0);
+Object.defineProperty(t, n.key, n);
+}
+}
+return function(e, i, n) {
+i && t(e.prototype, i);
+n && t(e, n);
+return e;
+};
+})(), a = i("../memop"), c = (function(t) {
+return t && t.__esModule ? t : {
+default: t
+};
+})(i("./base-render-data"));
+function l(t, e) {
+if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function");
+}
+function h(i, n) {
+if (!i) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
+return !n || "object" !== ("object" === (e = typeof n) ? t(n) : e) && "function" !== ("object" === (e = typeof n) ? t(n) : e) ? i : n;
+}
+function u(i, n) {
+if ("function" !== ("object" === (e = typeof n) ? t(n) : e) && null !== n) throw new TypeError("Super expression must either be null or a function, not " + ("object" === (e = typeof n) ? t(n) : e));
+i.prototype = Object.create(n && n.prototype, {
+constructor: {
+value: i,
+enumerable: !1,
+writable: !0,
+configurable: !0
+}
+});
+n && (Object.setPrototypeOf ? Object.setPrototypeOf(i, n) : i.__proto__ = n);
+}
+var _ = new a.Pool(function() {
+return {
+x: 0,
+y: 0,
+z: 0,
+u: 0,
+v: 0,
+color: 0
+};
+}, 128), f = (function(t) {
+u(e, t);
+function e() {
+l(this, e);
+var i = h(this, t.call(this));
+i._data = [];
+i._indices = [];
+i._pivotX = 0;
+i._pivotY = 0;
+i._width = 0;
+i._height = 0;
+i.uvDirty = !0;
+i.vertDirty = !0;
+return i;
+}
+e.prototype.updateSizeNPivot = function(t, e, i, n) {
+if (t !== this._width || e !== this._height || i !== this._pivotX || n !== this._pivotY) {
+this._width = t;
+this._height = e;
+this._pivotX = i;
+this._pivotY = n;
+this.vertDirty = !0;
+}
+};
+e.alloc = function() {
+return s.alloc();
+};
+e.free = function(t) {
+if (t instanceof e) {
+for (var i = t._data.length - 1; i >= 0; i--) _.free(t._data[i]);
+t._data.length = 0;
+t._indices.length = 0;
+t.material = null;
+t.uvDirty = !0;
+t.vertDirty = !0;
+t.vertexCount = 0;
+t.indiceCount = 0;
+s.free(t);
+}
+};
+o(e, [ {
+key: "type",
+get: function() {
+return e.type;
+}
+}, {
+key: "dataLength",
+get: function() {
+return this._data.length;
+},
+set: function(t) {
+var e = this._data;
+if (e.length !== t) {
+for (var i = t; i < e.length; i++) _.free(e[i]);
+for (var n = e.length; n < t; n++) e[n] = _.alloc();
+e.length = t;
+}
+}
+} ]);
+return e;
+})(c.default);
+r.default = f;
+f.type = "RenderData";
+s = new a.Pool(function() {
+return new f();
+}, 32);
+n.exports = r.default;
+}), {
+"../memop": 361,
+"./base-render-data": 367
+} ],
+370: [ (function(i, n, r) {
+"use strict";
+r.__esModule = !0;
+r.default = void 0;
+var s = (function() {
+function t(t, e) {
+for (var i = 0; i < e.length; i++) {
+var n = e[i];
+n.enumerable = n.enumerable || !1;
+n.configurable = !0;
+"value" in n && (n.writable = !0);
+Object.defineProperty(t, n.key, n);
+}
+}
+return function(e, i, n) {
+i && t(e.prototype, i);
+n && t(e, n);
+return e;
+};
+})(), o = i("../../core/vmath"), a = h(i("../core/base-renderer")), c = h(i("../enums")), l = i("../memop");
+function h(t) {
+return t && t.__esModule ? t : {
+default: t
+};
+}
+function u(t, e) {
+if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function");
+}
+function _(i, n) {
+if (!i) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
+return !n || "object" !== ("object" === (e = typeof n) ? t(n) : e) && "function" !== ("object" === (e = typeof n) ? t(n) : e) ? i : n;
+}
+function f(i, n) {
+if ("function" !== ("object" === (e = typeof n) ? t(n) : e) && null !== n) throw new TypeError("Super expression must either be null or a function, not " + ("object" === (e = typeof n) ? t(n) : e));
+i.prototype = Object.create(n && n.prototype, {
+constructor: {
+value: i,
+enumerable: !1,
+writable: !0,
+configurable: !0
+}
+});
+n && (Object.setPrototypeOf ? Object.setPrototypeOf(i, n) : i.__proto__ = n);
+}
+var d = new Float32Array(16), m = new Float32Array(16), p = new Float32Array(16), v = new Float32Array(3), y = new Float32Array(16), g = o.vec3.create(0, 0, 0), x = o.vec3.create(0, 0, 0), C = o.vec3.create(0, 0, 0), b = new l.RecyclePool(function() {
+return new Float32Array(16);
+}, 8), A = (function(t) {
+f(e, t);
+function e(i, n) {
+u(this, e);
+var r = _(this, t.call(this, i, n));
+r._directionalLights = [];
+r._pointLights = [];
+r._spotLights = [];
+r._shadowLights = [];
+r._sceneAmbient = new Float32Array([ 0, 0, 0 ]);
+r._numLights = 0;
+r._defines = {};
+r._registerStage("shadowcast", r._shadowStage.bind(r));
+r._registerStage("opaque", r._opaqueStage.bind(r));
+r._registerStage("transparent", r._transparentStage.bind(r));
+return r;
+}
+e.prototype.render = function(t) {
+this.reset();
+this._updateLights(t);
+for (var e = this._device._gl.canvas, i = 0; i < t._cameras.length; ++i) {
+var n = this._requestView(), r = e.width, s = e.height;
+t._cameras.data[i].extractView(n, r, s);
+}
+this._viewPools.sort((function(t, e) {
+return t._priority - e._priority;
+}));
+for (var o = 0; o < this._viewPools.length; ++o) {
+var a = this._viewPools.data[o];
+this._render(a, t);
+}
+};
+e.prototype.renderCamera = function(t, e) {
+this.reset();
+var i = this._device._gl.canvas, n = i.width, r = i.height, s = this._requestView();
+t.extractView(s, n, r);
+this._render(s, e);
+};
+e.prototype._updateLights = function(t) {
+this._directionalLights.length = 0;
+this._pointLights.length = 0;
+this._spotLights.length = 0;
+this._shadowLights.length = 0;
+for (var e = t._lights, i = 0; i < e.length; ++i) {
+var n = e.data[i];
+n.update(this._device);
+if (n.shadowType !== c.default.SHADOW_NONE) {
+this._shadowLights.push(n);
+var r = this._requestView();
+n.extractView(r, [ "shadowcast" ]);
+}
+n._type === c.default.LIGHT_DIRECTIONAL ? this._directionalLights.push(n) : n._type === c.default.LIGHT_POINT ? this._pointLights.push(n) : this._spotLights.push(n);
+}
+this._updateDefines();
+this._numLights = e._count;
+};
+e.prototype._updateDefines = function() {
+var t = this._defines;
+t._NUM_DIR_LIGHTS = Math.min(4, this._directionalLights.length);
+t._NUM_POINT_LIGHTS = Math.min(4, this._pointLights.length);
+t._NUM_SPOT_LIGHTS = Math.min(4, this._spotLights.length);
+t._NUM_SHADOW_LIGHTS = Math.min(4, this._shadowLights.length);
+};
+e.prototype._submitLightsUniforms = function() {
+var t = this._device;
+t.setUniform("cc_sceneAmbient", this._sceneAmbient);
+b.reset();
+if (this._directionalLights.length > 0) {
+for (var e = b.add(), i = b.add(), n = 0; n < this._directionalLights.length; ++n) {
+var r = this._directionalLights[n], s = 4 * n;
+e.set(r._directionUniform, s);
+i.set(r._colorUniform, s);
+}
+t.setUniform("cc_dirLightDirection", e);
+t.setUniform("cc_dirLightColor", i);
+}
+if (this._pointLights.length > 0) {
+for (var o = b.add(), a = b.add(), c = 0; c < this._pointLights.length; ++c) {
+var l = this._pointLights[c], h = 4 * c;
+o.set(l._positionUniform, h);
+o[h + 3] = l._range;
+a.set(l._colorUniform, h);
+}
+t.setUniform("cc_pointLightPositionAndRange", o);
+t.setUniform("cc_pointLightColor", a);
+}
+if (this._spotLights.length > 0) {
+for (var u = b.add(), _ = b.add(), f = b.add(), d = 0; d < this._spotLights.length; ++d) {
+var m = this._spotLights[d], p = 4 * d;
+u.set(m._positionUniform, p);
+u[p + 3] = m._range;
+_.set(m._directionUniform, p);
+_[p + 3] = m._spotUniform[0];
+f.set(m._colorUniform, p);
+f[p + 3] = m._spotUniform[1];
+}
+t.setUniform("cc_spotLightPositionAndRange", u);
+t.setUniform("cc_spotLightDirection", _);
+t.setUniform("cc_spotLightColor", f);
+}
+};
+e.prototype._submitShadowStageUniforms = function(t) {
+var e = t._shadowLight;
+this._device.setUniform("cc_minDepth", e.shadowMinDepth);
+this._device.setUniform("cc_maxDepth", e.shadowMaxDepth);
+this._device.setUniform("cc_bias", e.shadowBias);
+this._device.setUniform("cc_depthScale", e.shadowDepthScale);
+};
+e.prototype._submitOtherStagesUniforms = function() {
+for (var t = 0; t < this._shadowLights.length; ++t) {
+var e = this._shadowLights[t];
+this._device.setUniform("cc_lightViewProjMatrix_" + t, o.mat4.array(y, e.viewProjMatrix));
+this._device.setUniform("cc_minDepth_" + t, e.shadowMinDepth);
+this._device.setUniform("cc_maxDepth_" + t, e.shadowMaxDepth);
+this._device.setUniform("cc_bias_" + t, e.shadowBias);
+this._device.setUniform("cc_depthScale_" + t, e.shadowDepthScale);
+this._device.setUniform("cc_darkness_" + t, e.shadowDarkness);
+this._device.setUniform("cc_frustumEdgeFalloff_" + t, e.frustumEdgeFalloff);
+}
+};
+e.prototype._updateShaderDefines = function(t) {
+t.defines.push(this._defines);
+};
+e.prototype._sortItems = function(t) {
+t.sort((function(t, e) {
+var i = t.technique, n = e.technique;
+return i._layer !== n._layer ? i._layer - n._layer : i._passes.length !== n._passes.length ? i._passes.length - n._passes.length : t.sortKey - e.sortKey;
+}));
+};
+e.prototype._shadowStage = function(t, e) {
+this._device.setUniform("cc_lightViewProjMatrix", o.mat4.array(p, t._matViewProj));
+this._submitShadowStageUniforms(t);
+for (var i = 0; i < e.length; ++i) {
+var n = e.data[i];
+if (this._programLib._getValueFromDefineList("_SHADOW_CASTING", n.defines)) {
+this._updateShaderDefines(n);
+this._draw(n);
+}
+}
+};
+e.prototype._drawItems = function(t, e) {
+var i = this._shadowLights;
+if (0 === i.length && 0 === this._numLights) for (var n = 0; n < e.length; ++n) {
+var r = e.data[n];
+this._draw(r);
+} else for (var s = 0; s < e.length; ++s) {
+for (var o = e.data[s], a = 0; a < i.length; ++a) {
+var c = i[a];
+this._device.setTexture("_shadowMap_" + a, c.shadowMap, this._allocTextureUnit());
+}
+this._updateShaderDefines(o);
+this._draw(o);
+}
+};
+e.prototype._opaqueStage = function(t, e) {
+t.getPosition(g);
+this._device.setUniform("cc_matView", o.mat4.array(d, t._matView));
+this._device.setUniform("cc_matpProj", o.mat4.array(m, t._matProj));
+this._device.setUniform("cc_matViewProj", o.mat4.array(p, t._matViewProj));
+this._device.setUniform("cc_cameraPos", o.vec3.array(v, g));
+this._submitLightsUniforms();
+this._submitOtherStagesUniforms();
+this._drawItems(t, e);
+};
+e.prototype._transparentStage = function(t, e) {
+t.getPosition(g);
+t.getForward(x);
+this._device.setUniform("cc_matView", o.mat4.array(d, t._matView));
+this._device.setUniform("cc_matpProj", o.mat4.array(m, t._matProj));
+this._device.setUniform("cc_matViewProj", o.mat4.array(p, t._matViewProj));
+this._device.setUniform("cc_cameraPos", o.vec3.array(v, g));
+this._submitLightsUniforms();
+this._submitOtherStagesUniforms();
+for (var i = 0; i < e.length; ++i) {
+var n = e.data[i];
+n.node.getWorldPosition(C);
+o.vec3.sub(C, C, g);
+n.sortKey = -o.vec3.dot(C, x);
+}
+this._sortItems(e);
+this._drawItems(t, e);
+};
+s(e, [ {
+key: "sceneAmbient",
+get: function() {
+var t = this._sceneAmbient;
+return cc.color(255 * t.r, 255 * t.g, 255 * t.b, 255);
+},
+set: function(t) {
+this._sceneAmbient[0] = t.r / 255;
+this._sceneAmbient[1] = t.g / 255;
+this._sceneAmbient[2] = t.b / 255;
+}
+} ]);
+return e;
+})(a.default);
+r.default = A;
+n.exports = r.default;
+}), {
+"../../core/vmath": 317,
+"../core/base-renderer": 337,
+"../enums": 344,
+"../memop": 361
+} ],
+371: [ (function(t, e, i) {
+"use strict";
+i.__esModule = !0;
+i.default = void 0;
+var n = t("../../core/vmath"), r = o(t("../../core/geom-utils")), s = o(t("../enums"));
+function o(t) {
+return t && t.__esModule ? t : {
+default: t
+};
+}
+function a(t, e) {
+if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function");
+}
+var c = n.vec3.create(), l = n.vec3.create(), h = n.mat4.create(), u = n.mat4.create(), _ = n.mat4.create(), f = n.mat4.create(), d = n.mat4.create(), m = (function() {
+function t() {
+a(this, t);
+this._poolID = -1;
+this._node = null;
+this._projection = s.default.PROJ_PERSPECTIVE;
+this._priority = 0;
+this._color = n.color4.create(.2, .3, .47, 1);
+this._depth = 1;
+this._stencil = 0;
+this._clearFlags = s.default.CLEAR_COLOR | s.default.CLEAR_DEPTH;
+this._clearModel = null;
+this._stages = [];
+this._framebuffer = null;
+this._near = .01;
+this._far = 1e3;
+this._fov = Math.PI / 4;
+this._rect = {
+x: 0,
+y: 0,
+w: 1,
+h: 1
+};
+this._orthoHeight = 10;
+this._cullingMask = 4294967295;
+}
+t.prototype.getNode = function() {
+return this._node;
+};
+t.prototype.setNode = function(t) {
+this._node = t;
+};
+t.prototype.getType = function() {
+return this._projection;
+};
+t.prototype.setType = function(t) {
+this._projection = t;
+};
+t.prototype.getPriority = function() {
+return this._priority;
+};
+t.prototype.setPriority = function(t) {
+this._priority = t;
+};
+t.prototype.getOrthoHeight = function() {
+return this._orthoHeight;
+};
+t.prototype.setOrthoHeight = function(t) {
+this._orthoHeight = t;
+};
+t.prototype.getFov = function() {
+return this._fov;
+};
+t.prototype.setFov = function(t) {
+this._fov = t;
+};
+t.prototype.getNear = function() {
+return this._near;
+};
+t.prototype.setNear = function(t) {
+this._near = t;
+};
+t.prototype.getFar = function() {
+return this._far;
+};
+t.prototype.setFar = function(t) {
+this._far = t;
+};
+t.prototype.getColor = function(t) {
+return n.color4.copy(t, this._color);
+};
+t.prototype.setColor = function(t, e, i, r) {
+n.color4.set(this._color, t, e, i, r);
+};
+t.prototype.getDepth = function() {
+return this._depth;
+};
+t.prototype.setDepth = function(t) {
+this._depth = t;
+};
+t.prototype.getStencil = function() {
+return this._stencil;
+};
+t.prototype.setStencil = function(t) {
+this._stencil = t;
+};
+t.prototype.getClearFlags = function() {
+return this._clearFlags;
+};
+t.prototype.setClearFlags = function(t) {
+this._clearFlags = t;
+};
+t.prototype.getRect = function(t) {
+t.x = this._rect.x;
+t.y = this._rect.y;
+t.w = this._rect.w;
+t.h = this._rect.h;
+return t;
+};
+t.prototype.setRect = function(t, e, i, n) {
+this._rect.x = t;
+this._rect.y = e;
+this._rect.w = i;
+this._rect.h = n;
+};
+t.prototype.getStages = function() {
+return this._stages;
+};
+t.prototype.setStages = function(t) {
+this._stages = t;
+};
+t.prototype.getFramebuffer = function() {
+return this._framebuffer;
+};
+t.prototype.setFramebuffer = function(t) {
+this._framebuffer = t;
+};
+t.prototype._calcMatrices = function(t, e) {
+this._node.getWorldRT(u);
+n.mat4.invert(u, u);
+var i = t / e;
+if (this._projection === s.default.PROJ_PERSPECTIVE) n.mat4.perspective(_, this._fov, i, this._near, this._far); else {
+var r = this._orthoHeight * i, o = this._orthoHeight;
+n.mat4.ortho(_, -r, r, -o, o, this._near, this._far);
+}
+n.mat4.mul(f, _, u);
+n.mat4.invert(d, f);
+};
+t.prototype.extractView = function(t, e, i) {
+if (this._framebuffer) {
+e = this._framebuffer._width;
+i = this._framebuffer._height;
+}
+t._priority = this._priority;
+t._rect.x = this._rect.x * e;
+t._rect.y = this._rect.y * i;
+t._rect.w = this._rect.w * e;
+t._rect.h = this._rect.h * i;
+this.getColor(t._color);
+t._depth = this._depth;
+t._stencil = this._stencil;
+t._clearFlags = this._clearFlags;
+t._clearModel = this._clearModel;
+t._stages = this._stages;
+t._framebuffer = this._framebuffer;
+this._calcMatrices(e, i);
+n.mat4.copy(t._matView, u);
+n.mat4.copy(t._matProj, _);
+n.mat4.copy(t._matViewProj, f);
+n.mat4.copy(t._matInvViewProj, d);
+t._cullingMask = this._cullingMask;
+};
+t.prototype.screenPointToRay = function(t, e, i, o, a) {
+if (!r.default) return a;
+a = a || r.default.Ray.create();
+this._calcMatrices(i, o);
+var h = this._rect.x * i, u = this._rect.y * o, _ = this._rect.w * i, f = this._rect.h * o;
+n.vec3.set(l, (t - h) / _ * 2 - 1, (e - u) / f * 2 - 1, 1);
+n.vec3.transformMat4(l, l, d);
+if (this._projection === s.default.PROJ_PERSPECTIVE) this._node.getWorldPosition(c); else {
+n.vec3.set(c, (t - h) / _ * 2 - 1, (e - u) / f * 2 - 1, -1);
+n.vec3.transformMat4(c, c, d);
+}
+return r.default.Ray.fromPoints(a, c, l);
+};
+t.prototype.screenToWorld = function(t, e, i, r) {
+this._calcMatrices(i, r);
+var o = this._rect.x * i, a = this._rect.y * r, l = this._rect.w * i, h = this._rect.h * r;
+if (this._projection === s.default.PROJ_PERSPECTIVE) {
+n.vec3.set(t, (e.x - o) / l * 2 - 1, (e.y - a) / h * 2 - 1, 1);
+n.vec3.transformMat4(t, t, d);
+this._node.getWorldPosition(c);
+n.vec3.lerp(t, c, t, (0, n.lerp)(this._near / this._far, 1, e.z));
+} else {
+n.vec3.set(t, (e.x - o) / l * 2 - 1, (e.y - a) / h * 2 - 1, 2 * e.z - 1);
+n.vec3.transformMat4(t, t, d);
+}
+return t;
+};
+t.prototype.worldToScreen = function(t, e, i, r) {
+this._calcMatrices(i, r);
+var s = this._rect.x * i, o = this._rect.y * r, a = this._rect.w * i, c = this._rect.h * r;
+n.vec3.transformMat4(t, e, f);
+t.x = s + .5 * (t.x + 1) * a;
+t.y = o + .5 * (t.y + 1) * c;
+t.z = .5 * t.z + .5;
+return t;
+};
+t.prototype.worldMatrixToScreen = function(t, e, i, r) {
+this._calcMatrices(i, r);
+n.mat4.mul(t, f, e);
+var s = i / 2, o = r / 2;
+n.mat4.identity(h);
+n.mat4.translate(h, h, n.vec3.set(c, s, o, 0));
+n.mat4.scale(h, h, n.vec3.set(c, s, o, 1));
+n.mat4.mul(t, h, t);
+return t;
+};
+return t;
+})();
+i.default = m;
+e.exports = i.default;
+}), {
+"../../core/geom-utils": 138,
+"../../core/vmath": 317,
+"../enums": 344
+} ],
+372: [ (function(t, e, i) {
+"use strict";
+i.__esModule = !0;
+i.default = void 0;
+var n = (function() {
+function t(t, e) {
+for (var i = 0; i < e.length; i++) {
+var n = e[i];
+n.enumerable = n.enumerable || !1;
+n.configurable = !0;
+"value" in n && (n.writable = !0);
+Object.defineProperty(t, n.key, n);
+}
+}
+return function(e, i, n) {
+i && t(e.prototype, i);
+n && t(e, n);
+return e;
+};
+})(), r = t("../../core/vmath"), s = a(t("../gfx")), o = a(t("../enums"));
+function a(t) {
+return t && t.__esModule ? t : {
+default: t
+};
+}
+function c(t, e) {
+if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function");
+}
+var l = r.vec3.create(0, 0, -1), h = r.mat4.create(), u = r.mat3.create(), _ = r.vec3.create(0, 0, 0);
+function f(t, e, i) {
+t._node.getWorldRT(e);
+r.mat4.invert(e, e);
+r.mat4.perspective(i, t._spotAngle * t._spotAngleScale, 1, t._shadowMinDepth, t._shadowMaxDepth);
+}
+function d(t, e, i) {
+t._node.getWorldRT(e);
+r.mat4.invert(e, e);
+var n = t._shadowFrustumSize / 2;
+r.mat4.ortho(i, -n, n, -n, n, t._shadowMinDepth, t._shadowMaxDepth);
+}
+function m(t, e, i) {
+t._node.getWorldRT(e);
+r.mat4.invert(e, e);
+r.mat4.perspective(i, (0, r.toRadian)(179), 1, t._shadowMinDepth, t._shadowMaxDepth);
+}
+var p = (function() {
+function t() {
+c(this, t);
+this._poolID = -1;
+this._node = null;
+this._type = o.default.LIGHT_DIRECTIONAL;
+this._color = r.color3.create(1, 1, 1);
+this._intensity = 1;
+this._range = 1;
+this._spotAngle = (0, r.toRadian)(60);
+this._spotExp = 1;
+this._directionUniform = new Float32Array(3);
+this._positionUniform = new Float32Array(3);
+this._colorUniform = new Float32Array([ this._color.r * this._intensity, this._color.g * this._intensity, this._color.b * this._intensity ]);
+this._spotUniform = new Float32Array([ Math.cos(.5 * this._spotAngle), this._spotExp ]);
+this._shadowType = o.default.SHADOW_NONE;
+this._shadowFrameBuffer = null;
+this._shadowMap = null;
+this._shadowMapDirty = !1;
+this._shadowDepthBuffer = null;
+this._shadowResolution = 1024;
+this._shadowBias = 5e-4;
+this._shadowDarkness = 1;
+this._shadowMinDepth = 1;
+this._shadowMaxDepth = 1e3;
+this._shadowDepthScale = 50;
+this._frustumEdgeFalloff = 0;
+this._viewProjMatrix = r.mat4.create();
+this._spotAngleScale = 1;
+this._shadowFrustumSize = 50;
+}
+t.prototype.getNode = function() {
+return this._node;
+};
+t.prototype.setNode = function(t) {
+this._node = t;
+};
+t.prototype.setColor = function(t, e, i) {
+r.color3.set(this._color, t, e, i);
+this._colorUniform[0] = t * this._intensity;
+this._colorUniform[1] = e * this._intensity;
+this._colorUniform[2] = i * this._intensity;
+};
+t.prototype.setIntensity = function(t) {
+this._intensity = t;
+this._colorUniform[0] = t * this._color.r;
+this._colorUniform[1] = t * this._color.g;
+this._colorUniform[2] = t * this._color.b;
+};
+t.prototype.setType = function(t) {
+this._type = t;
+};
+t.prototype.setSpotAngle = function(t) {
+this._spotAngle = t;
+this._spotUniform[0] = Math.cos(.5 * this._spotAngle);
+};
+t.prototype.setSpotExp = function(t) {
+this._spotExp = t;
+this._spotUniform[1] = t;
+};
+t.prototype.setRange = function(t) {
+this._range = t;
+};
+t.prototype.setShadowType = function(t) {
+this._shadowType === o.default.SHADOW_NONE && t !== o.default.SHADOW_NONE && (this._shadowMapDirty = !0);
+this._shadowType = t;
+};
+t.prototype.setShadowResolution = function(t) {
+this._shadowResolution !== t && (this._shadowMapDirty = !0);
+this._shadowResolution = t;
+};
+t.prototype.setShadowBias = function(t) {
+this._shadowBias = t;
+};
+t.prototype.setShadowDarkness = function(t) {
+this._shadowDarkness = t;
+};
+t.prototype.setShadowMinDepth = function(t) {
+this._shadowMinDepth = t;
+};
+t.prototype.setShadowMaxDepth = function(t) {
+this._shadowMaxDepth = t;
+};
+t.prototype.setShadowDepthScale = function(t) {
+this._shadowDepthScale = t;
+};
+t.prototype.setFrustumEdgeFalloff = function(t) {
+this._frustumEdgeFalloff = t;
+};
+t.prototype.setShadowFrustumSize = function(t) {
+this._shadowFrustumSize = t;
+};
+t.prototype.extractView = function(t, e) {
+t._shadowLight = this;
+t._priority = -1;
+t._rect.x = 0;
+t._rect.y = 0;
+t._rect.w = this._shadowResolution;
+t._rect.h = this._shadowResolution;
+r.color4.set(t._color, 1, 1, 1, 1);
+t._depth = 1;
+t._stencil = 1;
+t._clearFlags = o.default.CLEAR_COLOR | o.default.CLEAR_DEPTH;
+t._stages = e;
+t._framebuffer = this._shadowFrameBuffer;
+switch (this._type) {
+case o.default.LIGHT_SPOT:
+f(this, t._matView, t._matProj);
+break;
+
+case o.default.LIGHT_DIRECTIONAL:
+d(this, t._matView, t._matProj);
+break;
+
+case o.default.LIGHT_POINT:
+m(this, t._matView, t._matProj);
+break;
+
+default:
+console.warn("shadow of this light type is not supported");
+}
+r.mat4.mul(t._matViewProj, t._matProj, t._matView);
+this._viewProjMatrix = t._matViewProj;
+r.mat4.invert(t._matInvViewProj, t._matViewProj);
+t._cullingMask = 4294967295;
+};
+t.prototype._updateLightPositionAndDirection = function() {
+this._node.getWorldMatrix(h);
+r.mat3.fromMat4(u, h);
+r.vec3.transformMat3(_, l, u);
+r.vec3.array(this._directionUniform, _);
+var t = this._positionUniform;
+t[0] = h.m12;
+t[1] = h.m13;
+t[2] = h.m14;
+};
+t.prototype._generateShadowMap = function(t) {
+this._shadowMap = new s.default.Texture2D(t, {
+width: this._shadowResolution,
+height: this._shadowResolution,
+format: s.default.TEXTURE_FMT_RGBA8,
+wrapS: s.default.WRAP_CLAMP,
+wrapT: s.default.WRAP_CLAMP
+});
+this._shadowDepthBuffer = new s.default.RenderBuffer(t, s.default.RB_FMT_D16, this._shadowResolution, this._shadowResolution);
+this._shadowFrameBuffer = new s.default.FrameBuffer(t, this._shadowResolution, this._shadowResolution, {
+colors: [ this._shadowMap ],
+depth: this._shadowDepthBuffer
+});
+};
+t.prototype._destroyShadowMap = function() {
+if (this._shadowMap) {
+this._shadowMap.destroy();
+this._shadowDepthBuffer.destroy();
+this._shadowFrameBuffer.destroy();
+this._shadowMap = null;
+this._shadowDepthBuffer = null;
+this._shadowFrameBuffer = null;
+}
+};
+t.prototype.update = function(t) {
+this._updateLightPositionAndDirection();
+if (this._shadowType === o.default.SHADOW_NONE) this._destroyShadowMap(); else if (this._shadowMapDirty) {
+this._destroyShadowMap();
+this._generateShadowMap(t);
+this._shadowMapDirty = !1;
+}
+};
+n(t, [ {
+key: "color",
+get: function() {
+return this._color;
+}
+}, {
+key: "intensity",
+get: function() {
+return this._intensity;
+}
+}, {
+key: "type",
+get: function() {
+return this._type;
+}
+}, {
+key: "spotAngle",
+get: function() {
+return this._spotAngle;
+}
+}, {
+key: "spotExp",
+get: function() {
+return this._spotExp;
+}
+}, {
+key: "range",
+get: function() {
+return this._range;
+}
+}, {
+key: "shadowType",
+get: function() {
+return this._shadowType;
+}
+}, {
+key: "shadowMap",
+get: function() {
+return this._shadowMap;
+}
+}, {
+key: "viewProjMatrix",
+get: function() {
+return this._viewProjMatrix;
+}
+}, {
+key: "shadowResolution",
+get: function() {
+return this._shadowResolution;
+}
+}, {
+key: "shadowBias",
+get: function() {
+return this._shadowBias;
+}
+}, {
+key: "shadowDarkness",
+get: function() {
+return this._shadowDarkness;
+}
+}, {
+key: "shadowMinDepth",
+get: function() {
+return this._type === o.default.LIGHT_DIRECTIONAL ? 1 : this._shadowMinDepth;
+}
+}, {
+key: "shadowMaxDepth",
+get: function() {
+return this._type === o.default.LIGHT_DIRECTIONAL ? 1 : this._shadowMaxDepth;
+}
+}, {
+key: "shadowDepthScale",
+get: function() {
+return this._shadowDepthScale;
+}
+}, {
+key: "frustumEdgeFalloff",
+get: function() {
+return this._frustumEdgeFalloff;
+}
+}, {
+key: "shadowFrustumSize",
+get: function() {
+return this._shadowFrustumSize;
+}
+} ]);
+return t;
+})();
+i.default = p;
+e.exports = i.default;
+}), {
+"../../core/vmath": 317,
+"../enums": 344,
+"../gfx": 349
+} ],
+373: [ (function(t, e, i) {
+"use strict";
+i.__esModule = !0;
+i.default = void 0;
+var n = (function(t) {
+return t && t.__esModule ? t : {
+default: t
+};
+})(t("../../core/geom-utils"));
+function r(t, e) {
+if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function");
+}
+var s = (function() {
+function t() {
+r(this, t);
+this._type = "default";
+this._poolID = -1;
+this._node = null;
+this._inputAssembler = null;
+this._effect = null;
+this._viewID = -1;
+this._cameraID = -1;
+this._userKey = -1;
+this._castShadow = !1;
+this._boundingShape = null;
+this._defines = [];
+this._uniforms = [];
+}
+t.prototype._updateTransform = function() {
+if (this._node._hasChanged && this._boundingShape) {
+this._node.updateWorldTransformFull();
+this._bsModelSpace.transform(this._node._mat, this._node._pos, this._node._rot, this._node._scale, this._boundingShape);
+}
+};
+t.prototype.createBoundingShape = function(t, e) {
+if (n.default && t && e) {
+this._bsModelSpace = n.default.Aabb.fromPoints(n.default.Aabb.create(), t, e);
+this._boundingShape = n.default.Aabb.clone(this._bsModelSpace);
+}
+};
+t.prototype.setNode = function(t) {
+this._node = t;
+};
+t.prototype.setInputAssembler = function(t) {
+this._inputAssembler = t;
+};
+t.prototype.setEffect = function(t, e) {
+this._effect = t;
+var i = this._defines, n = this._uniforms;
+i.length = 0;
+n.length = 0;
+if (t) {
+i.push(t._defines);
+n.push(t._properties);
+}
+if (e) {
+i.push(e._defines);
+n.push(e._properties);
+}
+};
+t.prototype.setUserKey = function(t) {
+this._userKey = t;
+};
+t.prototype.extractDrawItem = function(t) {
+t.model = this;
+t.node = this._node;
+t.ia = this._inputAssembler;
+t.effect = this._effect;
+t.defines = this._defines;
+t.dependencies = this._dependencies;
+t.uniforms = this._uniforms;
+};
+return t;
+})();
+i.default = s;
+e.exports = i.default;
+}), {
+"../../core/geom-utils": 138
+} ],
+374: [ (function(t, e, i) {
+"use strict";
+i.__esModule = !0;
+var n = t("../memop");
+function r(t, e) {
+if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function");
+}
+var s = (function() {
+function t(e) {
+r(this, t);
+this._lights = new n.FixedArray(16);
+this._models = new n.FixedArray(16);
+this._cameras = new n.FixedArray(16);
+this._debugCamera = null;
+this._app = e;
+this._views = [];
+}
+t.prototype._add = function(t, e) {
+if (-1 === e._poolID) {
+t.push(e);
+e._poolID = t.length - 1;
+}
+};
+t.prototype._remove = function(t, e) {
+if (-1 !== e._poolID) {
+t.data[t.length - 1]._poolID = e._poolID;
+t.fastRemove(e._poolID);
+e._poolID = -1;
+}
+};
+t.prototype.tick = function() {
+for (var t = 0; t < this._models.length; ++t) {
+this._models.data[t]._updateTransform();
+}
+};
+t.prototype.reset = function() {
+for (var t = 0; t < this._models.length; ++t) {
+this._models.data[t]._viewID = -1;
+}
+};
+t.prototype.setDebugCamera = function(t) {
+this._debugCamera = t;
+};
+t.prototype.getCameraCount = function() {
+return this._cameras.length;
+};
+t.prototype.getCamera = function(t) {
+return this._cameras.data[t];
+};
+t.prototype.addCamera = function(t) {
+this._add(this._cameras, t);
+};
+t.prototype.removeCamera = function(t) {
+this._remove(this._cameras, t);
+};
+t.prototype.getModelCount = function() {
+return this._models.length;
+};
+t.prototype.getModel = function(t) {
+return this._models.data[t];
+};
+t.prototype.addModel = function(t) {
+this._add(this._models, t);
+};
+t.prototype.removeModel = function(t) {
+this._remove(this._models, t);
+};
+t.prototype.getLightCount = function() {
+return this._lights.length;
+};
+t.prototype.getLight = function(t) {
+return this._lights.data[t];
+};
+t.prototype.addLight = function(t) {
+this._add(this._lights, t);
+};
+t.prototype.removeLight = function(t) {
+this._remove(this._lights, t);
+};
+t.prototype.addView = function(t) {
+-1 === this._views.indexOf(t) && this._views.push(t);
+};
+t.prototype.removeView = function(t) {
+var e = this._views.indexOf(t);
+-1 !== e && this._views.splice(e, 1);
+};
+return t;
+})();
+i.default = s;
+e.exports = i.default;
+}), {
+"../memop": 361
+} ],
+375: [ (function(t, e, i) {
+"use strict";
+i.__esModule = !0;
+i.ctor2enums = i.enums2ctor = i.ctor2default = void 0;
+var n, r, s, o = h(t("./enums")), a = t("../core/value-types"), c = h(t("../core/assets/CCTexture2D")), l = h(t("./gfx/texture-2d"));
+h(t("./gfx/texture-cube"));
+function h(t) {
+return t && t.__esModule ? t : {
+default: t
+};
+}
+var u = cc.Object;
+i.ctor2default = ((n = {})[Number] = function(t) {
+return t || 0;
+}, n[Boolean] = function(t) {
+return t || !1;
+}, n[a.Vec2] = function(t) {
+return t ? cc.v2(t[0], t[1]) : cc.v2();
+}, n[a.Vec3] = function(t) {
+return t ? cc.v3(t[0], t[1], t[2]) : cc.v3();
+}, n[a.Vec4] = function(t) {
+return t ? cc.v4(t[0], t[1], t[2], t[3]) : cc.v4();
+}, n[a.Color] = function(t) {
+return t ? cc.color(255 * t[0], 255 * t[1], 255 * t[2], 255 * (t[3] || 1)) : cc.color();
+}, n[a.Mat4] = function(t) {
+return t ? cc.mat4(t[0], t[1], t[2], t[3], t[4], t[5], t[6], t[7], t[8], t[9], t[10], t[11], t[12], t[13], t[14], t[15]) : cc.mat4();
+}, n[c.default] = function() {
+return null;
+}, n[u] = function() {
+return null;
+}, n), i.enums2ctor = ((r = {})[o.default.PARAM_INT] = Number, r[o.default.PARAM_INT2] = a.Vec2,
+r[o.default.PARAM_INT3] = a.Vec3, r[o.default.PARAM_INT4] = a.Vec4, r[o.default.PARAM_FLOAT] = Number,
+r[o.default.PARAM_FLOAT2] = a.Vec2, r[o.default.PARAM_FLOAT3] = a.Vec3, r[o.default.PARAM_FLOAT4] = a.Vec4,
+r[o.default.PARAM_COLOR3] = a.Color, r[o.default.PARAM_COLOR4] = a.Color, r[o.default.PARAM_MAT4] = a.Mat4,
+r[o.default.PARAM_TEXTURE_2D] = c.default, r.number = Number, r.boolean = Boolean,
+r.default = u, r), i.ctor2enums = ((s = {})[Number] = o.default.PARAM_FLOAT, s[a.Vec2] = o.default.PARAM_FLOAT2,
+s[a.Vec3] = o.default.PARAM_FLOAT3, s[a.Vec4] = o.default.PARAM_FLOAT4, s[a.Color] = o.default.PARAM_COLOR3,
+s[a.Color] = o.default.PARAM_COLOR4, s[a.Mat4] = o.default.PARAM_MAT4, s[c.default] = o.default.PARAM_TEXTURE_2D,
+s[l.default] = o.default.PARAM_TEXTURE_2D, s);
+}), {
+"../core/assets/CCTexture2D": 73,
+"../core/value-types": 306,
+"./enums": 344,
+"./gfx/texture-2d": 354,
+"./gfx/texture-cube": 355
+} ],
+376: [ (function(t, e, i) {
+"use strict";
+var n = t("../compression/ZipUtils"), r = t("../compression/zlib.min"), s = t("../core/platform/js");
+t("../core/platform/CCSAXParser");
+function o(t) {
+if (t.length % 4 != 0) return null;
+for (var e = t.length / 4, i = window.Uint32Array ? new Uint32Array(e) : [], n = 0; n < e; n++) {
+var r = 4 * n;
+i[n] = t[r] + 256 * t[r + 1] + 65536 * t[r + 2] + t[r + 3] * (1 << 24);
+}
+return i;
+}
+cc.TMXLayerInfo = function() {
+this.properties = {};
+this.name = "";
+this._layerSize = null;
+this._tiles = [];
+this.visible = !0;
+this._opacity = 0;
+this.ownTiles = !0;
+this._minGID = 1e5;
+this._maxGID = 0;
+this.offset = cc.v2(0, 0);
+};
+cc.TMXLayerInfo.prototype = {
+constructor: cc.TMXLayerInfo,
+getProperties: function() {
+return this.properties;
+},
+setProperties: function(t) {
+this.properties = t;
+}
+};
+cc.TMXObjectGroupInfo = function() {
+this.properties = {};
+this.name = "";
+this._objects = [];
+this.visible = !0;
+this._opacity = 0;
+this._color = new cc.Color(255, 255, 255, 255);
+this.offset = cc.v2(0, 0);
+this._draworder = "topdown";
+};
+cc.TMXObjectGroupInfo.prototype = {
+constructor: cc.TMXObjectGroupInfo,
+getProperties: function() {
+return this.properties;
+},
+setProperties: function(t) {
+this.properties = t;
+}
+};
+cc.TMXTilesetInfo = function() {
+this.name = "";
+this.firstGid = 0;
+this.spacing = 0;
+this.margin = 0;
+this.sourceImage = null;
+this.imageSize = cc.size(0, 0);
+this.tileOffset = cc.v2(0, 0);
+this._tileSize = cc.size(0, 0);
+};
+cc.TMXTilesetInfo.prototype = {
+constructor: cc.TMXTilesetInfo,
+rectForGID: function(t, e) {
+var i = e || cc.rect(0, 0, 0, 0);
+i.width = this._tileSize.width;
+i.height = this._tileSize.height;
+t &= cc.TiledMap.TileFlag.FLIPPED_MASK;
+t -= parseInt(this.firstGid, 10);
+var n = parseInt((this.imageSize.width - 2 * this.margin + this.spacing) / (this._tileSize.width + this.spacing), 10);
+i.x = parseInt(t % n * (this._tileSize.width + this.spacing) + this.margin, 10);
+i.y = parseInt(parseInt(t / n, 10) * (this._tileSize.height + this.spacing) + this.margin, 10);
+return i;
+}
+};
+function a(t, e) {
+for (var i = [], n = t.getElementsByTagName("properties"), r = 0; r < n.length; ++r) for (var s = n[r].getElementsByTagName("property"), o = 0; o < s.length; ++o) i.push(s[o]);
+e = e || {};
+for (var a = 0; a < i.length; a++) {
+var c = i[a], l = c.getAttribute("name"), h = c.getAttribute("type") || "string", u = c.getAttribute("value");
+if ("int" === h) u = parseInt(u); else if ("float" === h) u = parseFloat(u); else if ("bool" === h) u = "true" === u; else if ("color" === h) {
+u = 0 === u.indexOf("#") ? u.substring(1) : u;
+var _ = parseInt(u.substr(0, 2), 16) || 255, f = parseInt(u.substr(2, 2), 16) || 0, d = parseInt(u.substr(4, 2), 16) || 0, m = parseInt(u.substr(6, 2), 16) || 0;
+u = cc.color(f, d, m, _);
+}
+e[l] = u;
+}
+return e;
+}
+cc.TMXMapInfo = function(t, e, i) {
+this.properties = [];
+this.orientation = null;
+this.parentElement = null;
+this.parentGID = null;
+this.layerAttrs = 0;
+this.storingCharacters = !1;
+this.currentString = null;
+this._parser = new cc.SAXParser();
+this._objectGroups = [];
+this._allChildren = [];
+this._mapSize = cc.size(0, 0);
+this._tileSize = cc.size(0, 0);
+this._layers = [];
+this._tilesets = [];
+this._tileProperties = {};
+this._tsxMap = null;
+this._textures = null;
+this._staggerAxis = null;
+this._staggerIndex = null;
+this._hexSideLength = 0;
+this.initWithXML(t, e, i);
+};
+cc.TMXMapInfo.prototype = {
+constructor: cc.TMXMapInfo,
+getOrientation: function() {
+return this.orientation;
+},
+setOrientation: function(t) {
+this.orientation = t;
+},
+getStaggerAxis: function() {
+return this._staggerAxis;
+},
+setStaggerAxis: function(t) {
+this._staggerAxis = t;
+},
+getStaggerIndex: function() {
+return this._staggerIndex;
+},
+setStaggerIndex: function(t) {
+this._staggerIndex = t;
+},
+getHexSideLength: function() {
+return this._hexSideLength;
+},
+setHexSideLength: function(t) {
+this._hexSideLength = t;
+},
+getMapSize: function() {
+return cc.size(this._mapSize.width, this._mapSize.height);
+},
+setMapSize: function(t) {
+this._mapSize.width = t.width;
+this._mapSize.height = t.height;
+},
+_getMapWidth: function() {
+return this._mapSize.width;
+},
+_setMapWidth: function(t) {
+this._mapSize.width = t;
+},
+_getMapHeight: function() {
+return this._mapSize.height;
+},
+_setMapHeight: function(t) {
+this._mapSize.height = t;
+},
+getTileSize: function() {
+return cc.size(this._tileSize.width, this._tileSize.height);
+},
+setTileSize: function(t) {
+this._tileSize.width = t.width;
+this._tileSize.height = t.height;
+},
+_getTileWidth: function() {
+return this._tileSize.width;
+},
+_setTileWidth: function(t) {
+this._tileSize.width = t;
+},
+_getTileHeight: function() {
+return this._tileSize.height;
+},
+_setTileHeight: function(t) {
+this._tileSize.height = t;
+},
+getLayers: function() {
+return this._layers;
+},
+setLayers: function(t) {
+this._allChildren.push(t);
+this._layers.push(t);
+},
+getTilesets: function() {
+return this._tilesets;
+},
+setTilesets: function(t) {
+this._tilesets.push(t);
+},
+getObjectGroups: function() {
+return this._objectGroups;
+},
+setObjectGroups: function(t) {
+this._allChildren.push(t);
+this._objectGroups.push(t);
+},
+getAllChildren: function() {
+return this._allChildren;
+},
+getParentElement: function() {
+return this.parentElement;
+},
+setParentElement: function(t) {
+this.parentElement = t;
+},
+getParentGID: function() {
+return this.parentGID;
+},
+setParentGID: function(t) {
+this.parentGID = t;
+},
+getLayerAttribs: function() {
+return this.layerAttrs;
+},
+setLayerAttribs: function(t) {
+this.layerAttrs = t;
+},
+getStoringCharacters: function() {
+return this.storingCharacters;
+},
+setStoringCharacters: function(t) {
+this.storingCharacters = t;
+},
+getProperties: function() {
+return this.properties;
+},
+setProperties: function(t) {
+this.properties = t;
+},
+initWithXML: function(t, e, i) {
+this._tilesets.length = 0;
+this._layers.length = 0;
+this._tsxMap = e;
+this._textures = i;
+this._objectGroups.length = 0;
+this._allChildren.length = 0;
+this.properties.length = 0;
+this._tileProperties.length = 0;
+this.currentString = "";
+this.storingCharacters = !1;
+this.layerAttrs = cc.TMXLayerInfo.ATTRIB_NONE;
+this.parentElement = cc.TiledMap.NONE;
+return this.parseXMLString(t);
+},
+parseXMLString: function(t, e) {
+var i = void 0, n = this._parser._parseXML(t).documentElement, r = n.getAttribute("version"), s = n.getAttribute("orientation"), o = n.getAttribute("staggeraxis"), c = n.getAttribute("staggerindex"), l = n.getAttribute("hexsidelength");
+if ("map" === n.nodeName) {
+"1.0" !== r && null !== r && cc.logID(7216, r);
+"orthogonal" === s ? this.orientation = cc.TiledMap.Orientation.ORTHO : "isometric" === s ? this.orientation = cc.TiledMap.Orientation.ISO : "hexagonal" === s ? this.orientation = cc.TiledMap.Orientation.HEX : null !== s && cc.logID(7217, s);
+"x" === o ? this.setStaggerAxis(cc.TiledMap.StaggerAxis.STAGGERAXIS_X) : "y" === o && this.setStaggerAxis(cc.TiledMap.StaggerAxis.STAGGERAXIS_Y);
+"odd" === c ? this.setStaggerIndex(cc.TiledMap.StaggerIndex.STAGGERINDEX_ODD) : "even" === c && this.setStaggerIndex(cc.TiledMap.StaggerIndex.STAGGERINDEX_EVEN);
+l && this.setHexSideLength(parseFloat(l));
+var h = cc.size(0, 0);
+h.width = parseFloat(n.getAttribute("width"));
+h.height = parseFloat(n.getAttribute("height"));
+this.setMapSize(h);
+(h = cc.size(0, 0)).width = parseFloat(n.getAttribute("tilewidth"));
+h.height = parseFloat(n.getAttribute("tileheight"));
+this.setTileSize(h);
+this.properties = a(n);
+}
+var u = n.getElementsByTagName("tileset");
+"map" !== n.nodeName && (u = []).push(n);
+for (i = 0; i < u.length; i++) {
+var _ = u[i], f = _.getAttribute("source");
+if (f) {
+var d = parseInt(_.getAttribute("firstgid")), m = this._tsxMap[f];
+m && this.parseXMLString(m, d);
+} else {
+var p = new cc.TMXTilesetInfo();
+p.name = _.getAttribute("name") || "";
+p.firstGid = e || (parseInt(_.getAttribute("firstgid")) || 0);
+p.spacing = parseInt(_.getAttribute("spacing")) || 0;
+p.margin = parseInt(_.getAttribute("margin")) || 0;
+var v = cc.size(0, 0);
+v.width = parseFloat(_.getAttribute("tilewidth"));
+v.height = parseFloat(_.getAttribute("tileheight"));
+p._tileSize = v;
+var y = _.getElementsByTagName("image")[0].getAttribute("source");
+y.replace(/\\/g, "/");
+p.sourceImage = this._textures[y];
+p.sourceImage || cc.errorID(7221, y);
+this.setTilesets(p);
+var g = _.getElementsByTagName("tileoffset")[0];
+if (g) {
+var x = parseFloat(g.getAttribute("x")), C = parseFloat(g.getAttribute("y"));
+p.tileOffset = cc.v2(x, C);
+}
+var b = _.getElementsByTagName("tile");
+if (b) for (var A = 0; A < b.length; A++) {
+var S = b[A];
+this.parentGID = parseInt(p.firstGid) + parseInt(S.getAttribute("id") || 0);
+this._tileProperties[this.parentGID] = a(S);
+}
+}
+}
+var w = n.childNodes;
+for (i = 0; i < w.length; i++) {
+var T = w[i];
+if (!this._shouldIgnoreNode(T)) {
+if ("layer" === T.nodeName) {
+var E = this._parseLayer(T);
+this.setLayers(E);
+}
+if ("objectgroup" === T.nodeName) {
+var M = this._parseObjectGroup(T);
+this.setObjectGroups(M);
+}
+}
+}
+return n;
+},
+_shouldIgnoreNode: function(t) {
+return 3 === t.nodeType || 8 === t.nodeType || 4 === t.nodeType;
+},
+_parseLayer: function(t) {
+var e = t.getElementsByTagName("data")[0], i = new cc.TMXLayerInfo();
+i.name = t.getAttribute("name");
+var s = cc.size(0, 0);
+s.width = parseFloat(t.getAttribute("width"));
+s.height = parseFloat(t.getAttribute("height"));
+i._layerSize = s;
+var c = t.getAttribute("visible");
+i.visible = !("0" === c);
+var l = t.getAttribute("opacity") || 1;
+i._opacity = l ? parseInt(255 * parseFloat(l)) : 255;
+i.offset = cc.v2(parseFloat(t.getAttribute("x")) || 0, parseFloat(t.getAttribute("y")) || 0);
+for (var h = "", u = 0; u < e.childNodes.length; u++) h += e.childNodes[u].nodeValue;
+h = h.trim();
+var _ = e.getAttribute("compression"), f = e.getAttribute("encoding");
+if (_ && "gzip" !== _ && "zlib" !== _) {
+cc.logID(7218);
+return null;
+}
+var d = void 0;
+switch (_) {
+case "gzip":
+d = n.unzipBase64AsArray(h, 4);
+break;
+
+case "zlib":
+d = o(new r.Inflate(n.Base64.decodeAsArray(h, 1)).decompress());
+break;
+
+case null:
+case "":
+if ("base64" === f) d = n.Base64.decodeAsArray(h, 4); else if ("csv" === f) {
+d = [];
+for (var m = h.split(","), p = 0; p < m.length; p++) d.push(parseInt(m[p]));
+} else {
+var v = e.getElementsByTagName("tile");
+d = [];
+for (var y = 0; y < v.length; y++) d.push(parseInt(v[y].getAttribute("gid")));
+}
+break;
+
+default:
+this.layerAttrs === cc.TMXLayerInfo.ATTRIB_NONE && cc.logID(7219);
+}
+d && (i._tiles = new Uint32Array(d));
+i.properties = a(t);
+return i;
+},
+_parseObjectGroup: function(t) {
+var e = new cc.TMXObjectGroupInfo();
+e.name = t.getAttribute("name") || "";
+e.offset = cc.v2(parseFloat(t.getAttribute("offsetx")), parseFloat(t.getAttribute("offsety")));
+var i = t.getAttribute("opacity") || 1;
+e._opacity = i ? parseInt(255 * parseFloat(i)) : 255;
+var n = t.getAttribute("visible");
+n && 0 === parseInt(n) && (e.visible = !1);
+var r = t.getAttribute("color");
+r && e._color.fromHEX(r);
+var s = t.getAttribute("draworder");
+s && (e._draworder = s);
+e.setProperties(a(t));
+var o = t.getElementsByTagName("object");
+if (o) for (var c = 0; c < o.length; c++) {
+var l = o[c], h = {};
+h.id = l.getAttribute("id") || 0;
+h.name = l.getAttribute("name") || "";
+h.width = parseFloat(l.getAttribute("width")) || 0;
+h.height = parseFloat(l.getAttribute("height")) || 0;
+h.x = parseFloat(l.getAttribute("x")) || 0;
+h.y = parseFloat(l.getAttribute("y")) || 0;
+h.rotation = parseFloat(l.getAttribute("rotation")) || 0;
+a(l, h);
+var u = l.getAttribute("visible");
+h.visible = !(u && 0 === parseInt(u));
+var _ = l.getAttribute("gid");
+if (_) {
+h.gid = parseInt(_);
+h.type = cc.TiledMap.TMXObjectType.IMAGE;
+}
+var f = l.getElementsByTagName("ellipse");
+f && f.length > 0 && (h.type = cc.TiledMap.TMXObjectType.ELLIPSE);
+var d = l.getElementsByTagName("polygon");
+if (d && d.length > 0) {
+h.type = cc.TiledMap.TMXObjectType.POLYGON;
+var m = d[0].getAttribute("points");
+m && (h.points = this._parsePointsString(m));
+}
+var p = l.getElementsByTagName("polyline");
+if (p && p.length > 0) {
+h.type = cc.TiledMap.TMXObjectType.POLYLINE;
+var v = p[0].getAttribute("points");
+v && (h.polylinePoints = this._parsePointsString(v));
+}
+h.type || (h.type = cc.TiledMap.TMXObjectType.RECT);
+e._objects.push(h);
+}
+return e;
+},
+_parsePointsString: function(t) {
+if (!t) return null;
+for (var e = [], i = t.split(" "), n = 0; n < i.length; n++) {
+var r = i[n].split(",");
+e.push({
+x: parseFloat(r[0]),
+y: parseFloat(r[1])
+});
+}
+return e;
+},
+getTileProperties: function() {
+return this._tileProperties;
+},
+setTileProperties: function(t) {
+this._tileProperties.push(t);
+},
+getCurrentString: function() {
+return this.currentString;
+},
+setCurrentString: function(t) {
+this.currentString = t;
+}
+};
+var c = cc.TMXMapInfo.prototype;
+s.getset(c, "mapWidth", c._getMapWidth, c._setMapWidth);
+s.getset(c, "mapHeight", c._getMapHeight, c._setMapHeight);
+s.getset(c, "tileWidth", c._getTileWidth, c._setTileWidth);
+s.getset(c, "tileHeight", c._getTileHeight, c._setTileHeight);
+cc.TMXLayerInfo.ATTRIB_NONE = 1;
+cc.TMXLayerInfo.ATTRIB_BASE64 = 2;
+cc.TMXLayerInfo.ATTRIB_GZIP = 4;
+cc.TMXLayerInfo.ATTRIB_ZLIB = 8;
+}), {
+"../compression/ZipUtils": 22,
+"../compression/zlib.min": 25,
+"../core/platform/CCSAXParser": 208,
+"../core/platform/js": 221
+} ],
+377: [ (function(i, n, r) {
+"use strict";
+var s = i("../core/components/CCRenderComponent"), o = i("../core/assets/material/CCMaterial"), a = cc.Class({
+name: "cc.TiledLayer",
+extends: s,
+editor: {
+inspector: "packages://inspector/inspectors/comps/tiled-layer.js"
+},
+ctor: function() {
+this._tiles = [];
+this._texGrids = [];
+this._textures = [];
+this._spriteTiles = {};
+this._tiledTiles = [];
+this._layerName = "";
+this._layerOrientation = null;
+},
+getLayerName: function() {
+return this._layerName;
+},
+setLayerName: function(t) {
+this._layerName = t;
+},
+getProperty: function(t) {
+return this._properties[t];
+},
+getPositionAt: function(t, e) {
+var i = void 0;
+if (void 0 !== e) {
+i = Math.floor(t);
+e = Math.floor(e);
+} else {
+i = Math.floor(t.x);
+e = Math.floor(t.y);
+}
+var n = void 0;
+switch (this._layerOrientation) {
+case cc.TiledMap.Orientation.ORTHO:
+n = this._positionForOrthoAt(i, e);
+break;
+
+case cc.TiledMap.Orientation.ISO:
+n = this._positionForIsoAt(i, e);
+break;
+
+case cc.TiledMap.Orientation.HEX:
+n = this._positionForHexAt(i, e);
+}
+return n;
+},
+_isInvalidPosition: function(i, n) {
+if (i && "object" === ("object" === (e = typeof i) ? t(i) : e)) {
+var r = i;
+n = r.y;
+i = r.x;
+}
+return i >= this._layerSize.width || n >= this._layerSize.height || i < 0 || n < 0;
+},
+_positionForIsoAt: function(t, e) {
+return cc.v2(this._mapTileSize.width / 2 * (this._layerSize.width + t - e - 1), this._mapTileSize.height / 2 * (2 * this._layerSize.height - t - e - 2));
+},
+_positionForOrthoAt: function(t, e) {
+return cc.v2(t * this._mapTileSize.width, (this._layerSize.height - e - 1) * this._mapTileSize.height);
+},
+_positionForHexAt: function(t, e) {
+var i = this._mapTileSize.width, n = this._mapTileSize.height, r = this._layerSize.height, s = this._tileset.tileOffset, o = this.node.width / 2, a = this.node.height / 2, c = this._staggerIndex === cc.TiledMap.StaggerIndex.STAGGERINDEX_ODD ? 1 : -1, l = 0, h = 0;
+switch (this._staggerAxis) {
+case cc.TiledMap.StaggerAxis.STAGGERAXIS_Y:
+var u = 0, _ = this._staggerIndex === cc.TiledMap.StaggerIndex.STAGGERINDEX_ODD ? 0 : i / 2;
+e % 2 == 1 && (u = i / 2 * c);
+l = t * i + u + _ + s.x - o;
+h = (r - e - 1) * (n - (n - this._hexSideLength) / 2) - s.y - a;
+break;
+
+case cc.TiledMap.StaggerAxis.STAGGERAXIS_X:
+var f = 0, d = this._staggerIndex === cc.TiledMap.StaggerIndex.STAGGERINDEX_ODD ? n / 2 : 0;
+t % 2 == 1 && (f = n / 2 * -c);
+l = t * (i - (i - this._hexSideLength) / 2) + s.x - o;
+h = (r - e - 1) * n + f + d - s.y - a;
+}
+return cc.v2(l, h);
+},
+setTileGIDAt: function(t, e, i, n) {
+if (void 0 === e) throw new Error("cc.TiledLayer.setTileGIDAt(): pos should be non-null");
+var r = void 0;
+if (void 0 === n && e instanceof cc.Vec2) {
+r = e;
+n = i;
+} else r = cc.v2(e, i);
+r.x = Math.floor(r.x);
+r.y = Math.floor(r.y);
+if (this._isInvalidPosition(r)) throw new Error("cc.TiledLayer.setTileGIDAt(): invalid position");
+if (this._tiles) if (0 !== t && t < this._tileset.firstGid) cc.logID(7239, t); else {
+n = n || 0;
+var s = this.getTileFlagsAt(r);
+if (this.getTileGIDAt(r) !== t || s !== n) {
+var o = (t | n) >>> 0;
+this._updateTileForGID(o, r);
+}
+} else cc.logID(7238);
+},
+_updateTileForGID: function(t, e) {
+if (0 === t || this._texGrids[t]) {
+var i = 0 | e.x + e.y * this._layerSize.width;
+i < this._tiles.length && (this._tiles[i] = t);
+}
+},
+getTileGIDAt: function(t, e) {
+if (void 0 === t) throw new Error("cc.TiledLayer.getTileGIDAt(): pos should be non-null");
+var i = t;
+if (void 0 === e) {
+i = t.x;
+e = t.y;
+}
+if (this._isInvalidPosition(i, e)) throw new Error("cc.TiledLayer.getTileGIDAt(): invalid position");
+if (!this._tiles) {
+cc.logID(7237);
+return null;
+}
+var n = Math.floor(i) + Math.floor(e) * this._layerSize.width;
+return (this._tiles[n] & cc.TiledMap.TileFlag.FLIPPED_MASK) >>> 0;
+},
+getTileFlagsAt: function(t, e) {
+if (!t) throw new Error("TiledLayer.getTileFlagsAt: pos should be non-null");
+void 0 !== e && (t = cc.v2(t, e));
+if (this._isInvalidPosition(t)) throw new Error("TiledLayer.getTileFlagsAt: invalid position");
+if (!this._tiles) {
+cc.logID(7240);
+return null;
+}
+var i = Math.floor(t.x) + Math.floor(t.y) * this._layerSize.width;
+return (this._tiles[i] & cc.TiledMap.TileFlag.FLIPPED_ALL) >>> 0;
+},
+getTiledTileAt: function(t, e, i) {
+if (this._isInvalidPosition(t, e)) throw new Error("TiledLayer.getTiledTileAt: invalid position");
+if (!this._tiles) {
+cc.logID(7236);
+return null;
+}
+var n = Math.floor(t) + Math.floor(e) * this._layerSize.width, r = this._tiledTiles[n];
+if (!r && i) {
+var s = new cc.Node();
+(r = s.addComponent(cc.TiledTile))._x = t;
+r._y = e;
+r._layer = this;
+r._updateInfo();
+s.parent = this.node;
+return r;
+}
+return r;
+},
+setTiledTileAt: function(t, e, i) {
+if (this._isInvalidPosition(t, e)) throw new Error("TiledLayer.setTiledTileAt: invalid position");
+if (!this._tiles) {
+cc.logID(7236);
+return null;
+}
+var n = Math.floor(t) + Math.floor(e) * this._layerSize.width;
+return this._tiledTiles[n] = i;
+},
+getTexture: function() {
+return this._texture;
+},
+setTexture: function(t) {
+this._texture = t;
+this._activateMaterial();
+},
+getLayerSize: function() {
+return this._layerSize;
+},
+getMapTileSize: function() {
+return this._mapTileSize;
+},
+getTileSet: function() {
+return this._tileset;
+},
+setTileSet: function(t) {
+this._tileset = t;
+},
+getLayerOrientation: function() {
+return this._layerOrientation;
+},
+getProperties: function() {
+return this._properties;
+},
+_init: function(t, e, i) {
+var n = e._layerSize;
+this._layerName = e.name;
+this._tiles = e._tiles;
+this._properties = e.properties;
+this._layerSize = n;
+this._minGID = e._minGID;
+this._maxGID = e._maxGID;
+this._opacity = e._opacity;
+this._staggerAxis = i.getStaggerAxis();
+this._staggerIndex = i.getStaggerIndex();
+this._hexSideLength = i.getHexSideLength();
+this._tileset = t;
+this._layerOrientation = i.orientation;
+this._mapTileSize = i.getTileSize();
+var r = i._tilesets;
+if (r) {
+this._textures.length = r.length;
+this._texGrids.length = 0;
+for (var s = 0, o = r.length; s < o; ++s) {
+var a = r[s], c = a.sourceImage;
+this._textures[s] = c;
+this._fillTextureGrids(a, s);
+t === a && (this._texture = c);
+}
+}
+this._offset = this._calculateLayerOffset(e.offset);
+if (this._layerOrientation === cc.TiledMap.Orientation.HEX) {
+var l = 0, h = 0;
+if (this._staggerAxis === cc.TiledMap.StaggerAxis.STAGGERAXIS_X) {
+h = i._tileSize.height * (this._layerSize.height + .5);
+l = (i._tileSize.width + this._hexSideLength) * Math.floor(this._layerSize.width / 2) + i._tileSize.width * (this._layerSize.width % 2);
+} else {
+l = i._tileSize.width * (this._layerSize.width + .5);
+h = (i._tileSize.height + this._hexSideLength) * Math.floor(this._layerSize.height / 2) + i._tileSize.height * (this._layerSize.height % 2);
+}
+this.node.setContentSize(l, h);
+} else this.node.setContentSize(this._layerSize.width * this._mapTileSize.width, this._layerSize.height * this._mapTileSize.height);
+this._useAutomaticVertexZ = !1;
+this._vertexZvalue = 0;
+this._activateMaterial();
+},
+_calculateLayerOffset: function(t) {
+var e = cc.v2(0, 0);
+switch (this._layerOrientation) {
+case cc.TiledMap.Orientation.ORTHO:
+e = cc.v2(t.x * this._mapTileSize.width, -t.y * this._mapTileSize.height);
+break;
+
+case cc.TiledMap.Orientation.ISO:
+e = cc.v2(this._mapTileSize.width / 2 * (t.x - t.y), this._mapTileSize.height / 2 * (-t.x - t.y));
+break;
+
+case cc.TiledMap.Orientation.HEX:
+if (this._staggerAxis === cc.TiledMap.StaggerAxis.STAGGERAXIS_Y) {
+var i = this._staggerIndex === cc.TiledMap.StaggerIndex.STAGGERINDEX_EVEN ? this._mapTileSize.width / 2 : 0;
+e = cc.v2(t.x * this._mapTileSize.width + i, -t.y * (this._mapTileSize.height - (this._mapTileSize.width - this._hexSideLength) / 2));
+} else if (this._staggerAxis === cc.TiledMap.StaggerAxis.STAGGERAXIS_X) {
+var n = this._staggerIndex === cc.TiledMap.StaggerIndex.STAGGERINDEX_ODD ? this._mapTileSize.height / 2 : 0;
+e = cc.v2(t.x * (this._mapTileSize.width - (this._mapTileSize.width - this._hexSideLength) / 2), -t.y * this._mapTileSize.height + n);
+}
+}
+return e;
+},
+_fillTextureGrids: function(t, e) {
+var i = this._textures[e];
+if (i) if (i.loaded) {
+if (!t.imageSize.width || !t.imageSize.height) {
+t.imageSize.width = i.width;
+t.imageSize.height = i.height;
+}
+for (var n = t._tileSize.width, r = t._tileSize.height, s = i.width, o = i.height, a = t.spacing, c = t.margin, l = Math.floor((s - 2 * c + a) / (n + a)), h = Math.floor((o - 2 * c + a) / (r + a)) * l, u = t.firstGid, _ = t.firstGid + h, f = this._texGrids, d = null, m = !!f[u], p = cc.macro.FIX_ARTIFACTS_BY_STRECHING_TEXEL_TMX ? .5 : 0; u < _; ++u) {
+m && !f[u] && (m = !1);
+if (!m && f[u]) break;
+d = {
+texId: e,
+x: 0,
+y: 0,
+width: n,
+height: r,
+t: 0,
+l: 0,
+r: 0,
+b: 0
+};
+t.rectForGID(u, d);
+d.x += p;
+d.y += p;
+d.width -= 2 * p;
+d.height -= 2 * p;
+d.t = d.y / o;
+d.l = d.x / s;
+d.r = (d.x + d.width) / s;
+d.b = (d.y + d.height) / o;
+f[u] = d;
+}
+} else i.once("load", (function() {
+this._fillTextureGrids(t, e);
+}), this);
+},
+onEnable: function() {
+this._super();
+this._activateMaterial();
+},
+_activateMaterial: function() {
+if (this._texture) {
+var t = this.sharedMaterials[0];
+(t = t ? o.getInstantiatedMaterial(t, this) : o.getInstantiatedBuiltinMaterial("2d-sprite", this)).setProperty("texture", this._texture);
+this.setMaterial(0, t);
+this.markForRender(!0);
+} else this.disableRender();
+}
+});
+cc.TiledLayer = n.exports = a;
+}), {
+"../core/assets/material/CCMaterial": 75,
+"../core/components/CCRenderComponent": 106
+} ],
+378: [ (function(t, e, i) {
+"use strict";
+t("./CCTMXXMLParser");
+t("./CCTiledMapAsset");
+t("./CCTiledLayer");
+t("./CCTiledTile");
+t("./CCTiledObjectGroup");
+var n = cc.Enum({
+ORTHO: 0,
+HEX: 1,
+ISO: 2
+}), r = cc.Enum({
+NONE: 0,
+MAP: 1,
+LAYER: 2,
+OBJECTGROUP: 3,
+OBJECT: 4,
+TILE: 5
+}), s = cc.Enum({
+HORIZONTAL: 2147483648,
+VERTICAL: 1073741824,
+DIAGONAL: 536870912,
+FLIPPED_ALL: 3758096384,
+FLIPPED_MASK: 536870911
+}), o = cc.Enum({
+STAGGERAXIS_X: 0,
+STAGGERAXIS_Y: 1
+}), a = cc.Enum({
+STAGGERINDEX_ODD: 0,
+STAGGERINDEX_EVEN: 1
+}), c = cc.Enum({
+RECT: 0,
+ELLIPSE: 1,
+POLYGON: 2,
+POLYLINE: 3,
+IMAGE: 4,
+TEXT: 5
+}), l = cc.Class({
+name: "cc.TiledMap",
+extends: cc.Component,
+editor: !1,
+ctor: function() {
+this._layers = [];
+this._groups = [];
+this._properties = [];
+this._tileProperties = [];
+this._mapSize = cc.size(0, 0);
+this._tileSize = cc.size(0, 0);
+},
+statics: {
+Orientation: n,
+Property: r,
+TileFlag: s,
+StaggerAxis: o,
+StaggerIndex: a,
+TMXObjectType: c
+},
+properties: {
+_tmxFile: {
+default: null,
+type: cc.TiledMapAsset
+},
+tmxAsset: {
+get: function() {
+return this._tmxFile;
+},
+set: function(t, e) {
+if (this._tmxFile !== t) {
+this._tmxFile = t;
+this._applyFile();
+}
+},
+type: cc.TiledMapAsset
+}
+},
+getMapSize: function() {
+return this._mapSize;
+},
+getTileSize: function() {
+return this._tileSize;
+},
+getMapOrientation: function() {
+return this._mapOrientation;
+},
+getObjectGroups: function() {
+return this._groups;
+},
+getObjectGroup: function(t) {
+for (var e = this._groups, i = 0, n = e.length; i < n; i++) {
+var r = e[i];
+if (r && r.getGroupName() === t) return r;
+}
+return null;
+},
+getProperties: function() {
+return this._properties;
+},
+getLayers: function() {
+return this._layers;
+},
+getLayer: function(t) {
+for (var e = this._layers, i = 0, n = e.length; i < n; i++) {
+var r = e[i];
+if (r && r.getLayerName() === t) return r;
+}
+return null;
+},
+getProperty: function(t) {
+return this._properties[t.toString()];
+},
+getPropertiesForGID: function(t) {
+return this._tileProperties[t];
+},
+__preload: function() {
+this._tmxFile && this._applyFile();
+},
+onEnable: function() {
+this.node.on(cc.Node.EventType.ANCHOR_CHANGED, this._syncAnchorPoint, this);
+},
+onDisable: function() {
+this.node.off(cc.Node.EventType.ANCHOR_CHANGED, this._syncAnchorPoint, this);
+},
+_applyFile: function() {
+var t = this._tmxFile;
+if (t) {
+for (var e = t.textures, i = t.textureNames, n = {}, r = 0; r < e.length; ++r) n[i[r]] = e[r];
+for (var s = t.tsxFileNames, o = t.tsxFiles, a = {}, c = 0; c < s.length; ++c) s[c].length > 0 && (a[s[c]] = o[c].text);
+var l = new cc.TMXMapInfo(t.tmxXmlStr, a, n), h = l.getTilesets();
+h && 0 !== h.length || cc.logID(7241);
+this._buildWithMapInfo(l);
+} else this._releaseMapInfo();
+},
+_releaseMapInfo: function() {
+for (var t = this._layers, e = 0, i = t.length; e < i; e++) t[e].node.removeFromParent();
+t.length = 0;
+for (var n = this._groups, r = 0, s = n.length; r < s; r++) n[r].node.removeFromParent();
+n.length = 0;
+},
+_syncAnchorPoint: function() {
+for (var t = this.node.getAnchorPoint(), e = 0, i = this._layers.length; e < i; e++) this._layers[e].node.setAnchorPoint(t);
+},
+_buildWithMapInfo: function(t) {
+this._mapSize = t.getMapSize();
+this._tileSize = t.getTileSize();
+this._mapOrientation = t.orientation;
+this._properties = t.properties;
+this._tileProperties = t.getTileProperties();
+this._releaseMapInfo();
+var e = this._layers, i = this._groups, n = this.node, r = t.getAllChildren();
+if (r && r.length > 0) for (var s = 0, o = r.length; s < o; s++) {
+var a = r[s], c = a.name, l = this.node.getChildByName(c);
+if (!l) {
+(l = new cc.Node()).name = c;
+n.addChild(l);
+}
+if (a instanceof cc.TMXLayerInfo && a.visible) {
+var h = l.getComponent(cc.TiledLayer);
+h || (h = l.addComponent(cc.TiledLayer));
+var u = this._tilesetForLayer(a, t);
+h._init(u, a, t);
+a.ownTiles = !1;
+this.node.width = Math.max(this.node.width, l.width);
+this.node.height = Math.max(this.node.height, l.height);
+e.push(h);
+} else if (a instanceof cc.TMXObjectGroupInfo) {
+var _ = l.getComponent(cc.TiledObjectGroup);
+_ || (_ = l.addComponent(cc.TiledObjectGroup));
+_._init(a, t);
+i.push(_);
+}
+}
+this._syncAnchorPoint();
+},
+_tilesetForLayer: function(t, e) {
+var i = t._layerSize, n = e.getTilesets();
+if (n) for (var r = n.length - 1; r >= 0; r--) {
+var s = n[r];
+if (s) for (var o = 0; o < i.height; o++) for (var a = 0; a < i.width; a++) {
+var c = a + i.width * o, l = t._tiles[c];
+if (0 !== l && (l & cc.TiledMap.TileFlag.FLIPPED_MASK) >>> 0 >= s.firstGid) return s;
+}
+}
+cc.logID(7215, t.name);
+return null;
+}
+});
+cc.TiledMap = e.exports = l;
+cc.js.obsolete(cc.TiledMap.prototype, "cc.TiledMap.tmxFile", "tmxAsset", !0);
+cc.js.get(cc.TiledMap.prototype, "mapLoaded", (function() {
+cc.errorID(7203);
+return [];
+}), !1);
+}), {
+"./CCTMXXMLParser": 376,
+"./CCTiledLayer": 377,
+"./CCTiledMapAsset": 379,
+"./CCTiledObjectGroup": 380,
+"./CCTiledTile": 381
+} ],
+379: [ (function(t, e, i) {
+"use strict";
+var n = cc.Class({
+name: "cc.TiledMapAsset",
+extends: cc.Asset,
+properties: {
+tmxXmlStr: "",
+textures: {
+default: [],
+type: [ cc.Texture2D ]
+},
+textureNames: [ cc.String ],
+tsxFiles: [ cc.TextAsset ],
+tsxFileNames: [ cc.String ]
+},
+statics: {
+preventDeferredLoadDependents: !0
+},
+createNode: !1
+});
+cc.TiledMapAsset = n;
+e.exports = n;
+}), {} ],
+380: [ (function(t, e, i) {
+"use strict";
+var n = cc.Class({
+name: "cc.TiledObjectGroup",
+extends: cc.Component,
+getPositionOffset: function() {
+return this._positionOffset;
+},
+getProperties: function() {
+this._properties;
+},
+getGroupName: function() {
+return this._groupName;
+},
+getProperty: function(t) {
+return this._properties[t.toString()];
+},
+getObject: function(t) {
+for (var e = 0, i = this._objects.length; e < i; e++) {
+var n = this._objects[e];
+if (n && n.name === t) return n;
+}
+return null;
+},
+getObjects: function() {
+return this._objects;
+},
+_init: function(t, e) {
+this._groupName = t.name;
+this._positionOffset = t.offset;
+this._mapInfo = e;
+this._properties = t.getProperties();
+var i = e._mapSize, n = e._tileSize, r = 0, s = 0;
+if (e.orientation === cc.TiledMap.Orientation.HEX) if (e.getStaggerAxis() === cc.TiledMap.StaggerAxis.STAGGERAXIS_X) {
+s = n.height * (i.height + .5);
+r = (n.width + e.getHexSideLength()) * Math.floor(i.width / 2) + n.width * (i.width % 2);
+} else {
+r = n.width * (i.width + .5);
+s = (n.height + e.getHexSideLength()) * Math.floor(i.height / 2) + n.height * (i.height % 2);
+} else {
+r = i.width * n.width;
+s = i.height * n.height;
+}
+this.node.setContentSize(r, s);
+for (var o = t._objects, a = 0, c = o.length; a < c; a++) {
+var l = o[a];
+l.offset = cc.v2(l.x, l.y);
+var h = l.points || l.polylinePoints;
+if (h) for (var u = 0; u < h.length; u++) h[u].y *= -1;
+if (cc.TiledMap.Orientation.ISO !== e.orientation) l.y = s - l.y; else {
+var _ = l.x / n.width * 2, f = l.y / n.height;
+l.x = n.width / 2 * (i.width + _ - f);
+l.y = n.height / 2 * (2 * i.height - _ - f);
+}
+}
+this._objects = o;
+}
+});
+cc.TiledObjectGroup = e.exports = n;
+}), {} ],
+381: [ (function(t, e, i) {
+"use strict";
+var n = cc.Class({
+name: "cc.TiledTile",
+extends: cc.Component,
+editor: !1,
+ctor: function() {
+this._layer = null;
+},
+properties: {
+_x: 0,
+_y: 0,
+x: {
+get: function() {
+return this._x;
+},
+set: function(t) {
+if (t !== this._x) if (this._layer && this._layer._isInvalidPosition(t, this._y)) cc.warn("Invalid x, the valid value is between [%s] ~ [%s]", 0, this._layer._layerSize.width); else {
+this._resetTile();
+this._x = t;
+this._updateInfo();
+}
+},
+type: cc.Integer
+},
+y: {
+get: function() {
+return this._y;
+},
+set: function(t) {
+if (t !== this._y) if (this._layer && this._layer._isInvalidPosition(this._x, t)) cc.warn("Invalid y, the valid value is between [%s] ~ [%s]", 0, this._layer._layerSize.height); else {
+this._resetTile();
+this._y = t;
+this._updateInfo();
+}
+},
+type: cc.Integer
+},
+gid: {
+get: function() {
+return this._layer ? this._layer.getTileGIDAt(this._x, this._y) : 0;
+},
+set: function(t) {
+this._layer && this._layer.setTileGIDAt(t, this._x, this._y);
+},
+type: cc.Integer
+}
+},
+onEnable: function() {
+var t = this.node.parent;
+this._layer = t.getComponent(cc.TiledLayer);
+this._resetTile();
+this._updateInfo();
+},
+onDisable: function() {
+this._resetTile();
+},
+_resetTile: function() {
+this._layer && this._layer.getTiledTileAt(this._x, this._y) === this && this._layer.setTiledTileAt(this._x, this._y, null);
+},
+_updateInfo: function() {
+if (this._layer) {
+var t = this._x, e = this._y;
+if (this._layer.getTiledTileAt(t, e)) cc.warn("There is already a TiledTile at [%s, %s]", t, e); else {
+this.node.setPosition(this._layer.getPositionAt(t, e));
+this._layer.setTiledTileAt(t, e, this);
+}
+}
+}
+});
+cc.TiledTile = e.exports = n;
+}), {} ],
+382: [ (function(t, e, i) {
+"use strict";
+t("./CCTiledMap");
+t("./tmx-layer-assembler");
+}), {
+"./CCTiledMap": 378,
+"./tmx-layer-assembler": 383
+} ],
+383: [ (function(t, e, i) {
+"use strict";
+var n = t("../core/vmath"), r = t("./CCTiledLayer"), s = t("./CCTiledMap"), o = t("../core/renderer/render-flow"), a = s.Orientation, c = s.TileFlag, l = c.FLIPPED_MASK, h = s.StaggerAxis, u = s.StaggerIndex, _ = n.mat4.create(), f = n.mat4.create(), d = n.vec3.create(), m = {
+updateRenderData: function(t) {
+var e = t._renderData;
+e || (e = t._renderData = t.requestRenderData());
+var i = t.node._contentSize, n = t.node._anchorPoint;
+e.updateSizeNPivot(i.width, i.height, n.x, n.y);
+e.material = t.sharedMaterials[0];
+this.updateVertices(t);
+},
+fillBuffers: function(t, e) {
+for (var i = t._renderData, n = i._data, r = e._meshBuffer, s = i.vertexCount, a = r.request(s, i.indiceCount), c = a.indiceOffset, l = a.byteOffset >> 2, h = a.vertexOffset, u = r._vData, _ = r._iData, f = r._uintVData, d = 0, m = i.vertexCount; d < m; d++) {
+var p = n[d];
+u[l++] = p.x;
+u[l++] = p.y;
+u[l++] = p.u;
+u[l++] = p.v;
+f[l++] = p.color;
+}
+for (var v = 0, y = i.indiceCount; v < y; v += 6) {
+_[c++] = h;
+_[c++] = h + 1;
+_[c++] = h + 2;
+_[c++] = h + 1;
+_[c++] = h + 3;
+_[c++] = h + 2;
+h += 4;
+}
+t.node._renderFlag |= o.FLAG_UPDATE_RENDER_DATA;
+},
+updateVertices: function(t) {
+var e = t.node, i = t._renderData, r = i._data, s = e._color._val, o = e._color.a;
+i.dataLength = i.vertexCount = i.indiceCount = 0;
+var m = t._layerOrientation;
+if (t._tiles && t._tileset) {
+var p = e._anchorPoint.x * e._contentSize.width, v = e._anchorPoint.y * e._contentSize.height;
+n.mat4.copy(_, e._worldMatrix);
+n.vec3.set(d, -p, -v, 0);
+n.mat4.translate(_, _, d);
+var y = _.m00, g = _.m01, x = _.m04, C = _.m05, b = _.m12, A = _.m13, S = t._mapTileSize.width, w = t._mapTileSize.height, T = t._tileset._tileSize.width, E = t._tileset._tileSize.height, M = T - S, B = E - w, D = cc.winSize.width, I = cc.winSize.height, P = t._layerSize.height, R = t._layerSize.width, L = t._texGrids, F = t._tiledTiles, O = t._offset.x, V = t._offset.y, N = 0, k = 0, z = R, G = P, U = y, j = C, W = b += O * y + V * x, H = A += O * g + V * C, q = T * y, X = E * C, Y = cc.macro.ENABLE_TILEDMAP_CULLING;
+if (Y) {
+var J = cc.Camera.findCamera(t.node);
+if (J) {
+J.getWorldToScreenMatrix2D(f);
+n.mat4.mul(_, f, _);
+U = _.m00;
+j = _.m05;
+W = O * U + V * _.m04 + _.m12;
+H = O * _.m01 + V * j + _.m13;
+q = T * U;
+X = E * j;
+}
+if (m === a.ORTHO) {
+n.mat4.invert(_, _);
+var Z = cc.visibleRect, K = _.m00, Q = _.m01, $ = _.m04, tt = _.m05, et = _.m12, it = _.m13, nt = Z.topLeft.x * K + Z.topLeft.y * $ + et, rt = Z.topLeft.x * Q + Z.topLeft.y * tt + it, st = Z.bottomLeft.x * K + Z.bottomLeft.y * $ + et, ot = Z.bottomLeft.x * Q + Z.bottomLeft.y * tt + it, at = Z.topRight.x * K + Z.topRight.y * $ + et, ct = Z.topRight.x * Q + Z.topRight.y * tt + it, lt = Z.bottomRight.x * K + Z.bottomRight.y * $ + et, ht = Z.bottomRight.x * Q + Z.bottomRight.y * tt + it, ut = Math.min(nt, st, at, lt), _t = Math.max(nt, st, at, lt), ft = Math.min(rt, ot, ct, ht), dt = Math.max(rt, ot, ct, ht);
+N = Math.floor(ut / S);
+k = P - Math.ceil(dt / w);
+z = Math.ceil((_t + M) / S);
+G = P - Math.floor((ft - B) / w);
+N < 0 && (N = 0);
+k < 0 && (k = 0);
+z > R && (z = R);
+G > P && (G = P);
+}
+}
+var mt = k * R, pt = void 0, vt = void 0, yt = void 0, gt = void 0, xt = void 0, Ct = void 0, bt = void 0, At = void 0, St = void 0, wt = void 0, Tt = void 0, Et = void 0, Mt = void 0;
+if (m === a.HEX) {
+var Bt = t._hexSideLength;
+St = t._staggerAxis;
+wt = t._tileset.tileOffset;
+Mt = t._staggerIndex === u.STAGGERINDEX_ODD ? 1 : -1;
+Tt = St === h.STAGGERAXIS_X ? (S - Bt) / 2 : 0;
+Et = St === h.STAGGERAXIS_Y ? (w - Bt) / 2 : 0;
+}
+for (var Dt = 0, It = void 0, Pt = void 0, Rt = void 0, Lt = void 0, Ft = void 0, Ot = void 0, Vt = void 0, Nt = k; Nt < G; ++Nt) {
+for (var kt = N; kt < z; ++kt) {
+var zt = mt + kt, Gt = !1, Ut = !1, jt = F[zt];
+if (vt = L[((pt = jt ? jt.gid : t._tiles[zt]) & l) >>> 0]) {
+switch (m) {
+case a.ORTHO:
+gt = kt * S;
+xt = (P - Nt - 1) * w;
+break;
+
+case a.ISO:
+gt = S / 2 * (R + kt - Nt - 1);
+xt = w / 2 * (2 * P - kt - Nt - 2);
+break;
+
+case a.HEX:
+gt = kt * (S - Tt) + (St === h.STAGGERAXIS_Y && Nt % 2 == 1 ? S / 2 * Mt : 0) + wt.x;
+xt = (P - Nt - 1) * (w - Et) + (St === h.STAGGERAXIS_X && kt % 2 == 1 ? w / 2 * -Mt : 0) - wt.y;
+}
+if (jt) {
+var Wt = jt.node;
+Vt = s;
+var Ht = Wt.opacity * o / 255;
+s = Wt.color.setA(Ht)._val;
+It = y;
+Pt = g;
+Rt = x;
+Lt = C;
+Ft = b;
+Ot = A;
+Wt._updateLocalMatrix();
+n.mat4.copy(_, Wt._matrix);
+n.vec3.set(d, -gt, -xt, 0);
+n.mat4.translate(_, _, d);
+n.mat4.multiply(_, e._worldMatrix, _);
+y = _.m00;
+g = _.m01;
+x = _.m04;
+C = _.m05;
+b = _.m12;
+A = _.m13;
+}
+Ct = gt + T;
+yt = xt + E;
+if (Y && m === a.ISO) {
+if ((bt = H + xt * j) > I + X) {
+kt += Math.floor(2 * (bt - I) / X) - 1;
+continue;
+}
+if ((At = W + Ct * U) < -q) {
+kt += Math.floor(2 * -At / q) - 1;
+continue;
+}
+if (W + gt * U > D || H + yt * j < 0) {
+kt = z;
+continue;
+}
+}
+if (pt > c.DIAGONAL) {
+Gt = (pt & c.HORIZONTAL) >>> 0;
+Ut = (pt & c.VERTICAL) >>> 0;
+}
+i.vertexCount += 4;
+i.indiceCount += 6;
+i.dataLength = i.vertexCount;
+r[Dt].x = gt * y + yt * x + b;
+r[Dt].y = gt * g + yt * C + A;
+r[Dt].u = Gt ? vt.r : vt.l;
+r[Dt].v = Ut ? vt.b : vt.t;
+r[Dt].color = s;
+r[++Dt].x = gt * y + xt * x + b;
+r[Dt].y = gt * g + xt * C + A;
+r[Dt].u = Gt ? vt.r : vt.l;
+r[Dt].v = Ut ? vt.t : vt.b;
+r[Dt].color = s;
+r[++Dt].x = Ct * y + yt * x + b;
+r[Dt].y = Ct * g + yt * C + A;
+r[Dt].u = Gt ? vt.l : vt.r;
+r[Dt].v = Ut ? vt.b : vt.t;
+r[Dt].color = s;
+r[++Dt].x = Ct * y + xt * x + b;
+r[Dt].y = Ct * g + xt * C + A;
+r[Dt].u = Gt ? vt.l : vt.r;
+r[Dt].v = Ut ? vt.t : vt.b;
+r[Dt].color = s;
+Dt++;
+if (jt) {
+s = Vt;
+y = It;
+g = Pt;
+x = Rt;
+C = Lt;
+b = Ft;
+A = Ot;
+}
+}
+}
+mt += R;
+}
+}
+}
+};
+e.exports = r._assembler = m;
+}), {
+"../core/renderer/render-flow": 245,
+"../core/vmath": 317,
+"./CCTiledLayer": 377,
+"./CCTiledMap": 378
+} ],
+384: [ (function(t, e, i) {
+"use strict";
+var n = t("./video-player-impl"), r = n.EventType, s = cc.Enum({
+REMOTE: 0,
+LOCAL: 1
+}), o = cc.Class({
+name: "cc.VideoPlayer",
+extends: cc.Component,
+editor: !1,
+properties: {
+_resourceType: s.REMOTE,
+resourceType: {
+tooltip: !1,
+type: s,
+set: function(t) {
+this._resourceType = t;
+this._updateVideoSource();
+},
+get: function() {
+return this._resourceType;
+}
+},
+_remoteURL: "",
+remoteURL: {
+tooltip: !1,
+type: cc.String,
+set: function(t) {
+this._remoteURL = t;
+this._updateVideoSource();
+},
+get: function() {
+return this._remoteURL;
+}
+},
+_clip: {
+default: null,
+type: cc.Asset
+},
+clip: {
+tooltip: !1,
+get: function() {
+return this._clip;
+},
+set: function(t) {
+this._clip = t;
+this._updateVideoSource();
+},
+type: cc.Asset
+},
+currentTime: {
+tooltip: !1,
+type: cc.Float,
+set: function(t) {
+this._impl && this._impl.seekTo(t);
+},
+get: function() {
+return this._impl ? this._impl.currentTime() : -1;
+}
+},
+_volume: 1,
+volume: {
+get: function() {
+return this._volume;
+},
+set: function(t) {
+this._volume = t;
+this.isPlaying() && !this._mute && this._syncVolume();
+},
+range: [ 0, 1 ],
+type: cc.Float,
+tooltip: !1
+},
+_mute: !1,
+mute: {
+get: function() {
+return this._mute;
+},
+set: function(t) {
+this._mute = t;
+this._syncVolume();
+},
+tooltip: !1
+},
+keepAspectRatio: {
+tooltip: !1,
+default: !0,
+type: cc.Boolean,
+notify: function() {
+this._impl.setKeepAspectRatioEnabled(this.keepAspectRatio);
+}
+},
+isFullscreen: {
+tooltip: !1,
+default: !1,
+type: cc.Boolean,
+notify: function() {
+this._impl.setFullScreenEnabled(this.isFullscreen);
+}
+},
+videoPlayerEvent: {
+default: [],
+type: cc.Component.EventHandler
+}
+},
+statics: {
+EventType: r,
+ResourceType: s,
+Impl: n
+},
+ctor: function() {
+this._impl = new n();
+},
+_syncVolume: function() {
+var t = this._impl;
+if (t) {
+var e = this._mute ? 0 : this._volume;
+t.setVolume(e);
+}
+},
+_updateVideoSource: function() {
+var t = "";
+this.resourceType === s.REMOTE ? t = this.remoteURL : this._clip && (t = this._clip.nativeUrl || "");
+t && cc.loader.md5Pipe && (t = cc.loader.md5Pipe.transformURL(t));
+this._impl.setURL(t, this._mute || 0 === this._volume);
+},
+onLoad: function() {
+var t = this._impl;
+if (t) {
+t.createDomElementIfNeeded(this._mute || 0 === this._volume);
+this._updateVideoSource();
+t.seekTo(this.currentTime);
+t.setKeepAspectRatioEnabled(this.keepAspectRatio);
+t.setFullScreenEnabled(this.isFullscreen);
+this.pause();
+t.setEventListener(r.PLAYING, this.onPlaying.bind(this));
+t.setEventListener(r.PAUSED, this.onPasued.bind(this));
+t.setEventListener(r.STOPPED, this.onStopped.bind(this));
+t.setEventListener(r.COMPLETED, this.onCompleted.bind(this));
+t.setEventListener(r.META_LOADED, this.onMetaLoaded.bind(this));
+t.setEventListener(r.CLICKED, this.onClicked.bind(this));
+t.setEventListener(r.READY_TO_PLAY, this.onReadyToPlay.bind(this));
+}
+},
+onRestore: function() {
+this._impl || (this._impl = new n());
+},
+onEnable: function() {
+this._impl && this._impl.enable();
+},
+onDisable: function() {
+this._impl && this._impl.disable();
+},
+onDestroy: function() {
+if (this._impl) {
+this._impl.destroy();
+this._impl = null;
+}
+},
+update: function(t) {
+this._impl && this._impl.updateMatrix(this.node);
+},
+onReadyToPlay: function() {
+cc.Component.EventHandler.emitEvents(this.videoPlayerEvent, this, r.READY_TO_PLAY);
+this.node.emit("ready-to-play", this);
+},
+onMetaLoaded: function() {
+cc.Component.EventHandler.emitEvents(this.videoPlayerEvent, this, r.META_LOADED);
+this.node.emit("meta-loaded", this);
+},
+onClicked: function() {
+cc.Component.EventHandler.emitEvents(this.videoPlayerEvent, this, r.CLICKED);
+this.node.emit("clicked", this);
+},
+onPlaying: function() {
+cc.Component.EventHandler.emitEvents(this.videoPlayerEvent, this, r.PLAYING);
+this.node.emit("playing", this);
+},
+onPasued: function() {
+cc.Component.EventHandler.emitEvents(this.videoPlayerEvent, this, r.PAUSED);
+this.node.emit("paused", this);
+},
+onStopped: function() {
+cc.Component.EventHandler.emitEvents(this.videoPlayerEvent, this, r.STOPPED);
+this.node.emit("stopped", this);
+},
+onCompleted: function() {
+cc.Component.EventHandler.emitEvents(this.videoPlayerEvent, this, r.COMPLETED);
+this.node.emit("completed", this);
+},
+play: function() {
+if (this._impl) {
+this._syncVolume();
+this._impl.play();
+}
+},
+resume: function() {
+if (this._impl) {
+this._syncVolume();
+this._impl.resume();
+}
+},
+pause: function() {
+this._impl && this._impl.pause();
+},
+stop: function() {
+this._impl && this._impl.stop();
+},
+getDuration: function() {
+return this._impl ? this._impl.duration() : -1;
+},
+isPlaying: function() {
+return !!this._impl && this._impl.isPlaying();
+}
+});
+cc.VideoPlayer = e.exports = o;
+}), {
+"./video-player-impl": 385
+} ],
+385: [ (function(t, e, i) {
+"use strict";
+var n = t("../core/vmath"), r = t("../core/platform/utils"), s = t("../core/platform/CCSys"), o = {
+HAVE_NOTHING: 0,
+HAVE_METADATA: 1,
+HAVE_CURRENT_DATA: 2,
+HAVE_FUTURE_DATA: 3,
+HAVE_ENOUGH_DATA: 4
+}, a = n.mat4.create(), c = cc.Class({
+name: "VideoPlayerImpl",
+ctor: function() {
+this._EventList = {};
+this._video = null;
+this._url = "";
+this._fullScreenEnabled = !1;
+this._loadedmeta = !1;
+this._loaded = !1;
+this._visible = !1;
+this._playing = !1;
+this._ignorePause = !1;
+this._forceUpdate = !0;
+this._m00 = 0;
+this._m01 = 0;
+this._m04 = 0;
+this._m05 = 0;
+this._m12 = 0;
+this._m13 = 0;
+this._w = 0;
+this._h = 0;
+this.__eventListeners = {};
+},
+_bindEvent: function() {
+var t = this._video, e = this, i = this.__eventListeners;
+i.loadedmetadata = function() {
+e._loadedmeta = !0;
+e._fullScreenEnabled ? cc.screen.requestFullScreen(t) : cc.screen.fullScreen() && cc.screen.exitFullScreen(t);
+e._dispatchEvent(c.EventType.META_LOADED);
+};
+i.ended = function() {
+if (e._video === t) {
+e._playing = !1;
+e._dispatchEvent(c.EventType.COMPLETED);
+}
+};
+i.play = function() {
+if (e._video === t) {
+e._playing = !0;
+e._updateVisibility();
+e._dispatchEvent(c.EventType.PLAYING);
+}
+};
+i.pause = function() {
+if (e._video === t) {
+e._playing = !1;
+e._ignorePause || e._dispatchEvent(c.EventType.PAUSED);
+}
+};
+i.click = function() {
+e._dispatchEvent(c.EventType.CLICKED);
+};
+t.addEventListener("loadedmetadata", i.loadedmetadata);
+t.addEventListener("ended", i.ended);
+t.addEventListener("play", i.play);
+t.addEventListener("pause", i.pause);
+t.addEventListener("click", i.click);
+i.onCanPlay = function() {
+if (!e._loaded && !e._playing) {
+var t = e._video;
+if (t.readyState === o.HAVE_ENOUGH_DATA || t.readyState === o.HAVE_METADATA) {
+t.currentTime = 0;
+e._loaded = !0;
+e._dispatchEvent(c.EventType.READY_TO_PLAY);
+e._updateVisibility();
+}
+}
+};
+t.addEventListener("canplay", i.onCanPlay);
+t.addEventListener("canplaythrough", i.onCanPlay);
+t.addEventListener("suspend", i.onCanPlay);
+},
+_updateVisibility: function() {
+var t = this._video;
+if (t) if (this._visible) {
+t.style.visibility = "visible";
+this._forceUpdate = !0;
+} else {
+t.style.visibility = "hidden";
+t.pause();
+this._playing = !1;
+this._forceUpdate = !1;
+}
+},
+_updateSize: function(t, e) {
+var i = this._video;
+if (i) {
+i.style.width = t + "px";
+i.style.height = e + "px";
+}
+},
+_createDom: function(t) {
+var e = document.createElement("video");
+e.style.position = "absolute";
+e.style.bottom = "0px";
+e.style.left = "0px";
+e.className = "cocosVideo";
+e.setAttribute("preload", "auto");
+e.setAttribute("webkit-playsinline", "");
+e.setAttribute("x5-playsinline", "");
+e.setAttribute("playsinline", "");
+t && e.setAttribute("muted", "");
+this._video = e;
+cc.game.container.appendChild(e);
+},
+createDomElementIfNeeded: function(t) {
+this._video || this._createDom(t);
+},
+removeDom: function() {
+var t = this._video;
+if (t) {
+r.contains(cc.game.container, t) && cc.game.container.removeChild(t);
+var e = this.__eventListeners;
+t.removeEventListener("loadedmetadata", e.loadedmetadata);
+t.removeEventListener("ended", e.ended);
+t.removeEventListener("play", e.play);
+t.removeEventListener("pause", e.pause);
+t.removeEventListener("click", e.click);
+t.removeEventListener("canplay", e.onCanPlay);
+t.removeEventListener("canplaythrough", e.onCanPlay);
+t.removeEventListener("suspend", e.onCanPlay);
+e.loadedmetadata = null;
+e.ended = null;
+e.play = null;
+e.pause = null;
+e.click = null;
+e.onCanPlay = null;
+}
+this._video = null;
+this._url = "";
+},
+setURL: function(t, e) {
+var i, n = void 0;
+if (this._url !== t) {
+this._url = t;
+this.removeDom();
+this.createDomElementIfNeeded(e);
+this._bindEvent();
+var r = this._video;
+r.style.visibility = "hidden";
+this._loaded = !1;
+this._playing = !1;
+this._loadedmeta = !1;
+(n = document.createElement("source")).src = t;
+r.appendChild(n);
+i = cc.path.extname(t);
+for (var s = c._polyfill, o = 0; o < s.canPlayType.length; o++) if (i !== s.canPlayType[o]) {
+(n = document.createElement("source")).src = t.replace(i, s.canPlayType[o]);
+r.appendChild(n);
+}
+}
+},
+getURL: function() {
+return this._url;
+},
+play: function() {
+var t = this._video;
+if (t && this._visible && !this._playing) if (c._polyfill.autoplayAfterOperation) {
+setTimeout((function() {
+t.play();
+}), 20);
+} else t.play();
+},
+pause: function() {
+var t = this._video;
+this._playing && t && t.pause();
+},
+resume: function() {
+this.play();
+},
+stop: function() {
+var t = this._video;
+if (t && this._visible) {
+this._ignorePause = !0;
+t.currentTime = 0;
+t.pause();
+setTimeout(function() {
+this._dispatchEvent(c.EventType.STOPPED);
+this._ignorePause = !1;
+}.bind(this), 0);
+}
+},
+setVolume: function(t) {
+var e = this._video;
+e && (e.volume = t);
+},
+seekTo: function(t) {
+var e = this._video;
+if (e) {
+if (this._loaded) e.currentTime = t; else {
+e.addEventListener(c._polyfill.event, (function i() {
+e.currentTime = t;
+e.removeEventListener(c._polyfill.event, i);
+}));
+}
+c._polyfill.autoplayAfterOperation && this.isPlaying() && setTimeout((function() {
+e.play();
+}), 20);
+}
+},
+isPlaying: function() {
+var t = this._video;
+c._polyfill.autoplayAfterOperation && this._playing && setTimeout((function() {
+t.play();
+}), 20);
+return this._playing;
+},
+duration: function() {
+var t = this._video, e = -1;
+if (!t) return e;
+e = t.duration;
+e <= 0 && cc.logID(7702);
+return e;
+},
+currentTime: function() {
+var t = this._video;
+return t ? t.currentTime : -1;
+},
+setKeepAspectRatioEnabled: function() {
+0;
+cc.logID(7700);
+},
+isKeepAspectRatioEnabled: function() {
+return !0;
+},
+setFullScreenEnabled: function(t) {
+var e = this._video;
+if (e) {
+this._fullScreenEnabled = t;
+t ? cc.screen.requestFullScreen(e) : cc.screen.fullScreen() && cc.screen.exitFullScreen(e);
+}
+},
+isFullScreenEnabled: function() {
+return this._fullScreenEnabled;
+},
+setEventListener: function(t, e) {
+this._EventList[t] = e;
+},
+removeEventListener: function(t) {
+this._EventList[t] = null;
+},
+_dispatchEvent: function(t) {
+var e = this._EventList[t];
+e && e.call(this, this, this._video.src);
+},
+onPlayEvent: function() {
+this._EventList[c.EventType.PLAYING].call(this, this, this._video.src);
+},
+enable: function() {
+var t = c.elements;
+-1 === t.indexOf(this) && t.push(this);
+this.setVisible(!0);
+},
+disable: function() {
+var t = c.elements, e = t.indexOf(this);
+-1 !== e && t.splice(e, 1);
+this.setVisible(!1);
+},
+destroy: function() {
+this.disable();
+this.removeDom();
+},
+setVisible: function(t) {
+if (this._visible !== t) {
+this._visible = !!t;
+this._updateVisibility();
+}
+},
+updateMatrix: function(t) {
+if (this._video && this._visible) {
+t.getWorldMatrix(a);
+var e = cc.Camera._findRendererCamera(t);
+e && e.worldMatrixToScreen(a, a, cc.visibleRect.width, cc.visibleRect.height);
+if (this._forceUpdate || this._m00 !== a.m00 || this._m01 !== a.m01 || this._m04 !== a.m04 || this._m05 !== a.m05 || this._m12 !== a.m12 || this._m13 !== a.m13 || this._w !== t._contentSize.width || this._h !== t._contentSize.height) {
+this._m00 = a.m00;
+this._m01 = a.m01;
+this._m04 = a.m04;
+this._m05 = a.m05;
+this._m12 = a.m12;
+this._m13 = a.m13;
+this._w = t._contentSize.width;
+this._h = t._contentSize.height;
+var i = cc.view._scaleX, n = cc.view._scaleY, r = cc.view._devicePixelRatio;
+i /= r;
+n /= r;
+var s = cc.game.container, o = a.m00 * i, l = a.m01, h = a.m04, u = a.m05 * n, _ = s && s.style.paddingLeft ? parseInt(s.style.paddingLeft) : 0, f = s && s.style.paddingBottom ? parseInt(s.style.paddingBottom) : 0, d = void 0, m = void 0;
+if (c._polyfill.zoomInvalid) {
+this._updateSize(this._w * o, this._h * u);
+o = 1;
+u = 1;
+d = this._w * i;
+m = this._h * n;
+} else {
+d = this._w * i;
+m = this._h * n;
+this._updateSize(this._w, this._h);
+}
+var p = d * a.m00 * t._anchorPoint.x, v = m * a.m05 * t._anchorPoint.y, y = cc.view._viewportRect;
+_ += y.x / r;
+f += y.y / r;
+var g = "matrix(" + o + "," + -l + "," + -h + "," + u + "," + (a.m12 * i - p + _) + "," + -(a.m13 * n - v + f) + ")";
+this._video.style.transform = g;
+this._video.style["-webkit-transform"] = g;
+this._video.style["transform-origin"] = "0px 100% 0px";
+this._video.style["-webkit-transform-origin"] = "0px 100% 0px";
+}
+}
+}
+});
+c.EventType = {
+PLAYING: 0,
+PAUSED: 1,
+STOPPED: 2,
+COMPLETED: 3,
+META_LOADED: 4,
+CLICKED: 5,
+READY_TO_PLAY: 6
+};
+c.elements = [];
+c.pauseElements = [];
+cc.game.on(cc.game.EVENT_HIDE, (function() {
+for (var t, e = c.elements, i = 0; i < e.length; i++) if ((t = e[i]).isPlaying()) {
+t.pause();
+c.pauseElements.push(t);
+}
+}));
+cc.game.on(cc.game.EVENT_SHOW, (function() {
+for (var t = c.pauseElements, e = t.pop(); e; ) {
+e.play();
+e = t.pop();
+}
+}));
+c._polyfill = {
+devicePixelRatio: !1,
+event: "canplay",
+canPlayType: []
+};
+var l = document.createElement("video");
+if (l.canPlayType) {
+if (l.canPlayType("video/ogg")) {
+c._polyfill.canPlayType.push(".ogg");
+c._polyfill.canPlayType.push(".ogv");
+}
+l.canPlayType("video/mp4") && c._polyfill.canPlayType.push(".mp4");
+l.canPlayType("video/webm") && c._polyfill.canPlayType.push(".webm");
+}
+s.browserType === s.BROWSER_TYPE_FIREFOX && (c._polyfill.autoplayAfterOperation = !0);
+s.OS_ANDROID !== s.os || s.browserType !== s.BROWSER_TYPE_SOUGOU && s.browserType !== s.BROWSER_TYPE_360 || (c._polyfill.zoomInvalid = !0);
+var h = document.createElement("style");
+h.innerHTML = ".cocosVideo:-moz-full-screen{transform:matrix(1,0,0,1,0,0) !important;}.cocosVideo:full-screen{transform:matrix(1,0,0,1,0,0) !important;}.cocosVideo:-webkit-full-screen{transform:matrix(1,0,0,1,0,0) !important;}";
+document.head.appendChild(h);
+e.exports = c;
+}), {
+"../core/platform/CCSys": 210,
+"../core/platform/utils": 225,
+"../core/vmath": 317
+} ],
+386: [ (function(t, e, i) {
+"use strict";
+var n = t("./webview-impl"), r = n.EventType;
+function s() {}
+var o = cc.Class({
+name: "cc.WebView",
+extends: cc.Component,
+editor: !1,
+properties: {
+_useOriginalSize: !0,
+_url: "",
+url: {
+type: String,
+tooltip: !1,
+get: function() {
+return this._url;
+},
+set: function(t) {
+this._url = t;
+var e = this._impl;
+e && e.loadURL(t);
+}
+},
+webviewEvents: {
+default: [],
+type: cc.Component.EventHandler
+}
+},
+statics: {
+EventType: r,
+Impl: n
+},
+ctor: function() {
+this._impl = new o.Impl();
+},
+onRestore: function() {
+this._impl || (this._impl = new o.Impl());
+},
+onEnable: function() {
+var t = this._impl;
+t.createDomElementIfNeeded(this.node.width, this.node.height);
+t.setEventListener(r.LOADED, this._onWebViewLoaded.bind(this));
+t.setEventListener(r.LOADING, this._onWebViewLoading.bind(this));
+t.setEventListener(r.ERROR, this._onWebViewLoadError.bind(this));
+t.loadURL(this._url);
+t.setVisible(!0);
+},
+onDisable: function() {
+var t = this._impl;
+t.setVisible(!1);
+t.setEventListener(r.LOADED, s);
+t.setEventListener(r.LOADING, s);
+t.setEventListener(r.ERROR, s);
+},
+onDestroy: function() {
+if (this._impl) {
+this._impl.destroy();
+this._impl = null;
+}
+},
+update: function(t) {
+this._impl && this._impl.updateMatrix(this.node);
+},
+_onWebViewLoaded: function() {
+cc.Component.EventHandler.emitEvents(this.webviewEvents, this, r.LOADED);
+this.node.emit("loaded", this);
+},
+_onWebViewLoading: function() {
+cc.Component.EventHandler.emitEvents(this.webviewEvents, this, r.LOADING);
+this.node.emit("loading", this);
+return !0;
+},
+_onWebViewLoadError: function() {
+cc.Component.EventHandler.emitEvents(this.webviewEvents, this, r.ERROR);
+this.node.emit("error", this);
+},
+setJavascriptInterfaceScheme: function(t) {
+this._impl && this._impl.setJavascriptInterfaceScheme(t);
+},
+setOnJSCallback: function(t) {
+this._impl && this._impl.setOnJSCallback(t);
+},
+evaluateJS: function(t) {
+this._impl && this._impl.evaluateJS(t);
+}
+});
+cc.WebView = e.exports = o;
+}), {
+"./webview-impl": 387
+} ],
+387: [ (function(t, e, i) {
+"use strict";
+var n = t("../core/vmath"), r = t("../core/platform/utils"), s = t("../core/platform/CCSys"), o = n.mat4.create(), a = cc.Class({
+name: "WebViewImpl",
+ctor: function() {
+this._EventList = {};
+this._visible = !1;
+this._parent = null;
+this._div = null;
+this._iframe = null;
+this._listener = null;
+this._forceUpdate = !0;
+this._m00 = 0;
+this._m01 = 0;
+this._m04 = 0;
+this._m05 = 0;
+this._m12 = 0;
+this._m13 = 0;
+this._w = 0;
+this._h = 0;
+this.__eventListeners = {};
+},
+_updateVisibility: function() {
+if (this._div) {
+var t = this._div;
+this._visible ? t.style.visibility = "visible" : t.style.visibility = "hidden";
+this._forceUpdate = !0;
+}
+},
+_updateSize: function(t, e) {
+var i = this._div;
+if (i) {
+i.style.width = t + "px";
+i.style.height = e + "px";
+}
+},
+_initEvent: function() {
+var t = this._iframe;
+if (t) {
+var e = this.__eventListeners, i = this;
+e.load = function() {
+i._dispatchEvent(a.EventType.LOADED);
+};
+e.error = function() {
+i._dispatchEvent(a.EventType.ERROR);
+};
+t.addEventListener("load", e.load);
+t.addEventListener("error", e.error);
+}
+},
+_initStyle: function() {
+if (this._div) {
+var t = this._div;
+t.style.position = "absolute";
+t.style.bottom = "0px";
+t.style.left = "0px";
+}
+},
+_setOpacity: function(t) {
+var e = this._iframe;
+e && e.style && (e.style.opacity = t / 255);
+},
+_createDom: function(t, e) {
+if (a._polyfill.enableDiv) {
+this._div = document.createElement("div");
+this._div.style["-webkit-overflow"] = "auto";
+this._div.style["-webkit-overflow-scrolling"] = "touch";
+this._iframe = document.createElement("iframe");
+this._div.appendChild(this._iframe);
+this._iframe.style.width = "100%";
+this._iframe.style.height = "100%";
+} else this._div = this._iframe = document.createElement("iframe");
+a._polyfill.enableBG && (this._div.style.background = "#FFF0");
+this._div.style.background = "#FFF0";
+this._div.style.height = e + "px";
+this._div.style.width = t + "px";
+this._div.style.overflow = "scroll";
+this._iframe.style.border = "none";
+cc.game.container.appendChild(this._div);
+this._updateVisibility();
+},
+_createNativeControl: function(t, e) {
+this._createDom(t, e);
+this._initStyle();
+this._initEvent();
+},
+createDomElementIfNeeded: function(t, e) {
+this._div ? this._updateSize(t, e) : this._createNativeControl(t, e);
+},
+removeDom: function() {
+var t = this._div;
+if (t) {
+r.contains(cc.game.container, t) && cc.game.container.removeChild(t);
+this._div = null;
+}
+var e = this._iframe;
+if (e) {
+var i = this.__eventListeners;
+e.removeEventListener("load", i.load);
+e.removeEventListener("error", i.error);
+i.load = null;
+i.error = null;
+this._iframe = null;
+}
+},
+setOnJSCallback: function(t) {},
+setJavascriptInterfaceScheme: function(t) {},
+loadData: function(t, e, i, n) {},
+loadHTMLString: function(t, e) {},
+loadURL: function(t) {
+var e = this._iframe;
+if (e) {
+e.src = t;
+var i = this;
+e.addEventListener("load", (function t() {
+i._loaded = !0;
+i._updateVisibility();
+e.removeEventListener("load", t);
+}));
+this._dispatchEvent(a.EventType.LOADING);
+}
+},
+stopLoading: function() {
+cc.logID(7800);
+},
+reload: function() {
+var t = this._iframe;
+if (t) {
+var e = t.contentWindow;
+e && e.location && e.location.reload();
+}
+},
+canGoBack: function() {
+cc.logID(7801);
+return !0;
+},
+canGoForward: function() {
+cc.logID(7802);
+return !0;
+},
+goBack: function() {
+try {
+if (a._polyfill.closeHistory) return cc.logID(7803);
+var t = this._iframe;
+if (t) {
+var e = t.contentWindow;
+e && e.location && e.history.back.call(e);
+}
+} catch (t) {
+cc.log(t);
+}
+},
+goForward: function() {
+try {
+if (a._polyfill.closeHistory) return cc.logID(7804);
+var t = this._iframe;
+if (t) {
+var e = t.contentWindow;
+e && e.location && e.history.forward.call(e);
+}
+} catch (t) {
+cc.log(t);
+}
+},
+evaluateJS: function(t) {
+var e = this._iframe;
+if (e) {
+var i = e.contentWindow;
+try {
+i.eval(t);
+this._dispatchEvent(a.EventType.JS_EVALUATED);
+} catch (t) {
+console.error(t);
+}
+}
+},
+setScalesPageToFit: function() {
+cc.logID(7805);
+},
+setEventListener: function(t, e) {
+this._EventList[t] = e;
+},
+removeEventListener: function(t) {
+this._EventList[t] = null;
+},
+_dispatchEvent: function(t) {
+var e = this._EventList[t];
+e && e.call(this, this, this._iframe.src);
+},
+_createRenderCmd: function() {
+return new a.RenderCmd(this);
+},
+destroy: function() {
+this.removeDom();
+},
+setVisible: function(t) {
+if (this._visible !== t) {
+this._visible = !!t;
+this._updateVisibility();
+}
+},
+updateMatrix: function(t) {
+if (this._div && this._visible) {
+t.getWorldMatrix(o);
+var e = cc.Camera._findRendererCamera(t);
+e && e.worldMatrixToScreen(o, o, cc.visibleRect.width, cc.visibleRect.height);
+if (this._forceUpdate || this._m00 !== o.m00 || this._m01 !== o.m01 || this._m04 !== o.m04 || this._m05 !== o.m05 || this._m12 !== o.m12 || this._m13 !== o.m13 || this._w !== t._contentSize.width || this._h !== t._contentSize.height) {
+this._m00 = o.m00;
+this._m01 = o.m01;
+this._m04 = o.m04;
+this._m05 = o.m05;
+this._m12 = o.m12;
+this._m13 = o.m13;
+this._w = t._contentSize.width;
+this._h = t._contentSize.height;
+var i = cc.view._scaleX, n = cc.view._scaleY, r = cc.view._devicePixelRatio;
+i /= r;
+n /= r;
+var s = cc.game.container, a = o.m00 * i, c = o.m01, l = o.m04, h = o.m05 * n, u = s && s.style.paddingLeft ? parseInt(s.style.paddingLeft) : 0, _ = s && s.style.paddingBottom ? parseInt(s.style.paddingBottom) : 0;
+this._updateSize(this._w, this._h);
+var f = this._div.clientWidth * i, d = this._div.clientHeight * n, m = f * o.m00 * t._anchorPoint.x, p = d * o.m05 * t._anchorPoint.y, v = cc.view._viewportRect;
+u += v.x / r;
+_ += v.y / r;
+var y = "matrix(" + a + "," + -c + "," + -l + "," + h + "," + (o.m12 * i - m + u) + "," + -(o.m13 * n - p + _) + ")";
+this._div.style.transform = y;
+this._div.style["-webkit-transform"] = y;
+this._div.style["transform-origin"] = "0px 100% 0px";
+this._div.style["-webkit-transform-origin"] = "0px 100% 0px";
+this._setOpacity(t.opacity);
+}
+}
+}
+});
+a.EventType = {
+LOADING: 0,
+LOADED: 1,
+ERROR: 2,
+JS_EVALUATED: 3
+};
+var c = a._polyfill = {
+devicePixelRatio: !1,
+enableDiv: !1
+};
+s.os === s.OS_IOS && (c.enableDiv = !0);
+s.isMobile ? s.browserType === s.BROWSER_TYPE_FIREFOX && (c.enableBG = !0) : s.browserType === s.BROWSER_TYPE_IE && (c.closeHistory = !0);
+e.exports = a;
+}), {
+"../core/platform/CCSys": 210,
+"../core/platform/utils": 225,
+"../core/vmath": 317
+} ],
+388: [ (function(t, e, i) {
+"use strict";
+t("./cocos2d/core");
+t("./cocos2d/animation");
+t("./cocos2d/particle");
+t("./cocos2d/tilemap");
+t("./cocos2d/videoplayer/CCVideoPlayer");
+t("./cocos2d/webview/CCWebView");
+t("./cocos2d/core/components/CCStudioComponent");
+t("./extensions/ccpool/CCNodePool");
+t("./cocos2d/actions");
+t("./extensions/spine");
+t("./extensions/dragonbones");
+t("./cocos2d/deprecated");
+}), {
+"./cocos2d/actions": 7,
+"./cocos2d/animation": 16,
+"./cocos2d/core": 146,
+"./cocos2d/core/components/CCStudioComponent": 112,
+"./cocos2d/deprecated": 327,
+"./cocos2d/particle": 333,
+"./cocos2d/particle/CCParticleAsset": 330,
+"./cocos2d/tilemap": 382,
+"./cocos2d/tilemap/CCTiledMapAsset": 379,
+"./cocos2d/videoplayer/CCVideoPlayer": 384,
+"./cocos2d/webview/CCWebView": 386,
+"./extensions/ccpool/CCNodePool": 389,
+"./extensions/dragonbones": 393,
+"./extensions/spine": 396
+} ],
+389: [ (function(t, e, i) {
+"use strict";
+cc.NodePool = function(t) {
+this.poolHandlerComp = t;
+this._pool = [];
+};
+cc.NodePool.prototype = {
+constructor: cc.NodePool,
+size: function() {
+return this._pool.length;
+},
+clear: function() {
+for (var t = this._pool.length, e = 0; e < t; ++e) this._pool[e].destroy();
+this._pool.length = 0;
+},
+put: function(t) {
+if (t && -1 === this._pool.indexOf(t)) {
+t.removeFromParent(!1);
+var e = this.poolHandlerComp ? t.getComponent(this.poolHandlerComp) : null;
+e && e.unuse && e.unuse();
+this._pool.push(t);
+}
+},
+get: function() {
+var t = this._pool.length - 1;
+if (t < 0) return null;
+var e = this._pool[t];
+this._pool.length = t;
+var i = this.poolHandlerComp ? e.getComponent(this.poolHandlerComp) : null;
+i && i.reuse && i.reuse.apply(i, arguments);
+return e;
+}
+};
+e.exports = cc.NodePool;
+}), {} ],
+390: [ (function(t, e, i) {
+"use strict";
+var n = t("../../cocos2d/core/components/CCRenderComponent"), r = t("../../cocos2d/core/assets/material/CCMaterial"), s = t("../../cocos2d/core/event/event-target"), o = (t("../../cocos2d/core/CCNode"),
+t("../../cocos2d/core/graphics/graphics")), a = t("./ArmatureCache"), c = cc.Enum({
+default: -1
+}), l = cc.Enum({
+"": 0
+}), h = (cc.Enum({
+REALTIME: 0
+}), cc.Enum({
+REALTIME: 0,
+SHARED_CACHE: 1,
+PRIVATE_CACHE: 2
+}));
+var u = cc.Class({
+name: "dragonBones.ArmatureDisplay",
+extends: n,
+editor: !1,
+statics: {
+AnimationCacheMode: h
+},
+properties: {
+_factory: {
+default: null,
+type: dragonBones.CCFactory,
+serializable: !1
+},
+dragonAsset: {
+default: null,
+type: dragonBones.DragonBonesAsset,
+notify: function() {
+this._refresh();
+0;
+},
+tooltip: !1
+},
+dragonAtlasAsset: {
+default: null,
+type: dragonBones.DragonBonesAtlasAsset,
+notify: function() {
+this._parseDragonAtlasAsset();
+this._refresh();
+this._activateMaterial();
+},
+tooltip: !1
+},
+_armatureName: "",
+armatureName: {
+get: function() {
+return this._armatureName;
+},
+set: function(t) {
+this._armatureName = t;
+var e = this.getAnimationNames(this._armatureName);
+(!this.animationName || e.indexOf(this.animationName) < 0) && (this.animationName = "");
+this._armature && !this.isAnimationCached() && this._factory._dragonBones.clock.remove(this._armature);
+this._refresh();
+this._armature && !this.isAnimationCached() && this._factory._dragonBones.clock.add(this._armature);
+},
+visible: !1
+},
+_animationName: "",
+animationName: {
+get: function() {
+return this._animationName;
+},
+set: function(t) {
+this._animationName = t;
+},
+visible: !1
+},
+_defaultArmatureIndex: {
+default: 0,
+notify: function() {
+var t = "";
+if (this.dragonAsset) {
+var e = void 0;
+this.dragonAsset && (e = this.dragonAsset.getArmatureEnum());
+if (!e) return cc.errorID(7400, this.name);
+t = e[this._defaultArmatureIndex];
+}
+void 0 !== t ? this.armatureName = t : cc.errorID(7401, this.name);
+},
+type: c,
+visible: !0,
+editorOnly: !0,
+animatable: !1,
+displayName: "Armature",
+tooltip: !1
+},
+_animationIndex: {
+default: 0,
+notify: function() {
+if (0 !== this._animationIndex) {
+var t = void 0;
+this.dragonAsset && (t = this.dragonAsset.getAnimsEnum(this.armatureName));
+if (t) {
+var e = t[this._animationIndex];
+void 0 !== e ? this.playAnimation(e, this.playTimes) : cc.errorID(7402, this.name);
+}
+} else this.animationName = "";
+},
+type: l,
+visible: !0,
+editorOnly: !0,
+displayName: "Animation",
+tooltip: !1
+},
+_preCacheMode: -1,
+_cacheMode: h.REALTIME,
+_defaultCacheMode: {
+default: 0,
+type: h,
+notify: function() {
+this.setAnimationCacheMode(this._defaultCacheMode);
+},
+editorOnly: !0,
+visible: !0,
+animatable: !1,
+displayName: "Animation Cache Mode",
+tooltip: !1
+},
+timeScale: {
+default: 1,
+notify: function() {
+this._armature && (this._armature.animation.timeScale = this.timeScale);
+},
+tooltip: !1
+},
+playTimes: {
+default: -1,
+tooltip: !1
+},
+premultipliedAlpha: {
+default: !1,
+tooltip: !1
+},
+debugBones: {
+default: !1,
+notify: function() {
+this._updateDebugDraw();
+},
+tooltip: !1
+},
+enableBatch: {
+default: !1,
+notify: function() {
+this._updateBatch();
+},
+tooltip: !1
+},
+_armatureKey: "",
+_accTime: 0,
+_playCount: 0,
+_frameCache: null,
+_curFrame: null,
+_playing: !1,
+_armatureCache: null
+},
+ctor: function() {
+this._eventTarget = new s();
+this._materialCache = {};
+this._inited = !1;
+this._factory = dragonBones.CCFactory.getInstance();
+},
+onLoad: function() {
+for (var t = this.node.children, e = 0, i = t.length; e < i; e++) {
+var n = t[e];
+0 === (n._name && n._name.search("CHILD_ARMATURE-")) && n.destroy();
+}
+},
+_updateBatch: function() {
+var t = this._materialCache;
+for (var e in t) {
+var i = t[e];
+i && i.define("_USE_MODEL", !this.enableBatch);
+}
+},
+setMaterial: function(t, e) {
+this._super(t, e);
+this._materialCache = {};
+},
+__preload: function() {
+this._init();
+},
+_init: function() {
+if (!this._inited) {
+this._inited = !0;
+this._cacheMode = h.REALTIME;
+this._parseDragonAtlasAsset();
+this._refresh();
+this._activateMaterial();
+for (var t = this.node.children, e = 0, i = t.length; e < i; e++) {
+var n = t[e];
+n && "DEBUG_DRAW_NODE" === n._name && n.destroy();
+}
+this._updateDebugDraw();
+}
+},
+getArmatureKey: function() {
+return this._armatureKey;
+},
+setAnimationCacheMode: function(t) {},
+isAnimationCached: function() {
+0;
+return this._cacheMode !== h.REALTIME;
+},
+onEnable: function() {
+this._super();
+this._armature && !this.isAnimationCached() && this._factory._dragonBones.clock.add(this._armature);
+this._activateMaterial();
+},
+onDisable: function() {
+this._super();
+this._armature && !this.isAnimationCached() && this._factory._dragonBones.clock.remove(this._armature);
+},
+update: function(t) {
+if (this.isAnimationCached() && this._playing) {
+var e = this._frameCache, i = e.frames, n = a.FrameTime;
+0 == this._accTime && 0 == this._playCount && this._eventTarget && this._eventTarget.emit(dragonBones.EventObject.START);
+var r = dragonBones.timeScale;
+this._accTime += t * this.timeScale * r;
+var s = Math.floor(this._accTime / n);
+e.isCompleted || e.updateToFrame(s);
+if (e.isCompleted && s >= i.length) {
+this._eventTarget && this._eventTarget.emit(dragonBones.EventObject.LOOP_COMPLETE);
+this._eventTarget && this._eventTarget.emit(dragonBones.EventObject.COMPLETE);
+this._playCount++;
+if (this.playTimes > 0 && this._playCount >= this.playTimes) {
+this._curFrame = i[i.length - 1];
+this._accTime = 0;
+this._playing = !1;
+this._playCount = 0;
+return;
+}
+this._accTime = 0;
+s = 0;
+}
+this._curFrame = i[s];
+}
+},
+onDestroy: function() {
+this._super();
+this._inited = !1;
+if (this._cacheMode === h.PRIVATE_CACHE) {
+this._armatureCache.dispose();
+this._armatureCache = null;
+this._armature = null;
+} else if (this._cacheMode === h.SHARED_CACHE) {
+this._armatureCache = null;
+this._armature = null;
+} else if (this._armature) {
+this._armature.dispose();
+this._armature = null;
+}
+},
+_updateDebugDraw: function() {
+if (this.debugBones) {
+if (!this._debugDraw) {
+var t = new cc.PrivateNode();
+t.name = "DEBUG_DRAW_NODE";
+var e = t.addComponent(o);
+e.lineWidth = 1;
+e.strokeColor = cc.color(255, 0, 0, 255);
+this._debugDraw = e;
+}
+this._debugDraw.node.parent = this.node;
+} else this._debugDraw && (this._debugDraw.node.parent = null);
+},
+_activateMaterial: function() {
+var t = this.dragonAtlasAsset && this.dragonAtlasAsset.texture;
+if (t) {
+var e = this.sharedMaterials[0];
+(e = e ? r.getInstantiatedMaterial(e, this) : r.getInstantiatedBuiltinMaterial("2d-sprite", this)).define("_USE_MODEL", !0);
+e.setProperty("texture", t);
+this.setMaterial(0, e);
+this.markForRender(!0);
+} else this.disableRender();
+},
+_buildArmature: function() {
+if (this.dragonAsset && this.dragonAtlasAsset && this.armatureName) {
+if (this._armature) {
+this._preCacheMode === h.PRIVATE_CACHE ? this._armatureCache.dispose() : this._preCacheMode === h.REALTIME && this._armature.dispose();
+this._armatureCache = null;
+this._armature = null;
+this._displayProxy = null;
+this._frameCache = null;
+this._curFrame = null;
+this._playing = !1;
+this._preCacheMode = null;
+}
+this._cacheMode === h.SHARED_CACHE ? this._armatureCache = a.sharedCache : this._cacheMode === h.PRIVATE_CACHE && (this._armatureCache = new a());
+var t = this.dragonAtlasAsset._uuid;
+this._armatureKey = this.dragonAsset.init(this._factory, t);
+if (this.isAnimationCached()) {
+this._armature = this._armatureCache.getArmatureCache(this.armatureName, this._armatureKey, t);
+this._armature || (this._cacheMode = h.REALTIME);
+}
+this._preCacheMode = this._cacheMode;
+if (this._cacheMode === h.REALTIME) {
+this._displayProxy = this._factory.buildArmatureDisplay(this.armatureName, this._armatureKey, "", t);
+if (!this._displayProxy) return;
+this._displayProxy._ccNode = this.node;
+this._displayProxy.setEventTarget(this._eventTarget);
+this._armature = this._displayProxy._armature;
+this._armature.animation.timeScale = this.timeScale;
+}
+this._cacheMode !== h.REALTIME && this.debugBones && cc.warn("Debug bones is invalid in cached mode");
+this._updateBatch();
+this.animationName && this.playAnimation(this.animationName, this.playTimes);
+}
+},
+_parseDragonAtlasAsset: function() {
+this.dragonAtlasAsset && this.dragonAtlasAsset.init(this._factory);
+},
+_refresh: function() {
+this._buildArmature();
+0;
+},
+_updateCacheModeEnum: !1,
+_updateAnimEnum: !1,
+_updateArmatureEnum: !1,
+playAnimation: function(t, e) {
+this.playTimes = void 0 === e ? -1 : e;
+this.animationName = t;
+if (this.isAnimationCached()) {
+var i = this._armatureCache.getAnimationCache(this._armatureKey, t);
+i || (i = this._armatureCache.initAnimationCache(this._armatureKey, t)).begin();
+if (i) {
+this._accTime = 0;
+this._playCount = 0;
+this._frameCache = i;
+this._playing = !0;
+this._curFrame = this._frameCache.frames[0];
+}
+} else if (this._armature) return this._armature.animation.play(t, this.playTimes);
+},
+updateAnimationCache: function(t) {
+if (this.isAnimationCached()) {
+var e = this._armatureCache.updateAnimationCache(this._armatureKey, t);
+this._frameCache = e || this._frameCache;
+}
+},
+getArmatureNames: function() {
+var t = this._factory.getDragonBonesData(this._armatureKey);
+return t && t.armatureNames || [];
+},
+getAnimationNames: function(t) {
+var e = [], i = this._factory.getDragonBonesData(this._armatureKey);
+if (i) {
+var n = i.getArmature(t);
+if (n) for (var r in n.animations) n.animations.hasOwnProperty(r) && e.push(r);
+}
+return e;
+},
+on: function(t, e, i) {
+this.addEventListener(t, e, i);
+},
+off: function(t, e, i) {
+this.removeEventListener(t, e, i);
+},
+once: function(t, e, i) {
+this._eventTarget.once(t, e, i);
+},
+addEventListener: function(t, e, i) {
+this._eventTarget.on(t, e, i);
+},
+removeEventListener: function(t, e, i) {
+this._eventTarget.off(t, e, i);
+},
+buildArmature: function(t, e) {
+return this._factory.createArmatureNode(this, t, e);
+},
+armature: function() {
+return this._armature;
+}
+});
+e.exports = dragonBones.ArmatureDisplay = u;
+}), {
+"../../cocos2d/core/CCNode": 52,
+"../../cocos2d/core/assets/material/CCMaterial": 75,
+"../../cocos2d/core/components/CCRenderComponent": 106,
+"../../cocos2d/core/event/event-target": 133,
+"../../cocos2d/core/graphics/graphics": 142,
+"./ArmatureCache": void 0
+} ],
+391: [ (function(t, e, i) {
+"use strict";
+var n = cc.Class({
+name: "dragonBones.DragonBonesAsset",
+extends: cc.Asset,
+ctor: function() {
+this.reset();
+},
+properties: {
+_dragonBonesJson: "",
+dragonBonesJson: {
+get: function() {
+return this._dragonBonesJson;
+},
+set: function(t) {
+this._dragonBonesJson = t;
+this.reset();
+}
+},
+_nativeAsset: {
+get: function() {
+return this._buffer;
+},
+set: function(t) {
+this._buffer = t.buffer || t;
+this.reset();
+},
+override: !0
+}
+},
+statics: {
+preventDeferredLoadDependents: !0
+},
+createNode: !1,
+reset: function() {
+this._clear();
+0;
+},
+init: function(t, e) {
+this._factory = t;
+var i = null;
+i = this.dragonBonesJson ? JSON.parse(this.dragonBonesJson) : this._nativeAsset;
+if (!this._uuid) {
+var n = this._factory.getDragonBonesDataByRawData(i);
+n ? this._uuid = n.name : cc.warn("dragonbones name is empty");
+}
+var r = this._uuid + "#" + e;
+if (this._factory.getDragonBonesData(r)) return r;
+this._factory.parseDragonBonesData(i, r);
+return r;
+},
+getArmatureEnum: !1,
+getAnimsEnum: !1,
+_clear: function() {},
+destroy: function() {
+this._clear();
+this._super();
+}
+});
+dragonBones.DragonBonesAsset = e.exports = n;
+}), {
+"./ArmatureCache": void 0
+} ],
+392: [ (function(t, e, i) {
+"use strict";
+var n = cc.Class({
+name: "dragonBones.DragonBonesAtlasAsset",
+extends: cc.Asset,
+ctor: function() {
+this._clear();
+},
+properties: {
+_atlasJson: "",
+atlasJson: {
+get: function() {
+return this._atlasJson;
+},
+set: function(t) {
+this._atlasJson = t;
+this._clear();
+}
+},
+_texture: {
+default: null,
+type: cc.Texture2D,
+formerlySerializedAs: "texture"
+},
+texture: {
+get: function() {
+return this._texture;
+},
+set: function(t) {
+this._texture = t;
+this._clear();
+}
+},
+_textureAtlasData: null
+},
+statics: {
+preventDeferredLoadDependents: !0
+},
+createNode: !1,
+init: function(t) {
+this._factory = t;
+var e = JSON.parse(this.atlasJson);
+this._uuid = this._uuid || e.name;
+this._textureAtlasData ? t.addTextureAtlasData(this._textureAtlasData, this._uuid) : this._textureAtlasData = t.parseTextureAtlasData(e, this.texture, this._uuid);
+},
+_clear: function() {},
+destroy: function() {
+this._clear();
+this._super();
+}
+});
+dragonBones.DragonBonesAtlasAsset = e.exports = n;
+}), {
+"./ArmatureCache": void 0
+} ],
+393: [ (function(i, n, r) {
+"use strict";
+var s = "undefined" === ("object" === (e = typeof window) ? t(window) : e) ? global : window;
+0;
+if (void 0 !== s.dragonBones) {
+dragonBones._timeScale = 1;
+Object.defineProperty(dragonBones, "timeScale", {
+get: function() {
+return this._timeScale;
+},
+set: function(t) {
+this._timeScale = t;
+this.CCFactory.getInstance()._dragonBones.clock.timeScale = t;
+},
+configurable: !0
+});
+dragonBones.DisplayType = {
+Image: 0,
+Armature: 1,
+Mesh: 2
+};
+dragonBones.ArmatureType = {
+Armature: 0,
+MovieClip: 1,
+Stage: 2
+};
+dragonBones.ExtensionType = {
+FFD: 0,
+AdjustColor: 10,
+BevelFilter: 11,
+BlurFilter: 12,
+DropShadowFilter: 13,
+GlowFilter: 14,
+GradientBevelFilter: 15,
+GradientGlowFilter: 16
+};
+dragonBones.EventType = {
+Frame: 0,
+Sound: 1
+};
+dragonBones.ActionType = {
+Play: 0,
+Stop: 1,
+GotoAndPlay: 2,
+GotoAndStop: 3,
+FadeIn: 4,
+FadeOut: 5
+};
+dragonBones.AnimationFadeOutMode = {
+None: 0,
+SameLayer: 1,
+SameGroup: 2,
+SameLayerAndGroup: 3,
+All: 4
+};
+dragonBones.BinaryOffset = {
+WeigthBoneCount: 0,
+WeigthFloatOffset: 1,
+WeigthBoneIndices: 2,
+MeshVertexCount: 0,
+MeshTriangleCount: 1,
+MeshFloatOffset: 2,
+MeshWeightOffset: 3,
+MeshVertexIndices: 4,
+TimelineScale: 0,
+TimelineOffset: 1,
+TimelineKeyFrameCount: 2,
+TimelineFrameValueCount: 3,
+TimelineFrameValueOffset: 4,
+TimelineFrameOffset: 5,
+FramePosition: 0,
+FrameTweenType: 1,
+FrameTweenEasingOrCurveSampleCount: 2,
+FrameCurveSamples: 3,
+DeformMeshOffset: 0,
+DeformCount: 1,
+DeformValueCount: 2,
+DeformValueOffset: 3,
+DeformFloatOffset: 4
+};
+dragonBones.BoneType = {
+Bone: 0,
+Surface: 1
+};
+0;
+i("./DragonBonesAsset");
+i("./DragonBonesAtlasAsset");
+i("./ArmatureDisplay");
+i("./webgl-assembler");
+}
+}), {
+"./ArmatureCache": void 0,
+"./ArmatureDisplay": 390,
+"./CCArmatureDisplay": void 0,
+"./CCFactory": void 0,
+"./CCSlot": void 0,
+"./CCTextureData": void 0,
+"./DragonBonesAsset": 391,
+"./DragonBonesAtlasAsset": 392,
+"./lib/dragonBones": void 0,
+"./webgl-assembler": 394
+} ],
+394: [ (function(t, e, i) {
+"use strict";
+var n = t("./ArmatureDisplay"), r = t("../../cocos2d/core/renderer/render-flow"), s = (t("../../cocos2d/core/assets/material/CCMaterial"),
+cc.gfx), o = cc.vmath.mat4, a = cc.color(255, 0, 0, 255), c = cc.color(0, 0, 255, 255), l = void 0, h = void 0, u = void 0, _ = void 0, f = void 0, d = void 0, m = void 0, p = void 0, v = void 0, y = void 0, g = void 0, x = void 0, C = void 0, b = void 0, A = void 0, S = void 0, w = void 0, T = void 0, E = void 0, M = void 0, B = void 0, D = void 0, I = void 0, P = void 0, R = void 0, L = void 0, F = void 0, O = void 0, V = void 0, N = void 0;
+function k(t, e) {
+if (!t) return null;
+var i = void 0, n = void 0;
+switch (e) {
+case 1:
+i = f ? cc.macro.ONE : cc.macro.SRC_ALPHA;
+n = cc.macro.ONE;
+break;
+
+case 10:
+i = cc.macro.DST_COLOR;
+n = cc.macro.ONE_MINUS_SRC_ALPHA;
+break;
+
+case 12:
+i = cc.macro.ONE;
+n = cc.macro.ONE_MINUS_SRC_COLOR;
+break;
+
+case 0:
+default:
+i = f ? cc.macro.ONE : cc.macro.SRC_ALPHA;
+n = cc.macro.ONE_MINUS_SRC_ALPHA;
+}
+var r = !g.enableBatch, o = t.url + i + n + r, a = g.sharedMaterials[0];
+if (!a) return null;
+var c = g._materialCache, l = c[o];
+if (l) {
+if (l.texture !== t) {
+l.setProperty("texture", t);
+l.updateHash(o);
+}
+} else {
+c[a._hash] ? (l = new cc.Material()).copy(a) : l = a;
+l.define("_USE_MODEL", r);
+l.setProperty("texture", t);
+l.effect.getDefaultTechnique().passes[0].setBlend(!0, s.BLEND_FUNC_ADD, i, n, s.BLEND_FUNC_ADD, i, n);
+c[o] = l;
+l.updateHash(o);
+}
+return l;
+}
+function z(t, e) {
+I = t.a * e * _;
+d = f ? I / 255 : 1;
+M = t.r * l * d;
+B = t.g * h * d;
+D = t.b * u * d;
+E = (I << 24 >>> 0) + (D << 16) + (B << 8) + M;
+}
+var G = {
+updateRenderData: function(t, e) {},
+realTimeTraverse: function(t, e, i) {
+for (var n = t._slots, r = void 0, s = void 0, a = void 0, c = void 0, l = void 0, h = void 0, u = void 0, _ = void 0, f = void 0, d = void 0, g = 0, M = n.length; g < M; g++) {
+u = (_ = n[g])._color;
+if (_._visible && _._displayData) {
+e ? _._mulMat(_._worldMatrix, e, _._matrix) : o.copy(_._worldMatrix, _._matrix);
+if (_.childArmature) this.realTimeTraverse(_.childArmature, _._worldMatrix, i * u.a / 255); else if (c = k(_.getTexture(), _._blendMode)) {
+if (m || c._hash !== y.material._hash) {
+m = !1;
+y._flush();
+y.node = v;
+y.material = c;
+}
+z(u, i);
+f = _._worldMatrix;
+l = _._localVertices;
+A = l.length >> 2;
+h = _._indices;
+S = h.length;
+d = p.request(A, S);
+C = d.indiceOffset;
+x = d.byteOffset >> 2;
+b = d.vertexOffset;
+r = p._vData;
+s = p._iData;
+a = p._uintVData;
+R = f.m00;
+L = f.m04;
+F = f.m12;
+O = f.m01;
+V = f.m05;
+N = f.m13;
+for (var B = 0, D = l.length; B < D; ) {
+w = l[B++];
+T = l[B++];
+r[x++] = w * R + T * L + F;
+r[x++] = w * O + T * V + N;
+r[x++] = l[B++];
+r[x++] = l[B++];
+a[x++] = E;
+}
+for (var I = 0, P = h.length; I < P; I++) s[C++] = b + h[I];
+}
+}
+}
+},
+cacheTraverse: function(t, e) {
+if (t) {
+var i = t.segments;
+if (0 != i.length) {
+var n = void 0, r = void 0, s = void 0, o = void 0, a = void 0, c = t.vertices, l = t.indices, h = t.uintVert, u = 0, _ = 0, f = 0;
+if (e) {
+R = e.m00;
+L = e.m04;
+F = e.m12;
+O = e.m01;
+V = e.m05;
+N = e.m13;
+}
+var d = 0, g = t.colors, M = g[d++], B = M.vfOffset;
+z(M, 1);
+for (var D = 0, I = i.length; D < I; D++) {
+var G = i[D];
+o = k(G.tex, G.blendMode);
+if (m || o._hash !== y.material._hash) {
+m = !1;
+y._flush();
+y.node = v;
+y.material = o;
+}
+A = G.vertexCount;
+S = G.indexCount;
+a = p.request(A, S);
+C = a.indiceOffset;
+b = a.vertexOffset;
+x = a.byteOffset >> 2;
+n = p._vData;
+r = p._iData;
+s = p._uintVData;
+for (var U = C, j = C + S; U < j; U++) r[U] = b + l[_++];
+f = G.vfCount;
+switch (P) {
+case 1:
+case 0:
+n.set(c.subarray(u, u + f), x);
+u += f;
+break;
+
+case 16:
+case 17:
+for (var W = x, H = x + f; W < H; ) {
+w = c[u++];
+T = c[u++];
+n[W++] = w * R + T * L + F;
+n[W++] = w * O + T * V + N;
+n[W++] = c[u++];
+n[W++] = c[u++];
+s[W++] = h[u++];
+}
+}
+if (1 & P) for (var q = u - f, X = x + 4, Y = x + 4 + f; X < Y; X += 5, q += 5) {
+if (q >= B) {
+z(M = g[d++], 1);
+B = M.vfOffset;
+}
+s[X] = E;
+}
+}
+}
+}
+},
+fillBuffers: function(t, e) {
+t.node._renderFlag |= r.FLAG_UPDATE_RENDER_DATA;
+m = !0;
+f = t.premultipliedAlpha;
+v = t.node;
+p = e._meshBuffer;
+y = e;
+g = t;
+P = 0;
+var i = v._color;
+l = i.r / 255;
+h = i.g / 255;
+u = i.b / 255;
+_ = i.a / 255;
+4294967295 !== i._val && (P |= 1);
+var n = void 0;
+if (g.enableBatch) {
+n = v._worldMatrix;
+m = !1;
+P |= 16;
+}
+if (t.isAnimationCached()) this.cacheTraverse(t._curFrame, n); else {
+var s = t._armature;
+if (!s) return;
+this.realTimeTraverse(s, n, 1);
+var o = t._debugDraw;
+if (t.debugBones && o) {
+o.clear();
+o.lineWidth = 5;
+o.strokeColor = a;
+o.fillColor = c;
+for (var d = s.getBones(), x = 0, C = d.length; x < C; x++) {
+var b = d[x], A = Math.max(b.boneData.length, 5), S = b.globalTransformMatrix.tx, w = -b.globalTransformMatrix.ty, T = S + b.globalTransformMatrix.a * A, E = w - b.globalTransformMatrix.b * A;
+o.moveTo(S, w);
+o.lineTo(T, E);
+o.stroke();
+}
+}
+}
+v = void 0;
+p = void 0;
+y = void 0;
+g = void 0;
+}
+};
+e.exports = n._assembler = G;
+}), {
+"../../cocos2d/core/assets/material/CCMaterial": 75,
+"../../cocos2d/core/renderer/render-flow": 245,
+"./ArmatureDisplay": 390
+} ],
+395: [ (function(t, e, i) {
+"use strict";
+var n = t("./track-entry-listeners"), r = t("../../cocos2d/core/components/CCRenderComponent"), s = t("./lib/spine"), o = t("../../cocos2d/core/assets/material/CCMaterial"), a = t("../../cocos2d/core/graphics/graphics"), c = t("./skeleton-cache"), l = cc.Enum({
+default: -1
+}), h = cc.Enum({
+"": 0
+}), u = cc.Enum({
+REALTIME: 0,
+SHARED_CACHE: 1,
+PRIVATE_CACHE: 2
+});
+sp.Skeleton = cc.Class({
+name: "sp.Skeleton",
+extends: r,
+editor: !1,
+statics: {
+AnimationCacheMode: u
+},
+properties: {
+paused: {
+default: !1,
+visible: !1
+},
+skeletonData: {
+default: null,
+type: sp.SkeletonData,
+notify: function() {
+this.defaultSkin = "";
+this.defaultAnimation = "";
+0;
+this._updateSkeletonData();
+},
+tooltip: !1
+},
+defaultSkin: {
+default: "",
+visible: !1
+},
+defaultAnimation: {
+default: "",
+visible: !1
+},
+animation: {
+get: function() {
+if (this.isAnimationCached()) return this._animationName;
+var t = this.getCurrent(0);
+return t && t.animation.name || "";
+},
+set: function(t) {
+this.defaultAnimation = t;
+if (t) this.setAnimation(0, t, this.loop); else if (!this.isAnimationCached()) {
+this.clearTrack(0);
+this.setToSetupPose();
+}
+},
+visible: !1
+},
+_defaultSkinIndex: {
+get: function() {
+if (this.skeletonData && this.defaultSkin) {
+var t = this.skeletonData.getSkinsEnum();
+if (t) {
+var e = t[this.defaultSkin];
+if (void 0 !== e) return e;
+}
+}
+return 0;
+},
+set: function(t) {
+var e;
+this.skeletonData && (e = this.skeletonData.getSkinsEnum());
+if (!e) return cc.errorID("", this.name);
+var i = e[t];
+if (void 0 !== i) {
+this.defaultSkin = i;
+this.setSkin(this.defaultSkin);
+0;
+} else cc.errorID(7501, this.name);
+},
+type: l,
+visible: !0,
+displayName: "Default Skin",
+tooltip: !1
+},
+_animationIndex: {
+get: function() {
+var t = this.animation;
+if (this.skeletonData && t) {
+var e = this.skeletonData.getAnimsEnum();
+if (e) {
+var i = e[t];
+if (void 0 !== i) return i;
+}
+}
+return 0;
+},
+set: function(t) {
+if (0 !== t) {
+var e;
+this.skeletonData && (e = this.skeletonData.getAnimsEnum());
+if (!e) return cc.errorID(7502, this.name);
+var i = e[t];
+void 0 !== i ? this.animation = i : cc.errorID(7503, this.name);
+} else this.animation = "";
+},
+type: h,
+visible: !0,
+displayName: "Animation",
+tooltip: !1
+},
+_preCacheMode: -1,
+_cacheMode: u.REALTIME,
+_defaultCacheMode: {
+default: 0,
+type: u,
+notify: function() {
+this.setAnimationCacheMode(this._defaultCacheMode);
+},
+editorOnly: !0,
+visible: !0,
+animatable: !1,
+displayName: "Animation Cache Mode",
+tooltip: !1
+},
+loop: {
+default: !0,
+tooltip: !1
+},
+premultipliedAlpha: {
+default: !0,
+tooltip: !1
+},
+timeScale: {
+default: 1,
+tooltip: !1
+},
+debugSlots: {
+default: !1,
+editorOnly: !0,
+tooltip: !1,
+notify: function() {
+this._updateDebugDraw();
+}
+},
+debugBones: {
+default: !1,
+editorOnly: !0,
+tooltip: !1,
+notify: function() {
+this._updateDebugDraw();
+}
+},
+useTint: {
+default: !1,
+tooltip: !1,
+notify: function() {
+this._updateUseTint();
+}
+},
+enableBatch: {
+default: !1,
+notify: function() {
+this._updateBatch();
+},
+tooltip: !1
+},
+_accTime: 0,
+_playCount: 0,
+_frameCache: null,
+_curFrame: null,
+_skeletonCache: null,
+_animationName: "",
+_animationQueue: [],
+_headAniInfo: null,
+_playTimes: 0,
+_isAniComplete: !0
+},
+ctor: function() {
+this._skeleton = null;
+this._rootBone = null;
+this._listener = null;
+this._boundingBox = cc.rect();
+this._materialCache = {};
+this._debugRenderer = null;
+this._startSlotIndex = -1;
+this._endSlotIndex = -1;
+this._startEntry = {
+animation: {
+name: ""
+},
+trackIndex: 0
+};
+this._endEntry = {
+animation: {
+name: ""
+},
+trackIndex: 0
+};
+},
+setMaterial: function(t, e) {
+this._super(t, e);
+this._materialCache = {};
+},
+_updateUseTint: function() {
+var t = this._materialCache;
+for (var e in t) {
+var i = t[e];
+i && i.define("USE_TINT", this.useTint);
+}
+},
+_updateBatch: function() {
+var t = this._materialCache;
+for (var e in t) {
+var i = t[e];
+i && i.define("_USE_MODEL", !this.enableBatch);
+}
+},
+setSkeletonData: function(t) {
+null != t.width && null != t.height && this.node.setContentSize(t.width, t.height);
+this._cacheMode === u.SHARED_CACHE ? this._skeletonCache = c.sharedCache : this._cacheMode === u.PRIVATE_CACHE && (this._skeletonCache = new c());
+if (this.isAnimationCached()) {
+(this.debugBones || this.debugSlots) && cc.warn("Debug bones or slots is invalid in cached mode");
+var e = this._skeletonCache.getSkeletonCache(this.skeletonData._uuid, t);
+this._skeleton = e.skeleton;
+this._clipper = e.clipper;
+this._rootBone = this._skeleton.getRootBone();
+} else {
+this._skeleton = new s.Skeleton(t);
+this._clipper = new s.SkeletonClipping();
+this._rootBone = this._skeleton.getRootBone();
+}
+},
+setSlotsRange: function(t, e) {
+if (this.isAnimationCached()) console.warn("Slots visible range can not be modified in cached mode."); else {
+this._startSlotIndex = t;
+this._endSlotIndex = e;
+}
+},
+setAnimationStateData: function(t) {
+if (this.isAnimationCached()) console.warn("'setAnimationStateData' interface can not be invoked in cached mode."); else {
+var e = new s.AnimationState(t);
+if (this._listener) {
+this._state && this._state.removeListener(this._listener);
+e.addListener(this._listener);
+}
+this._state = e;
+}
+},
+__preload: function() {
+for (var t = this.node.children, e = 0, i = t.length; e < i; e++) {
+var n = t[e];
+n && "DEBUG_DRAW_NODE" === n._name && n.destroy();
+}
+this._cacheMode = u.REALTIME;
+this._activateMaterial();
+this._updateSkeletonData();
+this._updateDebugDraw();
+this._updateUseTint();
+this._updateBatch();
+},
+setAnimationCacheMode: function(t) {},
+isAnimationCached: function() {
+0;
+return this._cacheMode !== u.REALTIME;
+},
+update: function(t) {
+0;
+if (!this.paused) {
+t *= this.timeScale * sp.timeScale;
+if (this.isAnimationCached()) {
+if (this._isAniComplete) {
+if (0 === this._animationQueue.length && !this._headAniInfo) return;
+this._headAniInfo || (this._headAniInfo = this._animationQueue.shift());
+this._accTime += t;
+if (this._accTime > this._headAniInfo.delay) {
+var e = this._headAniInfo;
+this._headAniInfo = null;
+this.setAnimation(0, e.animationName, e.loop);
+}
+return;
+}
+this._updateCache(t);
+} else this._updateRealtime(t);
+}
+},
+_updateCache: function(t) {
+var e = this._frameCache, i = e.frames, n = c.FrameTime;
+if (0 == this._accTime && 0 == this._playCount) {
+this._startEntry.animation.name = this._animationName;
+this._listener && this._listener.start && this._listener.start(this._startEntry);
+}
+this._accTime += t;
+var r = Math.floor(this._accTime / n);
+e.isCompleted || e.updateToFrame(r);
+if (e.isCompleted && r >= i.length) {
+this._endEntry.animation.name = this._animationName;
+this._listener && this._listener.complete && this._listener.complete(this._endEntry);
+this._listener && this._listener.end && this._listener.end(this._endEntry);
+this._playCount++;
+if (this._playTimes > 0 && this._playCount >= this._playTimes) {
+this._curFrame = i[i.length - 1];
+this._accTime = 0;
+this._playCount = 0;
+this._isAniComplete = !0;
+return;
+}
+this._accTime = 0;
+r = 0;
+}
+this._curFrame = i[r];
+},
+_updateRealtime: function(t) {
+var e = this._skeleton, i = this._state;
+if (e) {
+e.update(t);
+if (i) {
+i.update(t);
+i.apply(e);
+}
+}
+},
+_activateMaterial: function() {
+var t = this.sharedMaterials[0];
+(t = t ? o.getInstantiatedMaterial(t, this) : o.getInstantiatedBuiltinMaterial("2d-spine", this)).define("_USE_MODEL", !0);
+this.setMaterial(0, t);
+this.markForRender(!0);
+},
+onEnable: function() {
+this._super();
+this._activateMaterial();
+},
+onRestore: function() {
+this._boundingBox = cc.rect();
+},
+updateWorldTransform: function() {
+this.isAnimationCached() && this._skeleton && this._skeleton.updateWorldTransform();
+},
+setToSetupPose: function() {
+this.isAnimationCached() ? cc.warn("'SetToSetupPose' interface can not be invoked in cached mode.") : this._skeleton && this._skeleton.setToSetupPose();
+},
+setBonesToSetupPose: function() {
+this.isAnimationCached() ? cc.warn("'setBonesToSetupPose' interface can not be invoked in cached mode.") : this._skeleton && this._skeleton.setBonesToSetupPose();
+},
+setSlotsToSetupPose: function() {
+this.isAnimationCached() ? cc.warn("'setSlotsToSetupPose' interface can not be invoked in cached mode.") : this._skeleton && this._skeleton.setSlotsToSetupPose();
+},
+updateAnimationCache: function(t) {
+if (this.isAnimationCached()) {
+var e = this._skeletonCache.updateAnimationCache(this.skeletonData._uuid, t);
+this._frameCache = e || this._frameCache;
+}
+},
+findBone: function(t) {
+return this._skeleton ? this._skeleton.findBone(t) : null;
+},
+findSlot: function(t) {
+return this._skeleton ? this._skeleton.findSlot(t) : null;
+},
+setSkin: function(t) {
+if (this.isAnimationCached()) this._skeletonCache.updateSkeletonSkin(this.skeletonData._uuid, t); else if (this._skeleton) {
+this._skeleton.setSkinByName(t);
+this._skeleton.setSlotsToSetupPose();
+}
+},
+getAttachment: function(t, e) {
+return this._skeleton ? this._skeleton.getAttachmentByName(t, e) : null;
+},
+setAttachment: function(t, e) {
+this._skeleton && this._skeleton.setAttachment(t, e);
+},
+getTextureAtlas: function(t) {
+return t.region;
+},
+setMix: function(t, e, i) {
+this._state && this._state.data.setMix(t, e, i);
+},
+setAnimation: function(t, e, i) {
+this._playTimes = i ? 0 : 1;
+this._animationName = e;
+if (this.isAnimationCached()) {
+0 !== t && cc.warn("Track index can not greater than 0 in cached mode.");
+var n = this._skeletonCache.getAnimationCache(this.skeletonData._uuid, e);
+n || (n = this._skeletonCache.initAnimationCache(this.skeletonData._uuid, e)).begin();
+if (n) {
+this._isAniComplete = !1;
+this._accTime = 0;
+this._playCount = 0;
+this._frameCache = n;
+this._curFrame = this._frameCache.frames[0];
+}
+} else if (this._skeleton) {
+var r = this._skeleton.data.findAnimation(e);
+if (!r) {
+cc.logID(7509, e);
+return null;
+}
+var s = this._state.setAnimationWith(t, r, i);
+this._state.apply(this._skeleton);
+return s;
+}
+return null;
+},
+addAnimation: function(t, e, i, n) {
+n = n || 0;
+if (this.isAnimationCached()) {
+0 !== t && cc.warn("Track index can not greater than 0 in cached mode.");
+this._animationQueue.push({
+animationName: e,
+loop: i,
+delay: n
+});
+} else if (this._skeleton) {
+var r = this._skeleton.data.findAnimation(e);
+if (!r) {
+cc.logID(7510, e);
+return null;
+}
+return this._state.addAnimationWith(t, r, i, n);
+}
+return null;
+},
+findAnimation: function(t) {
+return this._skeleton ? this._skeleton.data.findAnimation(t) : null;
+},
+getCurrent: function(t) {
+if (this.isAnimationCached()) console.warn("'getCurrent' interface can not be invoked in cached mode."); else if (this._state) return this._state.getCurrent(t);
+return null;
+},
+clearTracks: function() {
+this.isAnimationCached() ? console.warn("'clearTracks' interface can not be invoked in cached mode.") : this._state && this._state.clearTracks();
+},
+clearTrack: function(t) {
+if (this.isAnimationCached()) console.warn("'clearTrack' interface can not be invoked in cached mode."); else if (this._state) {
+this._state.clearTrack(t);
+0;
+}
+},
+setStartListener: function(t) {
+this._ensureListener();
+this._listener.start = t;
+},
+setInterruptListener: function(t) {
+this._ensureListener();
+this._listener.interrupt = t;
+},
+setEndListener: function(t) {
+this._ensureListener();
+this._listener.end = t;
+},
+setDisposeListener: function(t) {
+this._ensureListener();
+this._listener.dispose = t;
+},
+setCompleteListener: function(t) {
+this._ensureListener();
+this._listener.complete = t;
+},
+setEventListener: function(t) {
+this._ensureListener();
+this._listener.event = t;
+},
+setTrackStartListener: function(t, e) {
+n.getListeners(t).start = e;
+},
+setTrackInterruptListener: function(t, e) {
+n.getListeners(t).interrupt = e;
+},
+setTrackEndListener: function(t, e) {
+n.getListeners(t).end = e;
+},
+setTrackDisposeListener: function(t, e) {
+n.getListeners(t).dispose = e;
+},
+setTrackCompleteListener: function(t, e) {
+n.getListeners(t).complete = function(t) {
+var i = Math.floor(t.trackTime / t.animationEnd);
+e(t, i);
+};
+},
+setTrackEventListener: function(t, e) {
+n.getListeners(t).event = e;
+},
+getState: function() {
+return this._state;
+},
+_updateAnimEnum: !1,
+_updateSkinEnum: !1,
+_ensureListener: function() {
+if (!this._listener) {
+this._listener = new n();
+this._state && this._state.addListener(this._listener);
+}
+},
+_updateSkeletonData: function() {
+if (this.skeletonData) {
+var t = this.skeletonData.getRuntimeData();
+if (t) {
+try {
+this.setSkeletonData(t);
+this.isAnimationCached() || this.setAnimationStateData(new s.AnimationStateData(this._skeleton.data));
+this.defaultSkin && this.setSkin(this.defaultSkin);
+} catch (t) {
+cc.warn(t);
+}
+this._preCacheMode = this._cacheMode;
+this.animation = this.defaultAnimation;
+}
+}
+},
+_refreshInspector: function() {
+this._updateAnimEnum();
+this._updateSkinEnum();
+Editor.Utils.refreshSelectedInspector("node", this.node.uuid);
+},
+_updateDebugDraw: function() {
+if (this.debugBones || this.debugSlots) {
+if (!this._debugRenderer) {
+var t = new cc.PrivateNode();
+t.name = "DEBUG_DRAW_NODE";
+var e = t.addComponent(a);
+e.lineWidth = 1;
+e.strokeColor = cc.color(255, 0, 0, 255);
+this._debugRenderer = e;
+}
+this._debugRenderer.node.parent = this.node;
+this.isAnimationCached() && cc.warn("Debug bones or slots is invalid in cached mode");
+} else this._debugRenderer && (this._debugRenderer.node.parent = null);
+}
+});
+e.exports = sp.Skeleton;
+}), {
+"../../cocos2d/core/assets/material/CCMaterial": 75,
+"../../cocos2d/core/components/CCRenderComponent": 106,
+"../../cocos2d/core/graphics/graphics": 142,
+"./lib/spine": void 0,
+"./skeleton-cache": void 0,
+"./track-entry-listeners": 400
+} ],
+396: [ (function(i, n, r) {
+"use strict";
+var s = "undefined" === ("object" === (e = typeof window) ? t(window) : e) ? global : window, o = !0;
+void 0 === s.spine && (o = !1);
+if (o) {
+s.sp = {};
+sp._timeScale = 1;
+Object.defineProperty(sp, "timeScale", {
+get: function() {
+return this._timeScale;
+},
+set: function(t) {
+this._timeScale = t;
+},
+configurable: !0
+});
+sp.ATTACHMENT_TYPE = {
+REGION: 0,
+BOUNDING_BOX: 1,
+MESH: 2,
+SKINNED_MESH: 3
+};
+sp.AnimationEventType = cc.Enum({
+START: 0,
+INTERRUPT: 1,
+END: 2,
+DISPOSE: 3,
+COMPLETE: 4,
+EVENT: 5
+});
+sp.spine = s.spine;
+i("./skeleton-texture");
+i("./skeleton-data");
+i("./Skeleton");
+i("./spine-assembler");
+}
+}), {
+"./Skeleton": 395,
+"./lib/spine": void 0,
+"./skeleton-data": 397,
+"./skeleton-texture": 398,
+"./spine-assembler": 399
+} ],
+397: [ (function(t, e, i) {
+"use strict";
+var n = cc.Class({
+name: "sp.SkeletonData",
+extends: cc.Asset,
+ctor: function() {
+this.reset();
+},
+properties: {
+skeletonJsonStr: "",
+_skeletonJson: null,
+skeletonJson: {
+get: function() {
+return this._skeletonJson;
+},
+set: function(t) {
+this._skeletonJson = t;
+this.skeletonJsonStr = JSON.stringify(t);
+!this._uuid && t.skeleton && (this._uuid = t.skeleton.hash);
+this.reset();
+}
+},
+_atlasText: "",
+atlasText: {
+get: function() {
+return this._atlasText;
+},
+set: function(t) {
+this._atlasText = t;
+this.reset();
+}
+},
+textures: {
+default: [],
+type: [ cc.Texture2D ]
+},
+textureNames: {
+default: [],
+type: [ cc.String ]
+},
+scale: 1
+},
+statics: {
+preventDeferredLoadDependents: !0,
+preventPreloadNativeObject: !0
+},
+createNode: !1,
+reset: function() {
+this._skeletonCache = null;
+this._atlasCache = null;
+0;
+},
+getRuntimeData: function(t) {
+if (this._skeletonCache) return this._skeletonCache;
+if (!(this.textures && this.textures.length > 0) && this.textureNames && this.textureNames.length > 0) {
+t || cc.errorID(7507, this.name);
+return null;
+}
+var e = this._getAtlas(t);
+if (!e) return null;
+var i = new sp.spine.AtlasAttachmentLoader(e), n = new sp.spine.SkeletonJson(i);
+n.scale = this.scale;
+var r = this.skeletonJson;
+this._skeletonCache = n.readSkeletonData(r);
+e.dispose(n);
+return this._skeletonCache;
+},
+getSkinsEnum: !1,
+getAnimsEnum: !1,
+_getTexture: function(t) {
+for (var e = this.textureNames, i = 0; i < e.length; i++) if (e[i] === t) {
+var n = this.textures[i], r = new sp.SkeletonTexture({
+width: n.width,
+height: n.height
+});
+r.setRealTexture(n);
+return r;
+}
+cc.errorID(7506, t);
+return null;
+},
+_getAtlas: function(t) {
+if (this._atlasCache) return this._atlasCache;
+if (!this.atlasText) {
+t || cc.errorID(7508, this.name);
+return null;
+}
+return this._atlasCache = new sp.spine.TextureAtlas(this.atlasText, this._getTexture.bind(this));
+},
+destroy: function() {
+0;
+this._super();
+}
+});
+sp.SkeletonData = e.exports = n;
+}), {
+"./skeleton-cache": void 0
+} ],
+398: [ (function(t, e, i) {
+"use strict";
+sp.SkeletonTexture = cc.Class({
+name: "sp.SkeletonTexture",
+extends: sp.spine.Texture,
+_texture: null,
+_material: null,
+setRealTexture: function(t) {
+this._texture = t;
+},
+getRealTexture: function() {
+return this._texture;
+},
+setFilters: function(t, e) {
+this._texture && this._texture.setFilters(t, e);
+},
+setWraps: function(t, e) {
+this._texture && this._texture.setWrapMode(t, e);
+},
+dispose: function() {}
+});
+}), {} ],
+399: [ (function(t, e, i) {
+"use strict";
+var n = t("./Skeleton"), r = t("./lib/spine"), s = t("../../cocos2d/core/renderer/render-flow"), o = t("../../cocos2d/core/renderer/webgl/vertex-format"), a = o.vfmtPosUvColor, c = o.vfmtPosUvTwoColor, l = cc.gfx, h = 0, u = [ 0, 1, 2, 2, 3, 0 ], _ = cc.color(0, 0, 255, 255), f = cc.color(255, 0, 0, 255), d = cc.color(0, 255, 0, 255), m = void 0, p = void 0;
+0;
+var v = void 0, y = void 0, g = void 0, x = void 0, C = void 0, b = void 0, A = void 0, S = void 0, w = void 0, T = void 0, E = void 0, M = void 0, B = void 0, D = void 0, I = void 0, P = void 0, R = 0, L = 0, F = 0, O = 0, V = 0, N = 0, k = 0, z = void 0, G = void 0, U = void 0, j = void 0, W = void 0, H = void 0, q = void 0, X = void 0, Y = void 0, J = void 0, Z = void 0, K = void 0, Q = void 0, $ = void 0, tt = void 0, et = void 0, it = void 0, nt = void 0, rt = void 0, st = void 0, ot = void 0, at = void 0, ct = void 0, lt = void 0, ht = void 0, ut = void 0, _t = void 0, ft = void 0;
+function dt(t, e) {
+var i = void 0, n = void 0;
+switch (e) {
+case r.BlendMode.Additive:
+i = v ? cc.macro.ONE : cc.macro.SRC_ALPHA;
+n = cc.macro.ONE;
+break;
+
+case r.BlendMode.Multiply:
+i = cc.macro.DST_COLOR;
+n = cc.macro.ONE_MINUS_SRC_ALPHA;
+break;
+
+case r.BlendMode.Screen:
+i = cc.macro.ONE;
+n = cc.macro.ONE_MINUS_SRC_COLOR;
+break;
+
+case r.BlendMode.Normal:
+default:
+i = v ? cc.macro.ONE : cc.macro.SRC_ALPHA;
+n = cc.macro.ONE_MINUS_SRC_ALPHA;
+}
+var s = !lt.enableBatch, o = t.url + i + n + C + s, a = lt.sharedMaterials[0];
+if (!a) return null;
+var c = lt._materialCache, h = c[o];
+if (h) {
+if (h.getProperty("texture") !== t) {
+h.setProperty("texture", t);
+h.updateHash(o);
+}
+} else {
+c[a._hash] ? (h = new cc.Material()).copy(a) : h = a;
+h.define("_USE_MODEL", s);
+h.define("USE_TINT", C);
+h.setProperty("texture", t);
+h.effect.getDefaultTechnique().passes[0].setBlend(!0, l.BLEND_FUNC_ADD, i, n, l.BLEND_FUNC_ADD, i, n);
+h.updateHash(o);
+c[o] = h;
+}
+return h;
+}
+function mt(t) {
+st = t.fa * E;
+$ = S * (y = v ? st / 255 : 1);
+tt = w * y;
+et = T * y;
+it = t.fr * $;
+nt = t.fg * tt;
+rt = t.fb * et;
+M = (st << 24 >>> 0) + (rt << 16) + (nt << 8) + it;
+ot = t.dr * $;
+at = t.dg * tt;
+ct = t.db * et;
+B = ((v ? 255 : 0) << 24 >>> 0) + (ct << 16) + (at << 8) + ot;
+}
+var pt = {
+updateRenderData: function(t) {
+var e = t._skeleton;
+e && e.updateWorldTransform();
+},
+fillVertices: function(t, e, i, n, r) {
+var s = ht._vData, o = ht._iData, a = ht._uintVData, c = void 0;
+m.a = i.a * e.a * t.a * E * 255;
+y = v ? m.a : 255;
+z = S * e.r * t.r * y;
+G = w * e.g * t.g * y;
+U = T * e.b * t.b * y;
+m.r = z * i.r;
+m.g = G * i.g;
+m.b = U * i.b;
+if (null == r.darkColor) p.set(0, 0, 0, 1); else {
+p.r = r.darkColor.r * z;
+p.g = r.darkColor.g * G;
+p.b = r.darkColor.b * U;
+}
+p.a = v ? 255 : 0;
+if (n.isClipping()) {
+var l = s.subarray(F + 2);
+n.clipTriangles(s.subarray(F), R, o.subarray(N), V, l, m, p, C, I);
+var h = new Float32Array(n.clippedVertices), u = n.clippedTriangles;
+V = u.length;
+R = h.length / P * I;
+c = ht.request(R / I, V);
+N = c.indiceOffset, O = c.vertexOffset, F = c.byteOffset >> 2;
+s = ht._vData, o = ht._iData;
+a = ht._uintVData;
+o.set(u, N);
+if (C) for (var _ = 0, f = h.length, d = F; _ < f; _ += 12, d += I) {
+s[d] = h[_];
+s[d + 1] = h[_ + 1];
+s[d + 2] = h[_ + 6];
+s[d + 3] = h[_ + 7];
+M = (h[_ + 5] << 24 >>> 0) + (h[_ + 4] << 16) + (h[_ + 3] << 8) + h[_ + 2];
+a[d + 4] = M;
+B = (h[_ + 11] << 24 >>> 0) + (h[_ + 10] << 16) + (h[_ + 9] << 8) + h[_ + 8];
+a[d + 5] = B;
+} else for (var g = 0, x = h.length, b = F; g < x; g += 8, b += I) {
+s[b] = h[g];
+s[b + 1] = h[g + 1];
+s[b + 2] = h[g + 6];
+s[b + 3] = h[g + 7];
+M = (h[g + 5] << 24 >>> 0) + (h[g + 4] << 16) + (h[g + 3] << 8) + h[g + 2];
+a[b + 4] = M;
+}
+} else {
+M = (m.a << 24 >>> 0) + (m.b << 16) + (m.g << 8) + m.r;
+B = (p.a << 24 >>> 0) + (p.b << 16) + (p.g << 8) + p.r;
+if (C) for (var A = F, D = F + R; A < D; A += I) {
+a[A + 4] = M;
+a[A + 5] = B;
+} else for (var L = F, k = F + R; L < k; L += I) a[L + 4] = M;
+}
+},
+realTimeTraverse: function(t) {
+var e = void 0, i = void 0, n = lt._skeleton, s = n.color, o = lt._debugRenderer, a = lt._clipper, c = null, l = void 0, h = void 0, m = void 0, p = void 0, v = void 0, y = void 0, S = void 0, w = void 0, T = void 0;
+g = lt._startSlotIndex;
+x = lt._endSlotIndex;
+j = !1;
+-1 == g && (j = !0);
+b = lt.debugSlots;
+A = lt.debugBones;
+if (o && (A || b)) {
+o.clear();
+o.strokeColor = _;
+o.lineWidth = 5;
+}
+P = C ? 12 : 8;
+R = 0;
+F = 0;
+O = 0;
+V = 0;
+N = 0;
+for (var E = 0, M = n.drawOrder.length; E < M; E++) {
+T = n.drawOrder[E];
+g >= 0 && g == T.data.index && (j = !0);
+if (j) {
+x >= 0 && x == T.data.index && (j = !1);
+R = 0;
+V = 0;
+if (l = T.getAttachment()) {
+y = l instanceof r.RegionAttachment;
+S = l instanceof r.MeshAttachment;
+if (l instanceof r.ClippingAttachment) a.clipStart(T, l); else if (y || S) if (c = dt(l.region.texture._texture, T.data.blendMode)) {
+if (W || c._hash !== ut.material._hash) {
+W = !1;
+ut._flush();
+ut.node = _t;
+ut.material = c;
+}
+if (y) {
+v = u;
+R = 4 * I;
+V = 6;
+w = ht.request(4, 6);
+N = w.indiceOffset, O = w.vertexOffset, F = w.byteOffset >> 2;
+e = ht._vData, i = ht._iData;
+l.computeWorldVertices(T.bone, e, F, I);
+if (o && b) {
+o.moveTo(e[F], e[F + 1]);
+for (var B = F + I, D = F + R; B < D; B += I) o.lineTo(e[B], e[B + 1]);
+o.close();
+o.stroke();
+}
+} else if (S) {
+v = l.triangles;
+R = (l.worldVerticesLength >> 1) * I;
+V = v.length;
+w = ht.request(R / I, V);
+N = w.indiceOffset, O = w.vertexOffset, F = w.byteOffset >> 2;
+e = ht._vData, i = ht._iData;
+l.computeWorldVertices(T, 0, l.worldVerticesLength, e, F, I);
+}
+if (0 != R && 0 != V) {
+i.set(v, N);
+p = l.uvs;
+for (var L = F, k = F + R, z = 0; L < k; L += I, z += 2) {
+e[L + 2] = p[z];
+e[L + 3] = p[z + 1];
+}
+h = l.color, m = T.color;
+this.fillVertices(s, h, m, a, T);
+if (V > 0) {
+for (var G = N, U = N + V; G < U; G++) i[G] += O;
+if (t) {
+X = t.m00;
+Y = t.m04;
+J = t.m12;
+Z = t.m01;
+K = t.m05;
+Q = t.m13;
+for (var $ = F, tt = F + R; $ < tt; $ += I) {
+H = e[$];
+q = e[$ + 1];
+e[$] = H * X + q * Y + J;
+e[$ + 1] = H * Z + q * K + Q;
+}
+}
+ht.adjust(R / I, V);
+}
+a.clipEndWithSlot(T);
+} else a.clipEndWithSlot(T);
+} else a.clipEndWithSlot(T); else a.clipEndWithSlot(T);
+} else a.clipEndWithSlot(T);
+} else a.clipEndWithSlot(T);
+}
+a.clipEnd();
+if (o && A) {
+var et = void 0;
+o.strokeColor = f;
+o.fillColor = _;
+for (var it = 0, nt = n.bones.length; it < nt; it++) {
+var rt = (et = n.bones[it]).data.length * et.a + et.worldX, st = et.data.length * et.c + et.worldY;
+o.moveTo(et.worldX, et.worldY);
+o.lineTo(rt, st);
+o.stroke();
+o.circle(et.worldX, et.worldY, 2 * Math.PI);
+o.fill();
+0 === it && (o.fillColor = d);
+}
+}
+},
+cacheTraverse: function(t) {
+var e = lt._curFrame;
+if (e) {
+var i = e.segments;
+if (0 != i.length) {
+var n = void 0, r = void 0, s = void 0, o = void 0, a = void 0, c = e.vertices, l = e.indices, u = e.uintVert, _ = 0, f = 0, d = 0;
+if (t) {
+X = t.m00;
+Y = t.m04;
+J = t.m12;
+Z = t.m01;
+K = t.m05;
+Q = t.m13;
+}
+var m = 0, p = e.colors, v = p[m++], y = v.vfOffset;
+mt(v);
+for (var g = 0, x = i.length; g < x; g++) {
+var b = i[g];
+if (o = dt(b.tex, b.blendMode)) {
+if (W || o._hash !== ut.material._hash) {
+W = !1;
+ut._flush();
+ut.node = _t;
+ut.material = o;
+}
+L = b.vertexCount;
+V = b.indexCount;
+R = L * I;
+a = ht.request(L, V);
+N = a.indiceOffset;
+O = a.vertexOffset;
+k = a.byteOffset >> 2;
+n = ht._vData;
+r = ht._iData;
+s = ht._uintVData;
+for (var A = N, S = N + V; A < S; A++) r[A] = O + l[f++];
+d = b.vfCount;
+switch (h) {
+case 0:
+for (var w = k, T = k + R; w < T; ) {
+n[w++] = c[_++];
+n[w++] = c[_++];
+n[w++] = c[_++];
+n[w++] = c[_++];
+s[w++] = u[_++];
+_++;
+}
+break;
+
+case 1:
+n.set(c.subarray(_, _ + R), k);
+_ += R;
+break;
+
+case 16:
+for (var E = k, D = k + R; E < D; ) {
+H = c[_++];
+q = c[_++];
+n[E++] = H * X + q * Y + J;
+n[E++] = H * Z + q * K + Q;
+n[E++] = c[_++];
+n[E++] = c[_++];
+s[E++] = u[_++];
+_++;
+}
+break;
+
+case 17:
+for (var P = k, F = k + R; P < F; ) {
+H = c[_++];
+q = c[_++];
+n[P++] = H * X + q * Y + J;
+n[P++] = H * Z + q * K + Q;
+n[P++] = c[_++];
+n[P++] = c[_++];
+s[P++] = u[_++];
+s[P++] = u[_++];
+}
+}
+ht.adjust(L, V);
+if (ft) for (var z = _ - d, G = k + 4, U = k + 4 + R; G < U; G += I, z += 6) {
+if (z >= y) {
+mt(v = p[m++]);
+y = v.vfOffset;
+}
+s[G] = M;
+C && (s[G + 1] = B);
+}
+}
+}
+}
+}
+},
+fillBuffers: function(t, e) {
+var i = t.node;
+i._renderFlag |= s.FLAG_UPDATE_RENDER_DATA;
+if (t._skeleton) {
+var n = i._color;
+S = n.r / 255;
+w = n.g / 255;
+T = n.b / 255;
+E = n.a / 255;
+C = t.useTint;
+D = C ? c : a;
+I = C ? 6 : 5;
+_t = t.node;
+ht = e.getBuffer("spine", D);
+ut = e;
+lt = t;
+W = !0;
+v = t.premultipliedAlpha;
+y = 1;
+h = 0;
+ft = !1;
+(4294967295 !== n._val || v) && (ft = !0);
+C && (h |= 1);
+var r = void 0;
+if (lt.enableBatch) {
+r = _t._worldMatrix;
+W = !1;
+h |= 16;
+}
+t.isAnimationCached() ? this.cacheTraverse(r) : this.realTimeTraverse(r);
+_t = void 0;
+ht = void 0;
+ut = void 0;
+lt = void 0;
+}
+}
+};
+n._assembler = pt;
+e.exports = pt;
+}), {
+"../../cocos2d/core/renderer/render-flow": 245,
+"../../cocos2d/core/renderer/webgl/vertex-format": 284,
+"./Skeleton": 395,
+"./lib/spine": void 0
+} ],
+400: [ (function(t, e, i) {
+"use strict";
+var n = function() {
+this.start = null;
+this.end = null;
+this.complete = null;
+this.event = null;
+this.interrupt = null;
+this.dispose = null;
+};
+n.getListeners = function(t) {
+t.listener || (t.listener = new n());
+return t.listener;
+};
+e.exports = n;
+}), {} ],
+401: [ (function(i, n, r) {
+"use strict";
+(function(i, s) {
+"object" === ("object" === (e = typeof r) ? t(r) : e) && "undefined" !== ("object" === (e = typeof n) ? t(n) : e) ? s(r) : "function" === ("object" === (e = typeof define) ? t(define) : e) && define.amd ? define([ "exports" ], s) : s(i.box2d = {});
+})(void 0, (function(t) {
+function e(t, e) {
+return void 0 !== t ? t : e;
+}
+var i = 1e37, n = 1e-5, r = n * n, s = 3.14159265359, o = 2, a = 8, c = .008, l = 2 / 180 * s, h = 2 * c, u = -1;
+var _ = (function() {
+function t(t, e, i) {
+void 0 === t && (t = 0);
+void 0 === e && (e = 0);
+void 0 === i && (i = 0);
+this.major = 0;
+this.minor = 0;
+this.revision = 0;
+this.major = t;
+this.minor = e;
+this.revision = i;
+}
+t.prototype.toString = function() {
+return this.major + "." + this.minor + "." + this.revision;
+};
+return t;
+})(), f = new _(2, 3, 2);
+function d(t, e) {
+for (var i = [], n = 0; n < t; ++n) i.push(e(n));
+return i;
+}
+function m(t, e) {
+void 0 === e && (e = 0);
+for (var i = [], n = 0; n < t; ++n) i.push(e);
+return i;
+}
+var p = s / 180, v = 180 / s, y = Math.abs, g = Math.min, x = Math.max;
+function C(t, e, i) {
+return t < e ? e : t > i ? i : t;
+}
+var b = isFinite;
+function A(t) {
+return t * t;
+}
+function S(t) {
+return 1 / Math.sqrt(t);
+}
+var w = Math.sqrt, T = Math.pow;
+var E = Math.cos, M = Math.sin, B = Math.acos, D = Math.asin, I = Math.atan2;
+var P = (function() {
+function t(t, e) {
+void 0 === t && (t = 0);
+void 0 === e && (e = 0);
+this.x = t;
+this.y = e;
+}
+t.prototype.Clone = function() {
+return new t(this.x, this.y);
+};
+t.prototype.SetZero = function() {
+this.x = 0;
+this.y = 0;
+return this;
+};
+t.prototype.Set = function(t, e) {
+this.x = t;
+this.y = e;
+return this;
+};
+t.prototype.Copy = function(t) {
+this.x = t.x;
+this.y = t.y;
+return this;
+};
+t.prototype.SelfAdd = function(t) {
+this.x += t.x;
+this.y += t.y;
+return this;
+};
+t.prototype.SelfAddXY = function(t, e) {
+this.x += t;
+this.y += e;
+return this;
+};
+t.prototype.SelfSub = function(t) {
+this.x -= t.x;
+this.y -= t.y;
+return this;
+};
+t.prototype.SelfSubXY = function(t, e) {
+this.x -= t;
+this.y -= e;
+return this;
+};
+t.prototype.SelfMul = function(t) {
+this.x *= t;
+this.y *= t;
+return this;
+};
+t.prototype.SelfMulAdd = function(t, e) {
+this.x += t * e.x;
+this.y += t * e.y;
+return this;
+};
+t.prototype.SelfMulSub = function(t, e) {
+this.x -= t * e.x;
+this.y -= t * e.y;
+return this;
+};
+t.prototype.Dot = function(t) {
+return this.x * t.x + this.y * t.y;
+};
+t.prototype.Cross = function(t) {
+return this.x * t.y - this.y * t.x;
+};
+t.prototype.Length = function() {
+var t = this.x, e = this.y;
+return Math.sqrt(t * t + e * e);
+};
+t.prototype.LengthSquared = function() {
+var t = this.x, e = this.y;
+return t * t + e * e;
+};
+t.prototype.Normalize = function() {
+var t = this.Length();
+if (t >= n) {
+var e = 1 / t;
+this.x *= e;
+this.y *= e;
+}
+return t;
+};
+t.prototype.SelfNormalize = function() {
+var t = this.Length();
+if (t >= n) {
+var e = 1 / t;
+this.x *= e;
+this.y *= e;
+}
+return this;
+};
+t.prototype.SelfRotate = function(t) {
+var e = Math.cos(t), i = Math.sin(t), n = this.x;
+this.x = e * n - i * this.y;
+this.y = i * n + e * this.y;
+return this;
+};
+t.prototype.IsValid = function() {
+return isFinite(this.x) && isFinite(this.y);
+};
+t.prototype.SelfCrossVS = function(t) {
+var e = this.x;
+this.x = t * this.y;
+this.y = -t * e;
+return this;
+};
+t.prototype.SelfCrossSV = function(t) {
+var e = this.x;
+this.x = -t * this.y;
+this.y = t * e;
+return this;
+};
+t.prototype.SelfMinV = function(t) {
+this.x = g(this.x, t.x);
+this.y = g(this.y, t.y);
+return this;
+};
+t.prototype.SelfMaxV = function(t) {
+this.x = x(this.x, t.x);
+this.y = x(this.y, t.y);
+return this;
+};
+t.prototype.SelfAbs = function() {
+this.x = y(this.x);
+this.y = y(this.y);
+return this;
+};
+t.prototype.SelfNeg = function() {
+this.x = -this.x;
+this.y = -this.y;
+return this;
+};
+t.prototype.SelfSkew = function() {
+var t = this.x;
+this.x = -this.y;
+this.y = t;
+return this;
+};
+t.MakeArray = function(e) {
+return d(e, (function(e) {
+return new t();
+}));
+};
+t.AbsV = function(t, e) {
+e.x = y(t.x);
+e.y = y(t.y);
+return e;
+};
+t.MinV = function(t, e, i) {
+i.x = g(t.x, e.x);
+i.y = g(t.y, e.y);
+return i;
+};
+t.MaxV = function(t, e, i) {
+i.x = x(t.x, e.x);
+i.y = x(t.y, e.y);
+return i;
+};
+t.ClampV = function(t, e, i, n) {
+n.x = C(t.x, e.x, i.x);
+n.y = C(t.y, e.y, i.y);
+return n;
+};
+t.RotateV = function(t, e, i) {
+var n = t.x, r = t.y, s = Math.cos(e), o = Math.sin(e);
+i.x = s * n - o * r;
+i.y = o * n + s * r;
+return i;
+};
+t.DotVV = function(t, e) {
+return t.x * e.x + t.y * e.y;
+};
+t.CrossVV = function(t, e) {
+return t.x * e.y - t.y * e.x;
+};
+t.CrossVS = function(t, e, i) {
+var n = t.x;
+i.x = e * t.y;
+i.y = -e * n;
+return i;
+};
+t.CrossVOne = function(t, e) {
+var i = t.x;
+e.x = t.y;
+e.y = -i;
+return e;
+};
+t.CrossSV = function(t, e, i) {
+var n = e.x;
+i.x = -t * e.y;
+i.y = t * n;
+return i;
+};
+t.CrossOneV = function(t, e) {
+var i = t.x;
+e.x = -t.y;
+e.y = i;
+return e;
+};
+t.AddVV = function(t, e, i) {
+i.x = t.x + e.x;
+i.y = t.y + e.y;
+return i;
+};
+t.SubVV = function(t, e, i) {
+i.x = t.x - e.x;
+i.y = t.y - e.y;
+return i;
+};
+t.MulSV = function(t, e, i) {
+i.x = e.x * t;
+i.y = e.y * t;
+return i;
+};
+t.MulVS = function(t, e, i) {
+i.x = t.x * e;
+i.y = t.y * e;
+return i;
+};
+t.AddVMulSV = function(t, e, i, n) {
+n.x = t.x + e * i.x;
+n.y = t.y + e * i.y;
+return n;
+};
+t.SubVMulSV = function(t, e, i, n) {
+n.x = t.x - e * i.x;
+n.y = t.y - e * i.y;
+return n;
+};
+t.AddVCrossSV = function(t, e, i, n) {
+var r = i.x;
+n.x = t.x - e * i.y;
+n.y = t.y + e * r;
+return n;
+};
+t.MidVV = function(t, e, i) {
+i.x = .5 * (t.x + e.x);
+i.y = .5 * (t.y + e.y);
+return i;
+};
+t.ExtVV = function(t, e, i) {
+i.x = .5 * (e.x - t.x);
+i.y = .5 * (e.y - t.y);
+return i;
+};
+t.IsEqualToV = function(t, e) {
+return t.x === e.x && t.y === e.y;
+};
+t.DistanceVV = function(t, e) {
+var i = t.x - e.x, n = t.y - e.y;
+return Math.sqrt(i * i + n * n);
+};
+t.DistanceSquaredVV = function(t, e) {
+var i = t.x - e.x, n = t.y - e.y;
+return i * i + n * n;
+};
+t.NegV = function(t, e) {
+e.x = -t.x;
+e.y = -t.y;
+return e;
+};
+t.ZERO = new t(0, 0);
+t.UNITX = new t(1, 0);
+t.UNITY = new t(0, 1);
+t.s_t0 = new t();
+t.s_t1 = new t();
+t.s_t2 = new t();
+t.s_t3 = new t();
+return t;
+})(), R = new P(0, 0), L = (function() {
+function t(t, e, i) {
+void 0 === t && (t = 0);
+void 0 === e && (e = 0);
+void 0 === i && (i = 0);
+this.x = t;
+this.y = e;
+this.z = i;
+}
+t.prototype.Clone = function() {
+return new t(this.x, this.y, this.z);
+};
+t.prototype.SetZero = function() {
+this.x = 0;
+this.y = 0;
+this.z = 0;
+return this;
+};
+t.prototype.SetXYZ = function(t, e, i) {
+this.x = t;
+this.y = e;
+this.z = i;
+return this;
+};
+t.prototype.Copy = function(t) {
+this.x = t.x;
+this.y = t.y;
+this.z = t.z;
+return this;
+};
+t.prototype.SelfNeg = function() {
+this.x = -this.x;
+this.y = -this.y;
+this.z = -this.z;
+return this;
+};
+t.prototype.SelfAdd = function(t) {
+this.x += t.x;
+this.y += t.y;
+this.z += t.z;
+return this;
+};
+t.prototype.SelfAddXYZ = function(t, e, i) {
+this.x += t;
+this.y += e;
+this.z += i;
+return this;
+};
+t.prototype.SelfSub = function(t) {
+this.x -= t.x;
+this.y -= t.y;
+this.z -= t.z;
+return this;
+};
+t.prototype.SelfSubXYZ = function(t, e, i) {
+this.x -= t;
+this.y -= e;
+this.z -= i;
+return this;
+};
+t.prototype.SelfMul = function(t) {
+this.x *= t;
+this.y *= t;
+this.z *= t;
+return this;
+};
+t.DotV3V3 = function(t, e) {
+return t.x * e.x + t.y * e.y + t.z * e.z;
+};
+t.CrossV3V3 = function(t, e, i) {
+var n = t.x, r = t.y, s = t.z, o = e.x, a = e.y, c = e.z;
+i.x = r * c - s * a;
+i.y = s * o - n * c;
+i.z = n * a - r * o;
+return i;
+};
+t.ZERO = new t(0, 0, 0);
+t.s_t0 = new t();
+return t;
+})(), F = (function() {
+function t() {
+this.ex = new P(1, 0);
+this.ey = new P(0, 1);
+}
+t.prototype.Clone = function() {
+return new t().Copy(this);
+};
+t.FromVV = function(e, i) {
+return new t().SetVV(e, i);
+};
+t.FromSSSS = function(e, i, n, r) {
+return new t().SetSSSS(e, i, n, r);
+};
+t.FromAngle = function(e) {
+return new t().SetAngle(e);
+};
+t.prototype.SetSSSS = function(t, e, i, n) {
+this.ex.Set(t, i);
+this.ey.Set(e, n);
+return this;
+};
+t.prototype.SetVV = function(t, e) {
+this.ex.Copy(t);
+this.ey.Copy(e);
+return this;
+};
+t.prototype.SetAngle = function(t) {
+var e = Math.cos(t), i = Math.sin(t);
+this.ex.Set(e, i);
+this.ey.Set(-i, e);
+return this;
+};
+t.prototype.Copy = function(t) {
+this.ex.Copy(t.ex);
+this.ey.Copy(t.ey);
+return this;
+};
+t.prototype.SetIdentity = function() {
+this.ex.Set(1, 0);
+this.ey.Set(0, 1);
+return this;
+};
+t.prototype.SetZero = function() {
+this.ex.SetZero();
+this.ey.SetZero();
+return this;
+};
+t.prototype.GetAngle = function() {
+return Math.atan2(this.ex.y, this.ex.x);
+};
+t.prototype.GetInverse = function(t) {
+var e = this.ex.x, i = this.ey.x, n = this.ex.y, r = this.ey.y, s = e * r - i * n;
+0 !== s && (s = 1 / s);
+t.ex.x = s * r;
+t.ey.x = -s * i;
+t.ex.y = -s * n;
+t.ey.y = s * e;
+return t;
+};
+t.prototype.Solve = function(t, e, i) {
+var n = this.ex.x, r = this.ey.x, s = this.ex.y, o = this.ey.y, a = n * o - r * s;
+0 !== a && (a = 1 / a);
+i.x = a * (o * t - r * e);
+i.y = a * (n * e - s * t);
+return i;
+};
+t.prototype.SelfAbs = function() {
+this.ex.SelfAbs();
+this.ey.SelfAbs();
+return this;
+};
+t.prototype.SelfInv = function() {
+this.GetInverse(this);
+return this;
+};
+t.prototype.SelfAddM = function(t) {
+this.ex.SelfAdd(t.ex);
+this.ey.SelfAdd(t.ey);
+return this;
+};
+t.prototype.SelfSubM = function(t) {
+this.ex.SelfSub(t.ex);
+this.ey.SelfSub(t.ey);
+return this;
+};
+t.AbsM = function(t, e) {
+var i = t.ex, n = t.ey;
+e.ex.x = y(i.x);
+e.ex.y = y(i.y);
+e.ey.x = y(n.x);
+e.ey.y = y(n.y);
+return e;
+};
+t.MulMV = function(t, e, i) {
+var n = t.ex, r = t.ey, s = e.x, o = e.y;
+i.x = n.x * s + r.x * o;
+i.y = n.y * s + r.y * o;
+return i;
+};
+t.MulTMV = function(t, e, i) {
+var n = t.ex, r = t.ey, s = e.x, o = e.y;
+i.x = n.x * s + n.y * o;
+i.y = r.x * s + r.y * o;
+return i;
+};
+t.AddMM = function(t, e, i) {
+var n = t.ex, r = t.ey, s = e.ex, o = e.ey;
+i.ex.x = n.x + s.x;
+i.ex.y = n.y + s.y;
+i.ey.x = r.x + o.x;
+i.ey.y = r.y + o.y;
+return i;
+};
+t.MulMM = function(t, e, i) {
+var n = t.ex.x, r = t.ex.y, s = t.ey.x, o = t.ey.y, a = e.ex.x, c = e.ex.y, l = e.ey.x, h = e.ey.y;
+i.ex.x = n * a + s * c;
+i.ex.y = r * a + o * c;
+i.ey.x = n * l + s * h;
+i.ey.y = r * l + o * h;
+return i;
+};
+t.MulTMM = function(t, e, i) {
+var n = t.ex.x, r = t.ex.y, s = t.ey.x, o = t.ey.y, a = e.ex.x, c = e.ex.y, l = e.ey.x, h = e.ey.y;
+i.ex.x = n * a + r * c;
+i.ex.y = s * a + o * c;
+i.ey.x = n * l + r * h;
+i.ey.y = s * l + o * h;
+return i;
+};
+t.IDENTITY = new t();
+return t;
+})(), O = (function() {
+function t() {
+this.ex = new L(1, 0, 0);
+this.ey = new L(0, 1, 0);
+this.ez = new L(0, 0, 1);
+}
+t.prototype.Clone = function() {
+return new t().Copy(this);
+};
+t.prototype.SetVVV = function(t, e, i) {
+this.ex.Copy(t);
+this.ey.Copy(e);
+this.ez.Copy(i);
+return this;
+};
+t.prototype.Copy = function(t) {
+this.ex.Copy(t.ex);
+this.ey.Copy(t.ey);
+this.ez.Copy(t.ez);
+return this;
+};
+t.prototype.SetIdentity = function() {
+this.ex.SetXYZ(1, 0, 0);
+this.ey.SetXYZ(0, 1, 0);
+this.ez.SetXYZ(0, 0, 1);
+return this;
+};
+t.prototype.SetZero = function() {
+this.ex.SetZero();
+this.ey.SetZero();
+this.ez.SetZero();
+return this;
+};
+t.prototype.SelfAddM = function(t) {
+this.ex.SelfAdd(t.ex);
+this.ey.SelfAdd(t.ey);
+this.ez.SelfAdd(t.ez);
+return this;
+};
+t.prototype.Solve33 = function(t, e, i, n) {
+var r = this.ex.x, s = this.ex.y, o = this.ex.z, a = this.ey.x, c = this.ey.y, l = this.ey.z, h = this.ez.x, u = this.ez.y, _ = this.ez.z, f = r * (c * _ - l * u) + s * (l * h - a * _) + o * (a * u - c * h);
+0 !== f && (f = 1 / f);
+n.x = f * (t * (c * _ - l * u) + e * (l * h - a * _) + i * (a * u - c * h));
+n.y = f * (r * (e * _ - i * u) + s * (i * h - t * _) + o * (t * u - e * h));
+n.z = f * (r * (c * i - l * e) + s * (l * t - a * i) + o * (a * e - c * t));
+return n;
+};
+t.prototype.Solve22 = function(t, e, i) {
+var n = this.ex.x, r = this.ey.x, s = this.ex.y, o = this.ey.y, a = n * o - r * s;
+0 !== a && (a = 1 / a);
+i.x = a * (o * t - r * e);
+i.y = a * (n * e - s * t);
+return i;
+};
+t.prototype.GetInverse22 = function(t) {
+var e = this.ex.x, i = this.ey.x, n = this.ex.y, r = this.ey.y, s = e * r - i * n;
+0 !== s && (s = 1 / s);
+t.ex.x = s * r;
+t.ey.x = -s * i;
+t.ex.z = 0;
+t.ex.y = -s * n;
+t.ey.y = s * e;
+t.ey.z = 0;
+t.ez.x = 0;
+t.ez.y = 0;
+t.ez.z = 0;
+};
+t.prototype.GetSymInverse33 = function(t) {
+var e = L.DotV3V3(this.ex, L.CrossV3V3(this.ey, this.ez, L.s_t0));
+0 !== e && (e = 1 / e);
+var i = this.ex.x, n = this.ey.x, r = this.ez.x, s = this.ey.y, o = this.ez.y, a = this.ez.z;
+t.ex.x = e * (s * a - o * o);
+t.ex.y = e * (r * o - n * a);
+t.ex.z = e * (n * o - r * s);
+t.ey.x = t.ex.y;
+t.ey.y = e * (i * a - r * r);
+t.ey.z = e * (r * n - i * o);
+t.ez.x = t.ex.z;
+t.ez.y = t.ey.z;
+t.ez.z = e * (i * s - n * n);
+};
+t.MulM33V3 = function(t, e, i) {
+var n = e.x, r = e.y, s = e.z;
+i.x = t.ex.x * n + t.ey.x * r + t.ez.x * s;
+i.y = t.ex.y * n + t.ey.y * r + t.ez.y * s;
+i.z = t.ex.z * n + t.ey.z * r + t.ez.z * s;
+return i;
+};
+t.MulM33XYZ = function(t, e, i, n, r) {
+r.x = t.ex.x * e + t.ey.x * i + t.ez.x * n;
+r.y = t.ex.y * e + t.ey.y * i + t.ez.y * n;
+r.z = t.ex.z * e + t.ey.z * i + t.ez.z * n;
+return r;
+};
+t.MulM33V2 = function(t, e, i) {
+var n = e.x, r = e.y;
+i.x = t.ex.x * n + t.ey.x * r;
+i.y = t.ex.y * n + t.ey.y * r;
+return i;
+};
+t.MulM33XY = function(t, e, i, n) {
+n.x = t.ex.x * e + t.ey.x * i;
+n.y = t.ex.y * e + t.ey.y * i;
+return n;
+};
+t.IDENTITY = new t();
+return t;
+})(), V = (function() {
+function t(t) {
+void 0 === t && (t = 0);
+this.s = 0;
+this.c = 1;
+if (t) {
+this.s = Math.sin(t);
+this.c = Math.cos(t);
+}
+}
+t.prototype.Clone = function() {
+return new t().Copy(this);
+};
+t.prototype.Copy = function(t) {
+this.s = t.s;
+this.c = t.c;
+return this;
+};
+t.prototype.SetAngle = function(t) {
+this.s = Math.sin(t);
+this.c = Math.cos(t);
+return this;
+};
+t.prototype.SetIdentity = function() {
+this.s = 0;
+this.c = 1;
+return this;
+};
+t.prototype.GetAngle = function() {
+return Math.atan2(this.s, this.c);
+};
+t.prototype.GetXAxis = function(t) {
+t.x = this.c;
+t.y = this.s;
+return t;
+};
+t.prototype.GetYAxis = function(t) {
+t.x = -this.s;
+t.y = this.c;
+return t;
+};
+t.MulRR = function(t, e, i) {
+var n = t.c, r = t.s, s = e.c, o = e.s;
+i.s = r * s + n * o;
+i.c = n * s - r * o;
+return i;
+};
+t.MulTRR = function(t, e, i) {
+var n = t.c, r = t.s, s = e.c, o = e.s;
+i.s = n * o - r * s;
+i.c = n * s + r * o;
+return i;
+};
+t.MulRV = function(t, e, i) {
+var n = t.c, r = t.s, s = e.x, o = e.y;
+i.x = n * s - r * o;
+i.y = r * s + n * o;
+return i;
+};
+t.MulTRV = function(t, e, i) {
+var n = t.c, r = t.s, s = e.x, o = e.y;
+i.x = n * s + r * o;
+i.y = -r * s + n * o;
+return i;
+};
+t.IDENTITY = new t();
+return t;
+})(), N = (function() {
+function t() {
+this.p = new P();
+this.q = new V();
+}
+t.prototype.Clone = function() {
+return new t().Copy(this);
+};
+t.prototype.Copy = function(t) {
+this.p.Copy(t.p);
+this.q.Copy(t.q);
+return this;
+};
+t.prototype.SetIdentity = function() {
+this.p.SetZero();
+this.q.SetIdentity();
+return this;
+};
+t.prototype.SetPositionRotation = function(t, e) {
+this.p.Copy(t);
+this.q.Copy(e);
+return this;
+};
+t.prototype.SetPositionAngle = function(t, e) {
+this.p.Copy(t);
+this.q.SetAngle(e);
+return this;
+};
+t.prototype.SetPosition = function(t) {
+this.p.Copy(t);
+return this;
+};
+t.prototype.SetPositionXY = function(t, e) {
+this.p.Set(t, e);
+return this;
+};
+t.prototype.SetRotation = function(t) {
+this.q.Copy(t);
+return this;
+};
+t.prototype.SetRotationAngle = function(t) {
+this.q.SetAngle(t);
+return this;
+};
+t.prototype.GetPosition = function() {
+return this.p;
+};
+t.prototype.GetRotation = function() {
+return this.q;
+};
+t.prototype.GetRotationAngle = function() {
+return this.q.GetAngle();
+};
+t.prototype.GetAngle = function() {
+return this.q.GetAngle();
+};
+t.MulXV = function(t, e, i) {
+var n = t.q.c, r = t.q.s, s = e.x, o = e.y;
+i.x = n * s - r * o + t.p.x;
+i.y = r * s + n * o + t.p.y;
+return i;
+};
+t.MulTXV = function(t, e, i) {
+var n = t.q.c, r = t.q.s, s = e.x - t.p.x, o = e.y - t.p.y;
+i.x = n * s + r * o;
+i.y = -r * s + n * o;
+return i;
+};
+t.MulXX = function(t, e, i) {
+V.MulRR(t.q, e.q, i.q);
+P.AddVV(V.MulRV(t.q, e.p, i.p), t.p, i.p);
+return i;
+};
+t.MulTXX = function(t, e, i) {
+V.MulTRR(t.q, e.q, i.q);
+V.MulTRV(t.q, P.SubVV(e.p, t.p, i.p), i.p);
+return i;
+};
+t.IDENTITY = new t();
+return t;
+})(), k = (function() {
+function t() {
+this.localCenter = new P();
+this.c0 = new P();
+this.c = new P();
+this.a0 = 0;
+this.a = 0;
+this.alpha0 = 0;
+}
+t.prototype.Clone = function() {
+return new t().Copy(this);
+};
+t.prototype.Copy = function(t) {
+this.localCenter.Copy(t.localCenter);
+this.c0.Copy(t.c0);
+this.c.Copy(t.c);
+this.a0 = t.a0;
+this.a = t.a;
+this.alpha0 = t.alpha0;
+return this;
+};
+t.prototype.GetTransform = function(t, e) {
+var i = 1 - e;
+t.p.x = i * this.c0.x + e * this.c.x;
+t.p.y = i * this.c0.y + e * this.c.y;
+var n = i * this.a0 + e * this.a;
+t.q.SetAngle(n);
+t.p.SelfSub(V.MulRV(t.q, this.localCenter, P.s_t0));
+return t;
+};
+t.prototype.Advance = function(t) {
+var e = (t - this.alpha0) / (1 - this.alpha0), i = 1 - e;
+this.c0.x = i * this.c0.x + e * this.c.x;
+this.c0.y = i * this.c0.y + e * this.c.y;
+this.a0 = i * this.a0 + e * this.a;
+this.alpha0 = t;
+};
+t.prototype.Normalize = function() {
+var t = 6.28318530718 * Math.floor(this.a0 / 6.28318530718);
+this.a0 -= t;
+this.a -= t;
+};
+return t;
+})(), z = (function() {
+function t(t, e, i, n) {
+void 0 === t && (t = .5);
+void 0 === e && (e = .5);
+void 0 === i && (i = .5);
+void 0 === n && (n = 1);
+this.r = t;
+this.g = e;
+this.b = i;
+this.a = n;
+}
+t.prototype.Clone = function() {
+return new t().Copy(this);
+};
+t.prototype.Copy = function(t) {
+this.r = t.r;
+this.g = t.g;
+this.b = t.b;
+this.a = t.a;
+return this;
+};
+t.prototype.IsEqual = function(t) {
+return this.r === t.r && this.g === t.g && this.b === t.b && this.a === t.a;
+};
+t.prototype.IsZero = function() {
+return 0 === this.r && 0 === this.g && 0 === this.b && 0 === this.a;
+};
+t.prototype.Set = function(t, e, i, n) {
+void 0 === n && (n = this.a);
+this.SetRGBA(t, e, i, n);
+};
+t.prototype.SetByteRGB = function(t, e, i) {
+this.r = t / 255;
+this.g = e / 255;
+this.b = i / 255;
+return this;
+};
+t.prototype.SetByteRGBA = function(t, e, i, n) {
+this.r = t / 255;
+this.g = e / 255;
+this.b = i / 255;
+this.a = n / 255;
+return this;
+};
+t.prototype.SetRGB = function(t, e, i) {
+this.r = t;
+this.g = e;
+this.b = i;
+return this;
+};
+t.prototype.SetRGBA = function(t, e, i, n) {
+this.r = t;
+this.g = e;
+this.b = i;
+this.a = n;
+return this;
+};
+t.prototype.SelfAdd = function(t) {
+this.r += t.r;
+this.g += t.g;
+this.b += t.b;
+this.a += t.a;
+return this;
+};
+t.prototype.Add = function(t, e) {
+e.r = this.r + t.r;
+e.g = this.g + t.g;
+e.b = this.b + t.b;
+e.a = this.a + t.a;
+return e;
+};
+t.prototype.SelfSub = function(t) {
+this.r -= t.r;
+this.g -= t.g;
+this.b -= t.b;
+this.a -= t.a;
+return this;
+};
+t.prototype.Sub = function(t, e) {
+e.r = this.r - t.r;
+e.g = this.g - t.g;
+e.b = this.b - t.b;
+e.a = this.a - t.a;
+return e;
+};
+t.prototype.SelfMul = function(t) {
+this.r *= t;
+this.g *= t;
+this.b *= t;
+this.a *= t;
+return this;
+};
+t.prototype.Mul = function(t, e) {
+e.r = this.r * t;
+e.g = this.g * t;
+e.b = this.b * t;
+e.a = this.a * t;
+return e;
+};
+t.prototype.Mix = function(e, i) {
+t.MixColors(this, e, i);
+};
+t.MixColors = function(t, e, i) {
+var n = i * (e.r - t.r), r = i * (e.g - t.g), s = i * (e.b - t.b), o = i * (e.a - t.a);
+t.r += n;
+t.g += r;
+t.b += s;
+t.a += o;
+e.r -= n;
+e.g -= r;
+e.b -= s;
+e.a -= o;
+};
+t.prototype.MakeStyleString = function(e) {
+void 0 === e && (e = this.a);
+return t.MakeStyleString(this.r, this.g, this.b, e);
+};
+t.MakeStyleString = function(t, e, i, n) {
+void 0 === n && (n = 1);
+t *= 255;
+e *= 255;
+i *= 255;
+return n < 1 ? "rgba(" + t + "," + e + "," + i + "," + n + ")" : "rgb(" + t + "," + e + "," + i + ")";
+};
+t.ZERO = new t(0, 0, 0, 0);
+t.RED = new t(1, 0, 0);
+t.GREEN = new t(0, 1, 0);
+t.BLUE = new t(0, 0, 1);
+return t;
+})();
+(function(t) {
+t[t.e_none = 0] = "e_none";
+t[t.e_shapeBit = 1] = "e_shapeBit";
+t[t.e_jointBit = 2] = "e_jointBit";
+t[t.e_aabbBit = 4] = "e_aabbBit";
+t[t.e_pairBit = 8] = "e_pairBit";
+t[t.e_centerOfMassBit = 16] = "e_centerOfMassBit";
+t[t.e_particleBit = 32] = "e_particleBit";
+t[t.e_controllerBit = 64] = "e_controllerBit";
+t[t.e_all = 63] = "e_all";
+})(t.b2DrawFlags || (t.b2DrawFlags = {}));
+var G = (function() {
+function t() {
+this.m_drawFlags = 0;
+}
+t.prototype.SetFlags = function(t) {
+this.m_drawFlags = t;
+};
+t.prototype.GetFlags = function() {
+return this.m_drawFlags;
+};
+t.prototype.AppendFlags = function(t) {
+this.m_drawFlags |= t;
+};
+t.prototype.ClearFlags = function(t) {
+this.m_drawFlags &= ~t;
+};
+return t;
+})(), U = (function() {
+function t() {
+this.m_start = Date.now();
+}
+t.prototype.Reset = function() {
+this.m_start = Date.now();
+return this;
+};
+t.prototype.GetMilliseconds = function() {
+return Date.now() - this.m_start;
+};
+return t;
+})(), j = (function() {
+function t() {
+this.m_count = 0;
+this.m_min_count = 0;
+this.m_max_count = 0;
+}
+t.prototype.GetCount = function() {
+return this.m_count;
+};
+t.prototype.GetMinCount = function() {
+return this.m_min_count;
+};
+t.prototype.GetMaxCount = function() {
+return this.m_max_count;
+};
+t.prototype.ResetCount = function() {
+var t = this.m_count;
+this.m_count = 0;
+return t;
+};
+t.prototype.ResetMinCount = function() {
+this.m_min_count = 0;
+};
+t.prototype.ResetMaxCount = function() {
+this.m_max_count = 0;
+};
+t.prototype.Increment = function() {
+this.m_count++;
+this.m_max_count < this.m_count && (this.m_max_count = this.m_count);
+};
+t.prototype.Decrement = function() {
+this.m_count--;
+this.m_min_count > this.m_count && (this.m_min_count = this.m_count);
+};
+return t;
+})(), W = (function() {
+function t(t) {
+this.m_stack = [];
+this.m_count = 0;
+this.m_stack = d(t, (function(t) {
+return null;
+}));
+this.m_count = 0;
+}
+t.prototype.Reset = function() {
+this.m_count = 0;
+return this;
+};
+t.prototype.Push = function(t) {
+this.m_stack[this.m_count] = t;
+this.m_count++;
+};
+t.prototype.Pop = function() {
+this.m_count--;
+var t = this.m_stack[this.m_count];
+this.m_stack[this.m_count] = null;
+if (null === t) throw new Error();
+return t;
+};
+t.prototype.GetCount = function() {
+return this.m_count;
+};
+return t;
+})(), H = (function() {
+return function() {};
+})(), q = (function() {
+return function() {};
+})(), X = (function() {
+function t() {
+this.m_buffer = P.MakeArray(2);
+this.m_vertices = this.m_buffer;
+this.m_count = 0;
+this.m_radius = 0;
+}
+t.prototype.Copy = function(t) {
+if (t.m_vertices === t.m_buffer) {
+this.m_vertices = this.m_buffer;
+this.m_buffer[0].Copy(t.m_buffer[0]);
+this.m_buffer[1].Copy(t.m_buffer[1]);
+} else this.m_vertices = t.m_vertices;
+this.m_count = t.m_count;
+this.m_radius = t.m_radius;
+return this;
+};
+t.prototype.Reset = function() {
+this.m_vertices = this.m_buffer;
+this.m_count = 0;
+this.m_radius = 0;
+return this;
+};
+t.prototype.SetShape = function(t, e) {
+t.SetupDistanceProxy(this, e);
+};
+t.prototype.SetVerticesRadius = function(t, e, i) {
+this.m_vertices = t;
+this.m_count = e;
+this.m_radius = i;
+};
+t.prototype.GetSupport = function(t) {
+for (var e = 0, i = P.DotVV(this.m_vertices[0], t), n = 1; n < this.m_count; ++n) {
+var r = P.DotVV(this.m_vertices[n], t);
+if (r > i) {
+e = n;
+i = r;
+}
+}
+return e;
+};
+t.prototype.GetSupportVertex = function(t) {
+for (var e = 0, i = P.DotVV(this.m_vertices[0], t), n = 1; n < this.m_count; ++n) {
+var r = P.DotVV(this.m_vertices[n], t);
+if (r > i) {
+e = n;
+i = r;
+}
+}
+return this.m_vertices[e];
+};
+t.prototype.GetVertexCount = function() {
+return this.m_count;
+};
+t.prototype.GetVertex = function(t) {
+return this.m_vertices[t];
+};
+return t;
+})(), Y = (function() {
+function t() {
+this.metric = 0;
+this.count = 0;
+this.indexA = [ 0, 0, 0 ];
+this.indexB = [ 0, 0, 0 ];
+}
+t.prototype.Reset = function() {
+this.metric = 0;
+this.count = 0;
+return this;
+};
+return t;
+})(), J = (function() {
+function t() {
+this.proxyA = new X();
+this.proxyB = new X();
+this.transformA = new N();
+this.transformB = new N();
+this.useRadii = !1;
+}
+t.prototype.Reset = function() {
+this.proxyA.Reset();
+this.proxyB.Reset();
+this.transformA.SetIdentity();
+this.transformB.SetIdentity();
+this.useRadii = !1;
+return this;
+};
+return t;
+})(), Z = (function() {
+function t() {
+this.pointA = new P();
+this.pointB = new P();
+this.distance = 0;
+this.iterations = 0;
+}
+t.prototype.Reset = function() {
+this.pointA.SetZero();
+this.pointB.SetZero();
+this.distance = 0;
+this.iterations = 0;
+return this;
+};
+return t;
+})(), K = (function() {
+return function() {
+this.proxyA = new X();
+this.proxyB = new X();
+this.transformA = new N();
+this.transformB = new N();
+this.translationB = new P();
+};
+})(), Q = (function() {
+return function() {
+this.point = new P();
+this.normal = new P();
+this.lambda = 0;
+this.iterations = 0;
+};
+})();
+t.b2_gjkCalls = 0;
+t.b2_gjkIters = 0;
+t.b2_gjkMaxIters = 0;
+var $ = (function() {
+function t() {
+this.wA = new P();
+this.wB = new P();
+this.w = new P();
+this.a = 0;
+this.indexA = 0;
+this.indexB = 0;
+}
+t.prototype.Copy = function(t) {
+this.wA.Copy(t.wA);
+this.wB.Copy(t.wB);
+this.w.Copy(t.w);
+this.a = t.a;
+this.indexA = t.indexA;
+this.indexB = t.indexB;
+return this;
+};
+return t;
+})(), tt = (function() {
+function t() {
+this.m_v1 = new $();
+this.m_v2 = new $();
+this.m_v3 = new $();
+this.m_vertices = [];
+this.m_count = 0;
+this.m_vertices[0] = this.m_v1;
+this.m_vertices[1] = this.m_v2;
+this.m_vertices[2] = this.m_v3;
+}
+t.prototype.ReadCache = function(t, e, i, r, s) {
+this.m_count = t.count;
+for (var o = this.m_vertices, a = 0; a < this.m_count; ++a) {
+(_ = o[a]).indexA = t.indexA[a];
+_.indexB = t.indexB[a];
+var c = e.GetVertex(_.indexA), l = r.GetVertex(_.indexB);
+N.MulXV(i, c, _.wA);
+N.MulXV(s, l, _.wB);
+P.SubVV(_.wB, _.wA, _.w);
+_.a = 0;
+}
+if (this.m_count > 1) {
+var h = t.metric, u = this.GetMetric();
+(u < .5 * h || 2 * h < u || u < n) && (this.m_count = 0);
+}
+if (0 === this.m_count) {
+var _;
+(_ = o[0]).indexA = 0;
+_.indexB = 0;
+c = e.GetVertex(0), l = r.GetVertex(0);
+N.MulXV(i, c, _.wA);
+N.MulXV(s, l, _.wB);
+P.SubVV(_.wB, _.wA, _.w);
+_.a = 1;
+this.m_count = 1;
+}
+};
+t.prototype.WriteCache = function(t) {
+t.metric = this.GetMetric();
+t.count = this.m_count;
+for (var e = this.m_vertices, i = 0; i < this.m_count; ++i) {
+t.indexA[i] = e[i].indexA;
+t.indexB[i] = e[i].indexB;
+}
+};
+t.prototype.GetSearchDirection = function(t) {
+switch (this.m_count) {
+case 1:
+return P.NegV(this.m_v1.w, t);
+
+case 2:
+var e = P.SubVV(this.m_v2.w, this.m_v1.w, t);
+return P.CrossVV(e, P.NegV(this.m_v1.w, P.s_t0)) > 0 ? P.CrossOneV(e, t) : P.CrossVOne(e, t);
+
+default:
+return t.SetZero();
+}
+};
+t.prototype.GetClosestPoint = function(t) {
+switch (this.m_count) {
+case 0:
+return t.SetZero();
+
+case 1:
+return t.Copy(this.m_v1.w);
+
+case 2:
+return t.Set(this.m_v1.a * this.m_v1.w.x + this.m_v2.a * this.m_v2.w.x, this.m_v1.a * this.m_v1.w.y + this.m_v2.a * this.m_v2.w.y);
+
+case 3:
+default:
+return t.SetZero();
+}
+};
+t.prototype.GetWitnessPoints = function(t, e) {
+switch (this.m_count) {
+case 0:
+break;
+
+case 1:
+t.Copy(this.m_v1.wA);
+e.Copy(this.m_v1.wB);
+break;
+
+case 2:
+t.x = this.m_v1.a * this.m_v1.wA.x + this.m_v2.a * this.m_v2.wA.x;
+t.y = this.m_v1.a * this.m_v1.wA.y + this.m_v2.a * this.m_v2.wA.y;
+e.x = this.m_v1.a * this.m_v1.wB.x + this.m_v2.a * this.m_v2.wB.x;
+e.y = this.m_v1.a * this.m_v1.wB.y + this.m_v2.a * this.m_v2.wB.y;
+break;
+
+case 3:
+e.x = t.x = this.m_v1.a * this.m_v1.wA.x + this.m_v2.a * this.m_v2.wA.x + this.m_v3.a * this.m_v3.wA.x;
+e.y = t.y = this.m_v1.a * this.m_v1.wA.y + this.m_v2.a * this.m_v2.wA.y + this.m_v3.a * this.m_v3.wA.y;
+}
+};
+t.prototype.GetMetric = function() {
+switch (this.m_count) {
+case 0:
+case 1:
+return 0;
+
+case 2:
+return P.DistanceVV(this.m_v1.w, this.m_v2.w);
+
+case 3:
+return P.CrossVV(P.SubVV(this.m_v2.w, this.m_v1.w, P.s_t0), P.SubVV(this.m_v3.w, this.m_v1.w, P.s_t1));
+
+default:
+return 0;
+}
+};
+t.prototype.Solve2 = function() {
+var e = this.m_v1.w, i = this.m_v2.w, n = P.SubVV(i, e, t.s_e12), r = -P.DotVV(e, n);
+if (r <= 0) {
+this.m_v1.a = 1;
+this.m_count = 1;
+} else {
+var s = P.DotVV(i, n);
+if (s <= 0) {
+this.m_v2.a = 1;
+this.m_count = 1;
+this.m_v1.Copy(this.m_v2);
+} else {
+var o = 1 / (s + r);
+this.m_v1.a = s * o;
+this.m_v2.a = r * o;
+this.m_count = 2;
+}
+}
+};
+t.prototype.Solve3 = function() {
+var e = this.m_v1.w, i = this.m_v2.w, n = this.m_v3.w, r = P.SubVV(i, e, t.s_e12), s = P.DotVV(e, r), o = P.DotVV(i, r), a = -s, c = P.SubVV(n, e, t.s_e13), l = P.DotVV(e, c), h = P.DotVV(n, c), u = -l, _ = P.SubVV(n, i, t.s_e23), f = P.DotVV(i, _), d = P.DotVV(n, _), m = -f, p = P.CrossVV(r, c), v = p * P.CrossVV(i, n), y = p * P.CrossVV(n, e), g = p * P.CrossVV(e, i);
+if (a <= 0 && u <= 0) {
+this.m_v1.a = 1;
+this.m_count = 1;
+} else if (o > 0 && a > 0 && g <= 0) {
+var x = 1 / (o + a);
+this.m_v1.a = o * x;
+this.m_v2.a = a * x;
+this.m_count = 2;
+} else if (h > 0 && u > 0 && y <= 0) {
+var C = 1 / (h + u);
+this.m_v1.a = h * C;
+this.m_v3.a = u * C;
+this.m_count = 2;
+this.m_v2.Copy(this.m_v3);
+} else if (o <= 0 && m <= 0) {
+this.m_v2.a = 1;
+this.m_count = 1;
+this.m_v1.Copy(this.m_v2);
+} else if (h <= 0 && d <= 0) {
+this.m_v3.a = 1;
+this.m_count = 1;
+this.m_v1.Copy(this.m_v3);
+} else if (d > 0 && m > 0 && v <= 0) {
+var b = 1 / (d + m);
+this.m_v2.a = d * b;
+this.m_v3.a = m * b;
+this.m_count = 2;
+this.m_v1.Copy(this.m_v3);
+} else {
+var A = 1 / (v + y + g);
+this.m_v1.a = v * A;
+this.m_v2.a = y * A;
+this.m_v3.a = g * A;
+this.m_count = 3;
+}
+};
+t.s_e12 = new P();
+t.s_e13 = new P();
+t.s_e23 = new P();
+return t;
+})(), et = new tt(), it = [ 0, 0, 0 ], nt = [ 0, 0, 0 ], rt = new P(), st = new P(), ot = new P(), at = new P(), ct = new P();
+function lt(e, i, s) {
+++t.b2_gjkCalls;
+var o = s.proxyA, a = s.proxyB, c = s.transformA, l = s.transformB, h = et;
+h.ReadCache(i, o, c, a, l);
+for (var u = h.m_vertices, _ = it, f = nt, d = 0, m = 0; m < 20; ) {
+d = h.m_count;
+for (var p = 0; p < d; ++p) {
+_[p] = u[p].indexA;
+f[p] = u[p].indexB;
+}
+switch (h.m_count) {
+case 1:
+break;
+
+case 2:
+h.Solve2();
+break;
+
+case 3:
+h.Solve3();
+}
+if (3 === h.m_count) break;
+var v = h.GetSearchDirection(st);
+if (v.LengthSquared() < r) break;
+var y = u[h.m_count];
+y.indexA = o.GetSupport(V.MulTRV(c.q, P.NegV(v, P.s_t0), at));
+N.MulXV(c, o.GetVertex(y.indexA), y.wA);
+y.indexB = a.GetSupport(V.MulTRV(l.q, v, ct));
+N.MulXV(l, a.GetVertex(y.indexB), y.wB);
+P.SubVV(y.wB, y.wA, y.w);
+++m;
+++t.b2_gjkIters;
+var g = !1;
+for (p = 0; p < d; ++p) if (y.indexA === _[p] && y.indexB === f[p]) {
+g = !0;
+break;
+}
+if (g) break;
+++h.m_count;
+}
+t.b2_gjkMaxIters = x(t.b2_gjkMaxIters, m);
+h.GetWitnessPoints(e.pointA, e.pointB);
+e.distance = P.DistanceVV(e.pointA, e.pointB);
+e.iterations = m;
+h.WriteCache(i);
+if (s.useRadii) {
+var C = o.m_radius, b = a.m_radius;
+if (e.distance > C + b && e.distance > n) {
+e.distance -= C + b;
+var A = P.SubVV(e.pointB, e.pointA, ot);
+A.Normalize();
+e.pointA.SelfMulAdd(C, A);
+e.pointB.SelfMulSub(b, A);
+} else {
+var S = P.MidVV(e.pointA, e.pointB, rt);
+e.pointA.Copy(S);
+e.pointB.Copy(S);
+e.distance = 0;
+}
+}
+}
+var ht = new P(), ut = new tt(), _t = new P(), ft = new P(), dt = new P(), mt = new P(), pt = new P(), vt = new P();
+(function(t) {
+t[t.e_vertex = 0] = "e_vertex";
+t[t.e_face = 1] = "e_face";
+})(t.b2ContactFeatureType || (t.b2ContactFeatureType = {}));
+var yt = (function() {
+function t() {
+this._key = 0;
+this._key_invalid = !1;
+this._indexA = 0;
+this._indexB = 0;
+this._typeA = 0;
+this._typeB = 0;
+}
+Object.defineProperty(t.prototype, "key", {
+get: function() {
+if (this._key_invalid) {
+this._key_invalid = !1;
+this._key = this._indexA | this._indexB << 8 | this._typeA << 16 | this._typeB << 24;
+}
+return this._key;
+},
+set: function(t) {
+this._key = t;
+this._key_invalid = !1;
+this._indexA = 255 & this._key;
+this._indexB = this._key >> 8 & 255;
+this._typeA = this._key >> 16 & 255;
+this._typeB = this._key >> 24 & 255;
+},
+enumerable: !0,
+configurable: !0
+});
+Object.defineProperty(t.prototype, "indexA", {
+get: function() {
+return this._indexA;
+},
+set: function(t) {
+this._indexA = t;
+this._key_invalid = !0;
+},
+enumerable: !0,
+configurable: !0
+});
+Object.defineProperty(t.prototype, "indexB", {
+get: function() {
+return this._indexB;
+},
+set: function(t) {
+this._indexB = t;
+this._key_invalid = !0;
+},
+enumerable: !0,
+configurable: !0
+});
+Object.defineProperty(t.prototype, "typeA", {
+get: function() {
+return this._typeA;
+},
+set: function(t) {
+this._typeA = t;
+this._key_invalid = !0;
+},
+enumerable: !0,
+configurable: !0
+});
+Object.defineProperty(t.prototype, "typeB", {
+get: function() {
+return this._typeB;
+},
+set: function(t) {
+this._typeB = t;
+this._key_invalid = !0;
+},
+enumerable: !0,
+configurable: !0
+});
+return t;
+})(), gt = (function() {
+function t() {
+this.cf = new yt();
+}
+t.prototype.Copy = function(t) {
+this.key = t.key;
+return this;
+};
+t.prototype.Clone = function() {
+return new t().Copy(this);
+};
+Object.defineProperty(t.prototype, "key", {
+get: function() {
+return this.cf.key;
+},
+set: function(t) {
+this.cf.key = t;
+},
+enumerable: !0,
+configurable: !0
+});
+return t;
+})(), xt = (function() {
+function t() {
+this.localPoint = new P();
+this.normalImpulse = 0;
+this.tangentImpulse = 0;
+this.id = new gt();
+}
+t.MakeArray = function(e) {
+return d(e, (function(e) {
+return new t();
+}));
+};
+t.prototype.Reset = function() {
+this.localPoint.SetZero();
+this.normalImpulse = 0;
+this.tangentImpulse = 0;
+this.id.key = 0;
+};
+t.prototype.Copy = function(t) {
+this.localPoint.Copy(t.localPoint);
+this.normalImpulse = t.normalImpulse;
+this.tangentImpulse = t.tangentImpulse;
+this.id.Copy(t.id);
+return this;
+};
+return t;
+})();
+(function(t) {
+t[t.e_unknown = -1] = "e_unknown";
+t[t.e_circles = 0] = "e_circles";
+t[t.e_faceA = 1] = "e_faceA";
+t[t.e_faceB = 2] = "e_faceB";
+})(t.b2ManifoldType || (t.b2ManifoldType = {}));
+var Ct = (function() {
+function e() {
+this.points = xt.MakeArray(o);
+this.localNormal = new P();
+this.localPoint = new P();
+this.type = t.b2ManifoldType.e_unknown;
+this.pointCount = 0;
+}
+e.prototype.Reset = function() {
+for (var e = 0; e < o; ++e) this.points[e].Reset();
+this.localNormal.SetZero();
+this.localPoint.SetZero();
+this.type = t.b2ManifoldType.e_unknown;
+this.pointCount = 0;
+};
+e.prototype.Copy = function(t) {
+this.pointCount = t.pointCount;
+for (var e = 0; e < o; ++e) this.points[e].Copy(t.points[e]);
+this.localNormal.Copy(t.localNormal);
+this.localPoint.Copy(t.localPoint);
+this.type = t.type;
+return this;
+};
+e.prototype.Clone = function() {
+return new e().Copy(this);
+};
+return e;
+})(), bt = (function() {
+function e() {
+this.normal = new P();
+this.points = P.MakeArray(o);
+this.separations = m(o);
+}
+e.prototype.Initialize = function(i, n, s, o, a) {
+if (0 !== i.pointCount) switch (i.type) {
+case t.b2ManifoldType.e_circles:
+this.normal.Set(1, 0);
+var c = N.MulXV(n, i.localPoint, e.Initialize_s_pointA), l = N.MulXV(o, i.points[0].localPoint, e.Initialize_s_pointB);
+P.DistanceSquaredVV(c, l) > r && P.SubVV(l, c, this.normal).SelfNormalize();
+var h = P.AddVMulSV(c, s, this.normal, e.Initialize_s_cA), u = P.SubVMulSV(l, a, this.normal, e.Initialize_s_cB);
+P.MidVV(h, u, this.points[0]);
+this.separations[0] = P.DotVV(P.SubVV(u, h, P.s_t0), this.normal);
+break;
+
+case t.b2ManifoldType.e_faceA:
+V.MulRV(n.q, i.localNormal, this.normal);
+for (var _ = N.MulXV(n, i.localPoint, e.Initialize_s_planePoint), f = 0; f < i.pointCount; ++f) {
+var d = N.MulXV(o, i.points[f].localPoint, e.Initialize_s_clipPoint), m = s - P.DotVV(P.SubVV(d, _, P.s_t0), this.normal);
+h = P.AddVMulSV(d, m, this.normal, e.Initialize_s_cA), u = P.SubVMulSV(d, a, this.normal, e.Initialize_s_cB);
+P.MidVV(h, u, this.points[f]);
+this.separations[f] = P.DotVV(P.SubVV(u, h, P.s_t0), this.normal);
+}
+break;
+
+case t.b2ManifoldType.e_faceB:
+V.MulRV(o.q, i.localNormal, this.normal);
+for (_ = N.MulXV(o, i.localPoint, e.Initialize_s_planePoint), f = 0; f < i.pointCount; ++f) {
+d = N.MulXV(n, i.points[f].localPoint, e.Initialize_s_clipPoint), m = a - P.DotVV(P.SubVV(d, _, P.s_t0), this.normal),
+u = P.AddVMulSV(d, m, this.normal, e.Initialize_s_cB), h = P.SubVMulSV(d, s, this.normal, e.Initialize_s_cA);
+P.MidVV(h, u, this.points[f]);
+this.separations[f] = P.DotVV(P.SubVV(h, u, P.s_t0), this.normal);
+}
+this.normal.SelfNeg();
+}
+};
+e.Initialize_s_pointA = new P();
+e.Initialize_s_pointB = new P();
+e.Initialize_s_cA = new P();
+e.Initialize_s_cB = new P();
+e.Initialize_s_planePoint = new P();
+e.Initialize_s_clipPoint = new P();
+return e;
+})();
+(function(t) {
+t[t.b2_nullState = 0] = "b2_nullState";
+t[t.b2_addState = 1] = "b2_addState";
+t[t.b2_persistState = 2] = "b2_persistState";
+t[t.b2_removeState = 3] = "b2_removeState";
+})(t.b2PointState || (t.b2PointState = {}));
+var At = (function() {
+function t() {
+this.v = new P();
+this.id = new gt();
+}
+t.MakeArray = function(e) {
+return d(e, (function(e) {
+return new t();
+}));
+};
+t.prototype.Copy = function(t) {
+this.v.Copy(t.v);
+this.id.Copy(t.id);
+return this;
+};
+return t;
+})(), St = (function() {
+function t() {
+this.p1 = new P();
+this.p2 = new P();
+this.maxFraction = 1;
+}
+t.prototype.Copy = function(t) {
+this.p1.Copy(t.p1);
+this.p2.Copy(t.p2);
+this.maxFraction = t.maxFraction;
+return this;
+};
+return t;
+})(), wt = (function() {
+function t() {
+this.normal = new P();
+this.fraction = 0;
+}
+t.prototype.Copy = function(t) {
+this.normal.Copy(t.normal);
+this.fraction = t.fraction;
+return this;
+};
+return t;
+})(), Tt = (function() {
+function t() {
+this.lowerBound = new P();
+this.upperBound = new P();
+this.m_cache_center = new P();
+this.m_cache_extent = new P();
+}
+t.prototype.Copy = function(t) {
+this.lowerBound.Copy(t.lowerBound);
+this.upperBound.Copy(t.upperBound);
+return this;
+};
+t.prototype.IsValid = function() {
+var t = this.upperBound.x - this.lowerBound.x, e = this.upperBound.y - this.lowerBound.y, i = t >= 0 && e >= 0;
+return i = i && this.lowerBound.IsValid() && this.upperBound.IsValid();
+};
+t.prototype.GetCenter = function() {
+return P.MidVV(this.lowerBound, this.upperBound, this.m_cache_center);
+};
+t.prototype.GetExtents = function() {
+return P.ExtVV(this.lowerBound, this.upperBound, this.m_cache_extent);
+};
+t.prototype.GetPerimeter = function() {
+return 2 * (this.upperBound.x - this.lowerBound.x + (this.upperBound.y - this.lowerBound.y));
+};
+t.prototype.Combine1 = function(t) {
+this.lowerBound.x = g(this.lowerBound.x, t.lowerBound.x);
+this.lowerBound.y = g(this.lowerBound.y, t.lowerBound.y);
+this.upperBound.x = x(this.upperBound.x, t.upperBound.x);
+this.upperBound.y = x(this.upperBound.y, t.upperBound.y);
+return this;
+};
+t.prototype.Combine2 = function(t, e) {
+this.lowerBound.x = g(t.lowerBound.x, e.lowerBound.x);
+this.lowerBound.y = g(t.lowerBound.y, e.lowerBound.y);
+this.upperBound.x = x(t.upperBound.x, e.upperBound.x);
+this.upperBound.y = x(t.upperBound.y, e.upperBound.y);
+return this;
+};
+t.Combine = function(t, e, i) {
+i.Combine2(t, e);
+return i;
+};
+t.prototype.Contains = function(t) {
+var e = !0;
+return e = (e = (e = (e = e && this.lowerBound.x <= t.lowerBound.x) && this.lowerBound.y <= t.lowerBound.y) && t.upperBound.x <= this.upperBound.x) && t.upperBound.y <= this.upperBound.y;
+};
+t.prototype.RayCast = function(t, e) {
+var r = -i, s = i, o = e.p1.x, a = e.p1.y, c = e.p2.x - e.p1.x, l = e.p2.y - e.p1.y, h = y(c), u = y(l), _ = t.normal;
+if (h < n) {
+if (o < this.lowerBound.x || this.upperBound.x < o) return !1;
+} else {
+var f = 1 / c, d = -1;
+if ((p = (this.lowerBound.x - o) * f) > (v = (this.upperBound.x - o) * f)) {
+var m = p;
+p = v;
+v = m;
+d = 1;
+}
+if (p > r) {
+_.x = d;
+_.y = 0;
+r = p;
+}
+if (r > (s = g(s, v))) return !1;
+}
+if (u < n) {
+if (a < this.lowerBound.y || this.upperBound.y < a) return !1;
+} else {
+var p, v;
+f = 1 / l, d = -1;
+if ((p = (this.lowerBound.y - a) * f) > (v = (this.upperBound.y - a) * f)) {
+m = p;
+p = v;
+v = m;
+d = 1;
+}
+if (p > r) {
+_.x = 0;
+_.y = d;
+r = p;
+}
+if (r > (s = g(s, v))) return !1;
+}
+if (r < 0 || e.maxFraction < r) return !1;
+t.fraction = r;
+return !0;
+};
+t.prototype.TestContain = function(t) {
+return !(t.x < this.lowerBound.x || this.upperBound.x < t.x) && !(t.y < this.lowerBound.y || this.upperBound.y < t.y);
+};
+t.prototype.TestOverlap = function(t) {
+var e = t.lowerBound.x - this.upperBound.x, i = t.lowerBound.y - this.upperBound.y, n = this.lowerBound.x - t.upperBound.x, r = this.lowerBound.y - t.upperBound.y;
+return !(e > 0 || i > 0) && !(n > 0 || r > 0);
+};
+return t;
+})();
+function Et(t, e) {
+var i = e.lowerBound.x - t.upperBound.x, n = e.lowerBound.y - t.upperBound.y, r = t.lowerBound.x - e.upperBound.x, s = t.lowerBound.y - e.upperBound.y;
+return !(i > 0 || n > 0) && !(r > 0 || s > 0);
+}
+function Mt(e, i, n, r, s) {
+var o = 0, a = i[0], c = i[1], l = P.DotVV(n, a.v) - r, h = P.DotVV(n, c.v) - r;
+l <= 0 && e[o++].Copy(a);
+h <= 0 && e[o++].Copy(c);
+if (l * h < 0) {
+var u = l / (l - h), _ = e[o].v;
+_.x = a.v.x + u * (c.v.x - a.v.x);
+_.y = a.v.y + u * (c.v.y - a.v.y);
+var f = e[o].id;
+f.cf.indexA = s;
+f.cf.indexB = a.id.cf.indexB;
+f.cf.typeA = t.b2ContactFeatureType.e_vertex;
+f.cf.typeB = t.b2ContactFeatureType.e_face;
+++o;
+}
+return o;
+}
+var Bt = new J(), Dt = new Y(), It = new Z();
+function Pt(t, e, i, r, s, o) {
+var a = Bt.Reset();
+a.proxyA.SetShape(t, e);
+a.proxyB.SetShape(i, r);
+a.transformA.Copy(s);
+a.transformB.Copy(o);
+a.useRadii = !0;
+var c = Dt.Reset();
+c.count = 0;
+var l = It.Reset();
+lt(l, c, a);
+return l.distance < 10 * n;
+}
+function Rt(t) {
+if (null === t) throw new Error();
+return t;
+}
+var Lt = (function() {
+function t(t) {
+void 0 === t && (t = 0);
+this.m_id = 0;
+this.aabb = new Tt();
+this.parent = null;
+this.child1 = null;
+this.child2 = null;
+this.height = 0;
+this.m_id = t;
+}
+t.prototype.IsLeaf = function() {
+return null === this.child1;
+};
+return t;
+})(), Ft = (function() {
+function t() {
+this.m_root = null;
+this.m_freeList = null;
+this.m_path = 0;
+this.m_insertionCount = 0;
+this.m_stack = new W(256);
+}
+t.prototype.Query = function(t, e) {
+if (null !== this.m_root) {
+var i = this.m_stack.Reset();
+i.Push(this.m_root);
+for (;i.GetCount() > 0; ) {
+var n = i.Pop();
+if (n.aabb.TestOverlap(t)) if (n.IsLeaf()) {
+if (!e(n)) return;
+} else {
+i.Push(Rt(n.child1));
+i.Push(Rt(n.child2));
+}
+}
+}
+};
+t.prototype.QueryPoint = function(t, e) {
+if (null !== this.m_root) {
+var i = this.m_stack.Reset();
+i.Push(this.m_root);
+for (;i.GetCount() > 0; ) {
+var n = i.Pop();
+if (n.aabb.TestContain(t)) if (n.IsLeaf()) {
+if (!e(n)) return;
+} else {
+i.Push(Rt(n.child1));
+i.Push(Rt(n.child2));
+}
+}
+}
+};
+t.prototype.RayCast = function(e, i) {
+if (null !== this.m_root) {
+var n = e.p1, r = e.p2, s = P.SubVV(r, n, t.s_r);
+s.Normalize();
+var o = P.CrossOneV(s, t.s_v), a = P.AbsV(o, t.s_abs_v), c = e.maxFraction, l = t.s_segmentAABB, h = n.x + c * (r.x - n.x), u = n.y + c * (r.y - n.y);
+l.lowerBound.x = g(n.x, h);
+l.lowerBound.y = g(n.y, u);
+l.upperBound.x = x(n.x, h);
+l.upperBound.y = x(n.y, u);
+var _ = this.m_stack.Reset();
+_.Push(this.m_root);
+for (;_.GetCount() > 0; ) {
+var f = _.Pop();
+if (Et(f.aabb, l)) {
+var d = f.aabb.GetCenter(), m = f.aabb.GetExtents();
+if (!(y(P.DotVV(o, P.SubVV(n, d, P.s_t0))) - P.DotVV(a, m) > 0)) if (f.IsLeaf()) {
+var p = t.s_subInput;
+p.p1.Copy(e.p1);
+p.p2.Copy(e.p2);
+p.maxFraction = c;
+var v = i(p, f);
+if (0 === v) return;
+if (v > 0) {
+c = v;
+h = n.x + c * (r.x - n.x);
+u = n.y + c * (r.y - n.y);
+l.lowerBound.x = g(n.x, h);
+l.lowerBound.y = g(n.y, u);
+l.upperBound.x = x(n.x, h);
+l.upperBound.y = x(n.y, u);
+}
+} else {
+_.Push(Rt(f.child1));
+_.Push(Rt(f.child2));
+}
+}
+}
+}
+};
+t.prototype.AllocateNode = function() {
+if (this.m_freeList) {
+var e = this.m_freeList;
+this.m_freeList = e.parent;
+e.parent = null;
+e.child1 = null;
+e.child2 = null;
+e.height = 0;
+delete e.userData;
+return e;
+}
+return new Lt(t.s_node_id++);
+};
+t.prototype.FreeNode = function(t) {
+t.parent = this.m_freeList;
+t.child1 = null;
+t.child2 = null;
+t.height = -1;
+delete t.userData;
+this.m_freeList = t;
+};
+t.prototype.CreateProxy = function(t, e) {
+var i = this.AllocateNode();
+i.aabb.lowerBound.x = t.lowerBound.x - .1;
+i.aabb.lowerBound.y = t.lowerBound.y - .1;
+i.aabb.upperBound.x = t.upperBound.x + .1;
+i.aabb.upperBound.y = t.upperBound.y + .1;
+i.userData = e;
+i.height = 0;
+this.InsertLeaf(i);
+return i;
+};
+t.prototype.DestroyProxy = function(t) {
+this.RemoveLeaf(t);
+this.FreeNode(t);
+};
+t.prototype.MoveProxy = function(t, e, i) {
+if (t.aabb.Contains(e)) return !1;
+this.RemoveLeaf(t);
+var n = .1 + 2 * (i.x > 0 ? i.x : -i.x), r = .1 + 2 * (i.y > 0 ? i.y : -i.y);
+t.aabb.lowerBound.x = e.lowerBound.x - n;
+t.aabb.lowerBound.y = e.lowerBound.y - r;
+t.aabb.upperBound.x = e.upperBound.x + n;
+t.aabb.upperBound.y = e.upperBound.y + r;
+this.InsertLeaf(t);
+return !0;
+};
+t.prototype.InsertLeaf = function(e) {
+++this.m_insertionCount;
+if (null !== this.m_root) {
+for (var i = e.aabb, n = this.m_root; !n.IsLeaf(); ) {
+var r = Rt(n.child1), s = Rt(n.child2), o = n.aabb.GetPerimeter(), a = t.s_combinedAABB;
+a.Combine2(n.aabb, i);
+var c = a.GetPerimeter(), l = 2 * c, h = 2 * (c - o), u = void 0, _ = t.s_aabb, f = void 0;
+if (r.IsLeaf()) {
+_.Combine2(i, r.aabb);
+u = _.GetPerimeter() + h;
+} else {
+_.Combine2(i, r.aabb);
+f = r.aabb.GetPerimeter();
+u = _.GetPerimeter() - f + h;
+}
+var d = void 0;
+if (s.IsLeaf()) {
+_.Combine2(i, s.aabb);
+d = _.GetPerimeter() + h;
+} else {
+_.Combine2(i, s.aabb);
+f = s.aabb.GetPerimeter();
+d = _.GetPerimeter() - f + h;
+}
+if (l < u && l < d) break;
+n = u < d ? r : s;
+}
+var m = n, p = m.parent, v = this.AllocateNode();
+v.parent = p;
+delete v.userData;
+v.aabb.Combine2(i, m.aabb);
+v.height = m.height + 1;
+if (p) {
+p.child1 === m ? p.child1 = v : p.child2 = v;
+v.child1 = m;
+v.child2 = e;
+m.parent = v;
+e.parent = v;
+} else {
+v.child1 = m;
+v.child2 = e;
+m.parent = v;
+e.parent = v;
+this.m_root = v;
+}
+for (var y = e.parent; null !== y; ) {
+r = Rt((y = this.Balance(y)).child1), s = Rt(y.child2);
+y.height = 1 + x(r.height, s.height);
+y.aabb.Combine2(r.aabb, s.aabb);
+y = y.parent;
+}
+} else {
+this.m_root = e;
+this.m_root.parent = null;
+}
+};
+t.prototype.RemoveLeaf = function(t) {
+if (t !== this.m_root) {
+var e, i = Rt(t.parent), n = i && i.parent;
+e = i.child1 === t ? Rt(i.child2) : Rt(i.child1);
+if (n) {
+n.child1 === i ? n.child1 = e : n.child2 = e;
+e.parent = n;
+this.FreeNode(i);
+for (var r = n; r; ) {
+var s = Rt((r = this.Balance(r)).child1), o = Rt(r.child2);
+r.aabb.Combine2(s.aabb, o.aabb);
+r.height = 1 + x(s.height, o.height);
+r = r.parent;
+}
+} else {
+this.m_root = e;
+e.parent = null;
+this.FreeNode(i);
+}
+} else this.m_root = null;
+};
+t.prototype.Balance = function(t) {
+if (t.IsLeaf() || t.height < 2) return t;
+var e = Rt(t.child1), i = Rt(t.child2), n = i.height - e.height;
+if (n > 1) {
+var r = Rt(i.child1), s = Rt(i.child2);
+i.child1 = t;
+i.parent = t.parent;
+t.parent = i;
+null !== i.parent ? i.parent.child1 === t ? i.parent.child1 = i : i.parent.child2 = i : this.m_root = i;
+if (r.height > s.height) {
+i.child2 = r;
+t.child2 = s;
+s.parent = t;
+t.aabb.Combine2(e.aabb, s.aabb);
+i.aabb.Combine2(t.aabb, r.aabb);
+t.height = 1 + x(e.height, s.height);
+i.height = 1 + x(t.height, r.height);
+} else {
+i.child2 = s;
+t.child2 = r;
+r.parent = t;
+t.aabb.Combine2(e.aabb, r.aabb);
+i.aabb.Combine2(t.aabb, s.aabb);
+t.height = 1 + x(e.height, r.height);
+i.height = 1 + x(t.height, s.height);
+}
+return i;
+}
+if (n < -1) {
+var o = Rt(e.child1), a = Rt(e.child2);
+e.child1 = t;
+e.parent = t.parent;
+t.parent = e;
+null !== e.parent ? e.parent.child1 === t ? e.parent.child1 = e : e.parent.child2 = e : this.m_root = e;
+if (o.height > a.height) {
+e.child2 = o;
+t.child1 = a;
+a.parent = t;
+t.aabb.Combine2(i.aabb, a.aabb);
+e.aabb.Combine2(t.aabb, o.aabb);
+t.height = 1 + x(i.height, a.height);
+e.height = 1 + x(t.height, o.height);
+} else {
+e.child2 = a;
+t.child1 = o;
+o.parent = t;
+t.aabb.Combine2(i.aabb, o.aabb);
+e.aabb.Combine2(t.aabb, a.aabb);
+t.height = 1 + x(i.height, o.height);
+e.height = 1 + x(t.height, a.height);
+}
+return e;
+}
+return t;
+};
+t.prototype.GetHeight = function() {
+return null === this.m_root ? 0 : this.m_root.height;
+};
+t.GetAreaNode = function(e) {
+if (null === e) return 0;
+if (e.IsLeaf()) return 0;
+var i = e.aabb.GetPerimeter();
+i += t.GetAreaNode(e.child1);
+return i += t.GetAreaNode(e.child2);
+};
+t.prototype.GetAreaRatio = function() {
+if (null === this.m_root) return 0;
+var e = this.m_root.aabb.GetPerimeter();
+return t.GetAreaNode(this.m_root) / e;
+};
+t.prototype.ComputeHeightNode = function(t) {
+if (!t || t.IsLeaf()) return 0;
+var e = this.ComputeHeightNode(t.child1), i = this.ComputeHeightNode(t.child2);
+return 1 + x(e, i);
+};
+t.prototype.ComputeHeight = function() {
+return this.ComputeHeightNode(this.m_root);
+};
+t.prototype.ValidateStructure = function(t) {
+if (null !== t) {
+this.m_root;
+var e = t;
+if (!e.IsLeaf()) {
+var i = Rt(e.child1), n = Rt(e.child2);
+this.ValidateStructure(i);
+this.ValidateStructure(n);
+}
+}
+};
+t.prototype.ValidateMetrics = function(e) {
+if (null !== e) {
+var i = e;
+if (!i.IsLeaf()) {
+var n = Rt(i.child1), r = Rt(i.child2);
+t.s_aabb.Combine2(n.aabb, r.aabb);
+this.ValidateMetrics(n);
+this.ValidateMetrics(r);
+}
+}
+};
+t.prototype.Validate = function() {};
+t.GetMaxBalanceNode = function(t, e) {
+if (null === t) return e;
+if (t.height <= 1) return e;
+var i = Rt(t.child1), n = Rt(t.child2), r = y(n.height - i.height);
+return x(e, r);
+};
+t.prototype.GetMaxBalance = function() {
+return t.GetMaxBalanceNode(this.m_root, 0);
+};
+t.prototype.RebuildBottomUp = function() {
+this.Validate();
+};
+t.ShiftOriginNode = function(e, i) {
+if (null !== e && !(e.height <= 1)) {
+var n = e.child1, r = e.child2;
+t.ShiftOriginNode(n, i);
+t.ShiftOriginNode(r, i);
+e.aabb.lowerBound.SelfSub(i);
+e.aabb.upperBound.SelfSub(i);
+}
+};
+t.prototype.ShiftOrigin = function(e) {
+t.ShiftOriginNode(this.m_root, e);
+};
+t.s_r = new P();
+t.s_v = new P();
+t.s_abs_v = new P();
+t.s_segmentAABB = new Tt();
+t.s_subInput = new St();
+t.s_combinedAABB = new Tt();
+t.s_aabb = new Tt();
+t.s_node_id = 0;
+return t;
+})(), Ot = (function() {
+return function(t, e) {
+this.proxyA = t;
+this.proxyB = e;
+};
+})(), Vt = (function() {
+function t() {
+this.m_tree = new Ft();
+this.m_proxyCount = 0;
+this.m_moveCount = 0;
+this.m_moveBuffer = [];
+this.m_pairCount = 0;
+this.m_pairBuffer = [];
+}
+t.prototype.CreateProxy = function(t, e) {
+var i = this.m_tree.CreateProxy(t, e);
+++this.m_proxyCount;
+this.BufferMove(i);
+return i;
+};
+t.prototype.DestroyProxy = function(t) {
+this.UnBufferMove(t);
+--this.m_proxyCount;
+this.m_tree.DestroyProxy(t);
+};
+t.prototype.MoveProxy = function(t, e, i) {
+this.m_tree.MoveProxy(t, e, i) && this.BufferMove(t);
+};
+t.prototype.TouchProxy = function(t) {
+this.BufferMove(t);
+};
+t.prototype.GetProxyCount = function() {
+return this.m_proxyCount;
+};
+t.prototype.UpdatePairs = function(t) {
+var e = this;
+this.m_pairCount = 0;
+for (var i = function(t) {
+var i = n.m_moveBuffer[t];
+if (null === i) return "continue";
+var r = i.aabb;
+n.m_tree.Query(r, (function(t) {
+if (t.m_id === i.m_id) return !0;
+var n, r;
+if (t.m_id < i.m_id) {
+n = t;
+r = i;
+} else {
+n = i;
+r = t;
+}
+if (e.m_pairCount === e.m_pairBuffer.length) e.m_pairBuffer[e.m_pairCount] = new Ot(n, r); else {
+var s = e.m_pairBuffer[e.m_pairCount];
+s.proxyA = n;
+s.proxyB = r;
+}
+++e.m_pairCount;
+return !0;
+}));
+}, n = this, r = 0; r < this.m_moveCount; ++r) i(r);
+this.m_moveCount = 0;
+this.m_pairBuffer.length = this.m_pairCount;
+this.m_pairBuffer.sort(Nt);
+for (var s = 0; s < this.m_pairCount; ) {
+var o = this.m_pairBuffer[s], a = o.proxyA.userData, c = o.proxyB.userData;
+a && c && t(a, c);
+++s;
+for (;s < this.m_pairCount; ) {
+var l = this.m_pairBuffer[s];
+if (l.proxyA.m_id !== o.proxyA.m_id || l.proxyB.m_id !== o.proxyB.m_id) break;
+++s;
+}
+}
+};
+t.prototype.Query = function(t, e) {
+this.m_tree.Query(t, e);
+};
+t.prototype.QueryPoint = function(t, e) {
+this.m_tree.QueryPoint(t, e);
+};
+t.prototype.RayCast = function(t, e) {
+this.m_tree.RayCast(t, e);
+};
+t.prototype.GetTreeHeight = function() {
+return this.m_tree.GetHeight();
+};
+t.prototype.GetTreeBalance = function() {
+return this.m_tree.GetMaxBalance();
+};
+t.prototype.GetTreeQuality = function() {
+return this.m_tree.GetAreaRatio();
+};
+t.prototype.ShiftOrigin = function(t) {
+this.m_tree.ShiftOrigin(t);
+};
+t.prototype.BufferMove = function(t) {
+this.m_moveBuffer[this.m_moveCount] = t;
+++this.m_moveCount;
+};
+t.prototype.UnBufferMove = function(t) {
+var e = this.m_moveBuffer.indexOf(t);
+this.m_moveBuffer[e] = null;
+};
+return t;
+})();
+function Nt(t, e) {
+return t.proxyA.m_id === e.proxyA.m_id ? t.proxyB.m_id - e.proxyB.m_id : t.proxyA.m_id - e.proxyA.m_id;
+}
+t.b2_toiTime = 0;
+t.b2_toiMaxTime = 0;
+t.b2_toiCalls = 0;
+t.b2_toiIters = 0;
+t.b2_toiMaxIters = 0;
+t.b2_toiRootIters = 0;
+t.b2_toiMaxRootIters = 0;
+var kt = new N(), zt = new N(), Gt = new P(), Ut = new P(), jt = new P(), Wt = new P(), Ht = new P(), qt = (function() {
+return function() {
+this.proxyA = new X();
+this.proxyB = new X();
+this.sweepA = new k();
+this.sweepB = new k();
+this.tMax = 0;
+};
+})();
+(function(t) {
+t[t.e_unknown = 0] = "e_unknown";
+t[t.e_failed = 1] = "e_failed";
+t[t.e_overlapped = 2] = "e_overlapped";
+t[t.e_touching = 3] = "e_touching";
+t[t.e_separated = 4] = "e_separated";
+})(t.b2TOIOutputState || (t.b2TOIOutputState = {}));
+var Xt = (function() {
+return function() {
+this.state = t.b2TOIOutputState.e_unknown;
+this.t = 0;
+};
+})();
+(function(t) {
+t[t.e_unknown = -1] = "e_unknown";
+t[t.e_points = 0] = "e_points";
+t[t.e_faceA = 1] = "e_faceA";
+t[t.e_faceB = 2] = "e_faceB";
+})(t.b2SeparationFunctionType || (t.b2SeparationFunctionType = {}));
+var Yt = (function() {
+function e() {
+this.m_sweepA = new k();
+this.m_sweepB = new k();
+this.m_type = t.b2SeparationFunctionType.e_unknown;
+this.m_localPoint = new P();
+this.m_axis = new P();
+}
+e.prototype.Initialize = function(e, i, n, r, s, o) {
+this.m_proxyA = i;
+this.m_proxyB = r;
+var a = e.count;
+this.m_sweepA.Copy(n);
+this.m_sweepB.Copy(s);
+var c = kt, l = zt;
+this.m_sweepA.GetTransform(c, o);
+this.m_sweepB.GetTransform(l, o);
+if (1 === a) {
+this.m_type = t.b2SeparationFunctionType.e_points;
+var h = this.m_proxyA.GetVertex(e.indexA[0]), u = this.m_proxyB.GetVertex(e.indexB[0]), _ = N.MulXV(c, h, Gt), f = N.MulXV(l, u, Ut);
+P.SubVV(f, _, this.m_axis);
+var d = this.m_axis.Normalize();
+this.m_localPoint.SetZero();
+return d;
+}
+if (e.indexA[0] === e.indexA[1]) {
+this.m_type = t.b2SeparationFunctionType.e_faceB;
+var m = this.m_proxyB.GetVertex(e.indexB[0]), p = this.m_proxyB.GetVertex(e.indexB[1]);
+P.CrossVOne(P.SubVV(p, m, P.s_t0), this.m_axis).SelfNormalize();
+var v = V.MulRV(l.q, this.m_axis, jt);
+P.MidVV(m, p, this.m_localPoint);
+f = N.MulXV(l, this.m_localPoint, Ut), h = this.m_proxyA.GetVertex(e.indexA[0]),
+_ = N.MulXV(c, h, Gt);
+if ((d = P.DotVV(P.SubVV(_, f, P.s_t0), v)) < 0) {
+this.m_axis.SelfNeg();
+d = -d;
+}
+return d;
+}
+this.m_type = t.b2SeparationFunctionType.e_faceA;
+var y = this.m_proxyA.GetVertex(e.indexA[0]), g = this.m_proxyA.GetVertex(e.indexA[1]);
+P.CrossVOne(P.SubVV(g, y, P.s_t0), this.m_axis).SelfNormalize();
+v = V.MulRV(c.q, this.m_axis, jt);
+P.MidVV(y, g, this.m_localPoint);
+_ = N.MulXV(c, this.m_localPoint, Gt), u = this.m_proxyB.GetVertex(e.indexB[0]),
+f = N.MulXV(l, u, Ut);
+if ((d = P.DotVV(P.SubVV(f, _, P.s_t0), v)) < 0) {
+this.m_axis.SelfNeg();
+d = -d;
+}
+return d;
+};
+e.prototype.FindMinSeparation = function(e, i, n) {
+var r = kt, s = zt;
+this.m_sweepA.GetTransform(r, n);
+this.m_sweepB.GetTransform(s, n);
+switch (this.m_type) {
+case t.b2SeparationFunctionType.e_points:
+var o = V.MulTRV(r.q, this.m_axis, Wt), a = V.MulTRV(s.q, P.NegV(this.m_axis, P.s_t0), Ht);
+e[0] = this.m_proxyA.GetSupport(o);
+i[0] = this.m_proxyB.GetSupport(a);
+var c = this.m_proxyA.GetVertex(e[0]), l = this.m_proxyB.GetVertex(i[0]), h = N.MulXV(r, c, Gt), u = N.MulXV(s, l, Ut);
+return P.DotVV(P.SubVV(u, h, P.s_t0), this.m_axis);
+
+case t.b2SeparationFunctionType.e_faceA:
+var _ = V.MulRV(r.q, this.m_axis, jt);
+h = N.MulXV(r, this.m_localPoint, Gt), a = V.MulTRV(s.q, P.NegV(_, P.s_t0), Ht);
+e[0] = -1;
+i[0] = this.m_proxyB.GetSupport(a);
+l = this.m_proxyB.GetVertex(i[0]), u = N.MulXV(s, l, Ut);
+return P.DotVV(P.SubVV(u, h, P.s_t0), _);
+
+case t.b2SeparationFunctionType.e_faceB:
+_ = V.MulRV(s.q, this.m_axis, jt), u = N.MulXV(s, this.m_localPoint, Ut), o = V.MulTRV(r.q, P.NegV(_, P.s_t0), Wt);
+i[0] = -1;
+e[0] = this.m_proxyA.GetSupport(o);
+c = this.m_proxyA.GetVertex(e[0]), h = N.MulXV(r, c, Gt);
+return P.DotVV(P.SubVV(h, u, P.s_t0), _);
+
+default:
+e[0] = -1;
+i[0] = -1;
+return 0;
+}
+};
+e.prototype.Evaluate = function(e, i, n) {
+var r = kt, s = zt;
+this.m_sweepA.GetTransform(r, n);
+this.m_sweepB.GetTransform(s, n);
+switch (this.m_type) {
+case t.b2SeparationFunctionType.e_points:
+var o = this.m_proxyA.GetVertex(e), a = this.m_proxyB.GetVertex(i), c = N.MulXV(r, o, Gt), l = N.MulXV(s, a, Ut);
+return P.DotVV(P.SubVV(l, c, P.s_t0), this.m_axis);
+
+case t.b2SeparationFunctionType.e_faceA:
+var h = V.MulRV(r.q, this.m_axis, jt);
+c = N.MulXV(r, this.m_localPoint, Gt), a = this.m_proxyB.GetVertex(i), l = N.MulXV(s, a, Ut);
+return P.DotVV(P.SubVV(l, c, P.s_t0), h);
+
+case t.b2SeparationFunctionType.e_faceB:
+h = V.MulRV(s.q, this.m_axis, jt), l = N.MulXV(s, this.m_localPoint, Ut), o = this.m_proxyA.GetVertex(e),
+c = N.MulXV(r, o, Gt);
+return P.DotVV(P.SubVV(c, l, P.s_t0), h);
+
+default:
+return 0;
+}
+};
+return e;
+})(), Jt = new U(), Zt = new Y(), Kt = new J(), Qt = new Z(), $t = new Yt(), te = [ 0 ], ee = [ 0 ], ie = new k(), ne = new k();
+function re(e, i) {
+var n = Jt.Reset();
+++t.b2_toiCalls;
+e.state = t.b2TOIOutputState.e_unknown;
+e.t = i.tMax;
+var r = i.proxyA, s = i.proxyB, o = ie.Copy(i.sweepA), l = ne.Copy(i.sweepB);
+o.Normalize();
+l.Normalize();
+var h = i.tMax, u = r.m_radius + s.m_radius, _ = x(c, u - 3 * c), f = .25 * c, d = 0, m = 0, p = Zt;
+p.count = 0;
+var v = Kt;
+v.proxyA.Copy(i.proxyA);
+v.proxyB.Copy(i.proxyB);
+v.useRadii = !1;
+for (;;) {
+var g = kt, C = zt;
+o.GetTransform(g, d);
+l.GetTransform(C, d);
+v.transformA.Copy(g);
+v.transformB.Copy(C);
+var b = Qt;
+lt(b, p, v);
+if (b.distance <= 0) {
+e.state = t.b2TOIOutputState.e_overlapped;
+e.t = 0;
+break;
+}
+if (b.distance < _ + f) {
+e.state = t.b2TOIOutputState.e_touching;
+e.t = d;
+break;
+}
+var A = $t;
+A.Initialize(p, r, o, s, l, d);
+for (var S = !1, w = h, T = 0; ;) {
+var E = te, M = ee, B = A.FindMinSeparation(E, M, w);
+if (B > _ + f) {
+e.state = t.b2TOIOutputState.e_separated;
+e.t = h;
+S = !0;
+break;
+}
+if (B > _ - f) {
+d = w;
+break;
+}
+var D = A.Evaluate(E[0], M[0], d);
+if (D < _ - f) {
+e.state = t.b2TOIOutputState.e_failed;
+e.t = d;
+S = !0;
+break;
+}
+if (D <= _ + f) {
+e.state = t.b2TOIOutputState.e_touching;
+e.t = d;
+S = !0;
+break;
+}
+for (var I = 0, P = d, R = w; ;) {
+var L = 0;
+L = 1 & I ? P + (_ - D) * (R - P) / (B - D) : .5 * (P + R);
+++I;
+++t.b2_toiRootIters;
+var F = A.Evaluate(E[0], M[0], L);
+if (y(F - _) < f) {
+w = L;
+break;
+}
+if (F > _) {
+P = L;
+D = F;
+} else {
+R = L;
+B = F;
+}
+if (50 === I) break;
+}
+t.b2_toiMaxRootIters = x(t.b2_toiMaxRootIters, I);
+if (++T === a) break;
+}
+++m;
+++t.b2_toiIters;
+if (S) break;
+if (20 === m) {
+e.state = t.b2TOIOutputState.e_failed;
+e.t = d;
+break;
+}
+}
+t.b2_toiMaxIters = x(t.b2_toiMaxIters, m);
+var O = n.GetMilliseconds();
+t.b2_toiMaxTime = x(t.b2_toiMaxTime, O);
+t.b2_toiTime += O;
+}
+var se = new P(), oe = new P();
+function ae(e, i, n, r, s) {
+e.pointCount = 0;
+var o = N.MulXV(n, i.m_p, se), a = N.MulXV(s, r.m_p, oe), c = P.DistanceSquaredVV(o, a), l = i.m_radius + r.m_radius;
+if (!(c > l * l)) {
+e.type = t.b2ManifoldType.e_circles;
+e.localPoint.Copy(i.m_p);
+e.localNormal.SetZero();
+e.pointCount = 1;
+e.points[0].localPoint.Copy(r.m_p);
+e.points[0].id.key = 0;
+}
+}
+var ce = new P(), le = new P(), he = new P();
+function ue(e, r, s, o, a) {
+e.pointCount = 0;
+for (var c = N.MulXV(a, o.m_p, ce), l = N.MulTXV(s, c, le), h = 0, u = -i, _ = r.m_radius + o.m_radius, f = r.m_count, d = r.m_vertices, m = r.m_normals, p = 0; p < f; ++p) {
+var v = P.DotVV(m[p], P.SubVV(l, d[p], P.s_t0));
+if (v > _) return;
+if (v > u) {
+u = v;
+h = p;
+}
+}
+var y = h, g = (y + 1) % f, x = d[y], C = d[g];
+if (u < n) {
+e.pointCount = 1;
+e.type = t.b2ManifoldType.e_faceA;
+e.localNormal.Copy(m[h]);
+P.MidVV(x, C, e.localPoint);
+e.points[0].localPoint.Copy(o.m_p);
+e.points[0].id.key = 0;
+} else {
+var b = P.DotVV(P.SubVV(l, x, P.s_t0), P.SubVV(C, x, P.s_t1)), A = P.DotVV(P.SubVV(l, C, P.s_t0), P.SubVV(x, C, P.s_t1));
+if (b <= 0) {
+if (P.DistanceSquaredVV(l, x) > _ * _) return;
+e.pointCount = 1;
+e.type = t.b2ManifoldType.e_faceA;
+P.SubVV(l, x, e.localNormal).SelfNormalize();
+e.localPoint.Copy(x);
+e.points[0].localPoint.Copy(o.m_p);
+e.points[0].id.key = 0;
+} else if (A <= 0) {
+if (P.DistanceSquaredVV(l, C) > _ * _) return;
+e.pointCount = 1;
+e.type = t.b2ManifoldType.e_faceA;
+P.SubVV(l, C, e.localNormal).SelfNormalize();
+e.localPoint.Copy(C);
+e.points[0].localPoint.Copy(o.m_p);
+e.points[0].id.key = 0;
+} else {
+var S = P.MidVV(x, C, he);
+if (P.DotVV(P.SubVV(l, S, P.s_t1), m[y]) > _) return;
+e.pointCount = 1;
+e.type = t.b2ManifoldType.e_faceA;
+e.localNormal.Copy(m[y]).SelfNormalize();
+e.localPoint.Copy(S);
+e.points[0].localPoint.Copy(o.m_p);
+e.points[0].id.key = 0;
+}
+}
+}
+var _e = new P(), fe = new P(), de = new P(), me = new P();
+function pe(t, e, n, r, s) {
+for (var o = t.m_vertices, a = t.m_normals, c = r.m_count, l = r.m_vertices, h = V.MulRV(e.q, a[n], _e), u = V.MulTRV(s.q, h, fe), _ = 0, f = i, d = 0; d < c; ++d) {
+var m = P.DotVV(l[d], u);
+if (m < f) {
+f = m;
+_ = d;
+}
+}
+var p = N.MulXV(e, o[n], de), v = N.MulXV(s, l[_], me);
+return P.DotVV(P.SubVV(v, p, P.s_t0), h);
+}
+var ve = new P(), ye = new P();
+function ge(t, e, n, r, s) {
+for (var o = e.m_count, a = e.m_normals, c = P.SubVV(N.MulXV(s, r.m_centroid, P.s_t0), N.MulXV(n, e.m_centroid, P.s_t1), ve), l = V.MulTRV(n.q, c, ye), h = 0, u = -i, _ = 0; _ < o; ++_) {
+var f = P.DotVV(a[_], l);
+if (f > u) {
+u = f;
+h = _;
+}
+}
+var d = pe(e, n, h, r, s), m = (h + o - 1) % o, p = pe(e, n, m, r, s), v = (h + 1) % o, y = pe(e, n, v, r, s), g = 0, x = 0, C = 0;
+if (p > d && p > y) {
+C = -1;
+g = m;
+x = p;
+} else {
+if (!(y > d)) {
+t[0] = h;
+return d;
+}
+C = 1;
+g = v;
+x = y;
+}
+for (;(d = pe(e, n, h = -1 === C ? (g + o - 1) % o : (g + 1) % o, r, s)) > x; ) {
+g = h;
+x = d;
+}
+t[0] = g;
+return x;
+}
+var xe = new P();
+function Ce(e, n, r, s, o, a) {
+for (var c = n.m_normals, l = o.m_count, h = o.m_vertices, u = o.m_normals, _ = V.MulTRV(a.q, V.MulRV(r.q, c[s], P.s_t0), xe), f = 0, d = i, m = 0; m < l; ++m) {
+var p = P.DotVV(_, u[m]);
+if (p < d) {
+d = p;
+f = m;
+}
+}
+var v = f, y = (v + 1) % l, g = e[0];
+N.MulXV(a, h[v], g.v);
+var x = g.id.cf;
+x.indexA = s;
+x.indexB = v;
+x.typeA = t.b2ContactFeatureType.e_face;
+x.typeB = t.b2ContactFeatureType.e_vertex;
+var C = e[1];
+N.MulXV(a, h[y], C.v);
+var b = C.id.cf;
+b.indexA = s;
+b.indexB = y;
+b.typeA = t.b2ContactFeatureType.e_face;
+b.typeB = t.b2ContactFeatureType.e_vertex;
+}
+var be = At.MakeArray(2), Ae = At.MakeArray(2), Se = At.MakeArray(2), we = [ 0 ], Te = [ 0 ], Ee = new P(), Me = new P(), Be = new P(), De = new P(), Ie = new P(), Pe = new P(), Re = new P(), Le = new P();
+function Fe(e, i, n, r, s) {
+e.pointCount = 0;
+var a = i.m_radius + r.m_radius, c = we;
+c[0] = 0;
+var l = ge(c, i, n, r, s);
+if (!(l > a)) {
+var h = Te;
+h[0] = 0;
+var u = ge(h, r, s, i, n);
+if (!(u > a)) {
+var _, f, d, m, p = 0, v = 0;
+if (u > .98 * l + .001) {
+_ = r;
+f = i;
+d = s;
+m = n;
+p = h[0];
+e.type = t.b2ManifoldType.e_faceB;
+v = 1;
+} else {
+_ = i;
+f = r;
+d = n;
+m = s;
+p = c[0];
+e.type = t.b2ManifoldType.e_faceA;
+v = 0;
+}
+var y = be;
+Ce(y, _, d, p, f, m);
+var g = _.m_count, x = _.m_vertices, C = p, b = (p + 1) % g, A = x[C], S = x[b], w = P.SubVV(S, A, Ee);
+w.Normalize();
+var T = P.CrossVOne(w, Me), E = P.MidVV(A, S, Be), M = V.MulRV(d.q, w, Ie), B = P.CrossVOne(M, De), D = N.MulXV(d, A, Re), I = N.MulXV(d, S, Le), R = P.DotVV(B, D), L = -P.DotVV(M, D) + a, F = P.DotVV(M, I) + a, O = Ae, k = Se;
+if (!(Mt(O, y, P.NegV(M, Pe), L, C) < 2 || Mt(k, O, M, F, b) < 2)) {
+e.localNormal.Copy(T);
+e.localPoint.Copy(E);
+for (var z = 0, G = 0; G < o; ++G) {
+var U = k[G];
+if (P.DotVV(B, U.v) - R <= a) {
+var j = e.points[z];
+N.MulTXV(m, U.v, j.localPoint);
+j.id.Copy(U.id);
+if (v) {
+var W = j.id.cf;
+j.id.cf.indexA = W.indexB;
+j.id.cf.indexB = W.indexA;
+j.id.cf.typeA = W.typeB;
+j.id.cf.typeB = W.typeA;
+}
+++z;
+}
+}
+e.pointCount = z;
+}
+}
+}
+}
+var Oe = new P(), Ve = new P(), Ne = new P(), ke = new P(), ze = new P(), Ge = new P(), Ue = new P(), je = new gt();
+function We(e, i, n, r, s) {
+e.pointCount = 0;
+var o = N.MulTXV(n, N.MulXV(s, r.m_p, P.s_t0), Oe), a = i.m_vertex1, c = i.m_vertex2, l = P.SubVV(c, a, Ve), h = P.DotVV(l, P.SubVV(c, o, P.s_t0)), u = P.DotVV(l, P.SubVV(o, a, P.s_t0)), _ = i.m_radius + r.m_radius, f = je;
+f.cf.indexB = 0;
+f.cf.typeB = t.b2ContactFeatureType.e_vertex;
+if (u <= 0) {
+var d = a, m = P.SubVV(o, d, Ne);
+if (P.DotVV(m, m) > _ * _) return;
+if (i.m_hasVertex0) {
+var p = i.m_vertex0, v = a, y = P.SubVV(v, p, ke);
+if (P.DotVV(y, P.SubVV(v, o, P.s_t0)) > 0) return;
+}
+f.cf.indexA = 0;
+f.cf.typeA = t.b2ContactFeatureType.e_vertex;
+e.pointCount = 1;
+e.type = t.b2ManifoldType.e_circles;
+e.localNormal.SetZero();
+e.localPoint.Copy(d);
+e.points[0].id.Copy(f);
+e.points[0].localPoint.Copy(r.m_p);
+} else if (h <= 0) {
+var g = c, x = P.SubVV(o, g, Ne);
+if (P.DotVV(x, x) > _ * _) return;
+if (i.m_hasVertex3) {
+var C = i.m_vertex3, b = c, A = P.SubVV(C, b, ze);
+if (P.DotVV(A, P.SubVV(o, b, P.s_t0)) > 0) return;
+}
+f.cf.indexA = 1;
+f.cf.typeA = t.b2ContactFeatureType.e_vertex;
+e.pointCount = 1;
+e.type = t.b2ManifoldType.e_circles;
+e.localNormal.SetZero();
+e.localPoint.Copy(g);
+e.points[0].id.Copy(f);
+e.points[0].localPoint.Copy(r.m_p);
+} else {
+var S = P.DotVV(l, l), w = Ge;
+w.x = 1 / S * (h * a.x + u * c.x);
+w.y = 1 / S * (h * a.y + u * c.y);
+var T = P.SubVV(o, w, Ne);
+if (!(P.DotVV(T, T) > _ * _)) {
+var E = Ue.Set(-l.y, l.x);
+P.DotVV(E, P.SubVV(o, a, P.s_t0)) < 0 && E.Set(-E.x, -E.y);
+E.Normalize();
+f.cf.indexA = 0;
+f.cf.typeA = t.b2ContactFeatureType.e_face;
+e.pointCount = 1;
+e.type = t.b2ManifoldType.e_faceA;
+e.localNormal.Copy(E);
+e.localPoint.Copy(a);
+e.points[0].id.Copy(f);
+e.points[0].localPoint.Copy(r.m_p);
+}
+}
+}
+var He = (function() {
+return function() {
+this.type = 0;
+this.index = 0;
+this.separation = 0;
+};
+})(), qe = (function() {
+return function() {
+this.vertices = P.MakeArray(a);
+this.normals = P.MakeArray(a);
+this.count = 0;
+};
+})(), Xe = (function() {
+return function() {
+this.i1 = 0;
+this.i2 = 0;
+this.v1 = new P();
+this.v2 = new P();
+this.normal = new P();
+this.sideNormal1 = new P();
+this.sideOffset1 = 0;
+this.sideNormal2 = new P();
+this.sideOffset2 = 0;
+};
+})(), Ye = new (function() {
+function e() {
+this.m_polygonB = new qe();
+this.m_xf = new N();
+this.m_centroidB = new P();
+this.m_v0 = new P();
+this.m_v1 = new P();
+this.m_v2 = new P();
+this.m_v3 = new P();
+this.m_normal0 = new P();
+this.m_normal1 = new P();
+this.m_normal2 = new P();
+this.m_normal = new P();
+this.m_type1 = 0;
+this.m_type2 = 0;
+this.m_lowerLimit = new P();
+this.m_upperLimit = new P();
+this.m_radius = 0;
+this.m_front = !1;
+}
+e.prototype.Collide = function(i, n, r, s, a) {
+N.MulTXX(r, a, this.m_xf);
+N.MulXV(this.m_xf, s.m_centroid, this.m_centroidB);
+this.m_v0.Copy(n.m_vertex0);
+this.m_v1.Copy(n.m_vertex1);
+this.m_v2.Copy(n.m_vertex2);
+this.m_v3.Copy(n.m_vertex3);
+var c = n.m_hasVertex0, l = n.m_hasVertex3, h = P.SubVV(this.m_v2, this.m_v1, e.s_edge1);
+h.Normalize();
+this.m_normal1.Set(h.y, -h.x);
+var u = P.DotVV(this.m_normal1, P.SubVV(this.m_centroidB, this.m_v1, P.s_t0)), _ = 0, f = 0, d = !1, m = !1;
+if (c) {
+var p = P.SubVV(this.m_v1, this.m_v0, e.s_edge0);
+p.Normalize();
+this.m_normal0.Set(p.y, -p.x);
+d = P.CrossVV(p, h) >= 0;
+_ = P.DotVV(this.m_normal0, P.SubVV(this.m_centroidB, this.m_v0, P.s_t0));
+}
+if (l) {
+var v = P.SubVV(this.m_v3, this.m_v2, e.s_edge2);
+v.Normalize();
+this.m_normal2.Set(v.y, -v.x);
+m = P.CrossVV(h, v) > 0;
+f = P.DotVV(this.m_normal2, P.SubVV(this.m_centroidB, this.m_v2, P.s_t0));
+}
+if (c && l) if (d && m) {
+this.m_front = _ >= 0 || u >= 0 || f >= 0;
+if (this.m_front) {
+this.m_normal.Copy(this.m_normal1);
+this.m_lowerLimit.Copy(this.m_normal0);
+this.m_upperLimit.Copy(this.m_normal2);
+} else {
+this.m_normal.Copy(this.m_normal1).SelfNeg();
+this.m_lowerLimit.Copy(this.m_normal1).SelfNeg();
+this.m_upperLimit.Copy(this.m_normal1).SelfNeg();
+}
+} else if (d) {
+this.m_front = _ >= 0 || u >= 0 && f >= 0;
+if (this.m_front) {
+this.m_normal.Copy(this.m_normal1);
+this.m_lowerLimit.Copy(this.m_normal0);
+this.m_upperLimit.Copy(this.m_normal1);
+} else {
+this.m_normal.Copy(this.m_normal1).SelfNeg();
+this.m_lowerLimit.Copy(this.m_normal2).SelfNeg();
+this.m_upperLimit.Copy(this.m_normal1).SelfNeg();
+}
+} else if (m) {
+this.m_front = f >= 0 || _ >= 0 && u >= 0;
+if (this.m_front) {
+this.m_normal.Copy(this.m_normal1);
+this.m_lowerLimit.Copy(this.m_normal1);
+this.m_upperLimit.Copy(this.m_normal2);
+} else {
+this.m_normal.Copy(this.m_normal1).SelfNeg();
+this.m_lowerLimit.Copy(this.m_normal1).SelfNeg();
+this.m_upperLimit.Copy(this.m_normal0).SelfNeg();
+}
+} else {
+this.m_front = _ >= 0 && u >= 0 && f >= 0;
+if (this.m_front) {
+this.m_normal.Copy(this.m_normal1);
+this.m_lowerLimit.Copy(this.m_normal1);
+this.m_upperLimit.Copy(this.m_normal1);
+} else {
+this.m_normal.Copy(this.m_normal1).SelfNeg();
+this.m_lowerLimit.Copy(this.m_normal2).SelfNeg();
+this.m_upperLimit.Copy(this.m_normal0).SelfNeg();
+}
+} else if (c) if (d) {
+this.m_front = _ >= 0 || u >= 0;
+if (this.m_front) {
+this.m_normal.Copy(this.m_normal1);
+this.m_lowerLimit.Copy(this.m_normal0);
+this.m_upperLimit.Copy(this.m_normal1).SelfNeg();
+} else {
+this.m_normal.Copy(this.m_normal1).SelfNeg();
+this.m_lowerLimit.Copy(this.m_normal1);
+this.m_upperLimit.Copy(this.m_normal1).SelfNeg();
+}
+} else {
+this.m_front = _ >= 0 && u >= 0;
+if (this.m_front) {
+this.m_normal.Copy(this.m_normal1);
+this.m_lowerLimit.Copy(this.m_normal1);
+this.m_upperLimit.Copy(this.m_normal1).SelfNeg();
+} else {
+this.m_normal.Copy(this.m_normal1).SelfNeg();
+this.m_lowerLimit.Copy(this.m_normal1);
+this.m_upperLimit.Copy(this.m_normal0).SelfNeg();
+}
+} else if (l) if (m) {
+this.m_front = u >= 0 || f >= 0;
+if (this.m_front) {
+this.m_normal.Copy(this.m_normal1);
+this.m_lowerLimit.Copy(this.m_normal1).SelfNeg();
+this.m_upperLimit.Copy(this.m_normal2);
+} else {
+this.m_normal.Copy(this.m_normal1).SelfNeg();
+this.m_lowerLimit.Copy(this.m_normal1).SelfNeg();
+this.m_upperLimit.Copy(this.m_normal1);
+}
+} else {
+this.m_front = u >= 0 && f >= 0;
+if (this.m_front) {
+this.m_normal.Copy(this.m_normal1);
+this.m_lowerLimit.Copy(this.m_normal1).SelfNeg();
+this.m_upperLimit.Copy(this.m_normal1);
+} else {
+this.m_normal.Copy(this.m_normal1).SelfNeg();
+this.m_lowerLimit.Copy(this.m_normal2).SelfNeg();
+this.m_upperLimit.Copy(this.m_normal1);
+}
+} else {
+this.m_front = u >= 0;
+if (this.m_front) {
+this.m_normal.Copy(this.m_normal1);
+this.m_lowerLimit.Copy(this.m_normal1).SelfNeg();
+this.m_upperLimit.Copy(this.m_normal1).SelfNeg();
+} else {
+this.m_normal.Copy(this.m_normal1).SelfNeg();
+this.m_lowerLimit.Copy(this.m_normal1);
+this.m_upperLimit.Copy(this.m_normal1);
+}
+}
+this.m_polygonB.count = s.m_count;
+for (var y = 0; y < s.m_count; ++y) {
+N.MulXV(this.m_xf, s.m_vertices[y], this.m_polygonB.vertices[y]);
+V.MulRV(this.m_xf.q, s.m_normals[y], this.m_polygonB.normals[y]);
+}
+this.m_radius = s.m_radius + n.m_radius;
+i.pointCount = 0;
+var g = this.ComputeEdgeSeparation(e.s_edgeAxis);
+if (0 !== g.type && !(g.separation > this.m_radius)) {
+var x = this.ComputePolygonSeparation(e.s_polygonAxis);
+if (!(0 !== x.type && x.separation > this.m_radius)) {
+var C;
+C = 0 === x.type ? g : x.separation > .98 * g.separation + .001 ? x : g;
+var b = e.s_ie, A = e.s_rf;
+if (1 === C.type) {
+i.type = t.b2ManifoldType.e_faceA;
+var S = 0, w = P.DotVV(this.m_normal, this.m_polygonB.normals[0]);
+for (y = 1; y < this.m_polygonB.count; ++y) {
+var T = P.DotVV(this.m_normal, this.m_polygonB.normals[y]);
+if (T < w) {
+w = T;
+S = y;
+}
+}
+var E = S, M = (E + 1) % this.m_polygonB.count;
+(B = b[0]).v.Copy(this.m_polygonB.vertices[E]);
+B.id.cf.indexA = 0;
+B.id.cf.indexB = E;
+B.id.cf.typeA = t.b2ContactFeatureType.e_face;
+B.id.cf.typeB = t.b2ContactFeatureType.e_vertex;
+(D = b[1]).v.Copy(this.m_polygonB.vertices[M]);
+D.id.cf.indexA = 0;
+D.id.cf.indexB = M;
+D.id.cf.typeA = t.b2ContactFeatureType.e_face;
+D.id.cf.typeB = t.b2ContactFeatureType.e_vertex;
+if (this.m_front) {
+A.i1 = 0;
+A.i2 = 1;
+A.v1.Copy(this.m_v1);
+A.v2.Copy(this.m_v2);
+A.normal.Copy(this.m_normal1);
+} else {
+A.i1 = 1;
+A.i2 = 0;
+A.v1.Copy(this.m_v2);
+A.v2.Copy(this.m_v1);
+A.normal.Copy(this.m_normal1).SelfNeg();
+}
+} else {
+i.type = t.b2ManifoldType.e_faceB;
+var B, D;
+(B = b[0]).v.Copy(this.m_v1);
+B.id.cf.indexA = 0;
+B.id.cf.indexB = C.index;
+B.id.cf.typeA = t.b2ContactFeatureType.e_vertex;
+B.id.cf.typeB = t.b2ContactFeatureType.e_face;
+(D = b[1]).v.Copy(this.m_v2);
+D.id.cf.indexA = 0;
+D.id.cf.indexB = C.index;
+D.id.cf.typeA = t.b2ContactFeatureType.e_vertex;
+D.id.cf.typeB = t.b2ContactFeatureType.e_face;
+A.i1 = C.index;
+A.i2 = (A.i1 + 1) % this.m_polygonB.count;
+A.v1.Copy(this.m_polygonB.vertices[A.i1]);
+A.v2.Copy(this.m_polygonB.vertices[A.i2]);
+A.normal.Copy(this.m_polygonB.normals[A.i1]);
+}
+A.sideNormal1.Set(A.normal.y, -A.normal.x);
+A.sideNormal2.Copy(A.sideNormal1).SelfNeg();
+A.sideOffset1 = P.DotVV(A.sideNormal1, A.v1);
+A.sideOffset2 = P.DotVV(A.sideNormal2, A.v2);
+var I = e.s_clipPoints1, R = e.s_clipPoints2;
+if (!(Mt(I, b, A.sideNormal1, A.sideOffset1, A.i1) < o || Mt(R, I, A.sideNormal2, A.sideOffset2, A.i2) < o)) {
+if (1 === C.type) {
+i.localNormal.Copy(A.normal);
+i.localPoint.Copy(A.v1);
+} else {
+i.localNormal.Copy(s.m_normals[A.i1]);
+i.localPoint.Copy(s.m_vertices[A.i1]);
+}
+var L = 0;
+for (y = 0; y < o; ++y) {
+if (P.DotVV(A.normal, P.SubVV(R[y].v, A.v1, P.s_t0)) <= this.m_radius) {
+var F = i.points[L];
+if (1 === C.type) {
+N.MulTXV(this.m_xf, R[y].v, F.localPoint);
+F.id = R[y].id;
+} else {
+F.localPoint.Copy(R[y].v);
+F.id.cf.typeA = R[y].id.cf.typeB;
+F.id.cf.typeB = R[y].id.cf.typeA;
+F.id.cf.indexA = R[y].id.cf.indexB;
+F.id.cf.indexB = R[y].id.cf.indexA;
+}
+++L;
+}
+}
+i.pointCount = L;
+}
+}
+}
+};
+e.prototype.ComputeEdgeSeparation = function(t) {
+var e = t;
+e.type = 1;
+e.index = this.m_front ? 0 : 1;
+e.separation = i;
+for (var n = 0; n < this.m_polygonB.count; ++n) {
+var r = P.DotVV(this.m_normal, P.SubVV(this.m_polygonB.vertices[n], this.m_v1, P.s_t0));
+r < e.separation && (e.separation = r);
+}
+return e;
+};
+e.prototype.ComputePolygonSeparation = function(t) {
+var n = t;
+n.type = 0;
+n.index = -1;
+n.separation = -i;
+for (var r = e.s_perp.Set(-this.m_normal.y, this.m_normal.x), s = 0; s < this.m_polygonB.count; ++s) {
+var o = P.NegV(this.m_polygonB.normals[s], e.s_n), a = P.DotVV(o, P.SubVV(this.m_polygonB.vertices[s], this.m_v1, P.s_t0)), c = P.DotVV(o, P.SubVV(this.m_polygonB.vertices[s], this.m_v2, P.s_t0)), h = g(a, c);
+if (h > this.m_radius) {
+n.type = 2;
+n.index = s;
+n.separation = h;
+return n;
+}
+if (P.DotVV(o, r) >= 0) {
+if (P.DotVV(P.SubVV(o, this.m_upperLimit, P.s_t0), this.m_normal) < -l) continue;
+} else if (P.DotVV(P.SubVV(o, this.m_lowerLimit, P.s_t0), this.m_normal) < -l) continue;
+if (h > n.separation) {
+n.type = 2;
+n.index = s;
+n.separation = h;
+}
+}
+return n;
+};
+e.s_edge1 = new P();
+e.s_edge0 = new P();
+e.s_edge2 = new P();
+e.s_ie = At.MakeArray(2);
+e.s_rf = new Xe();
+e.s_clipPoints1 = At.MakeArray(2);
+e.s_clipPoints2 = At.MakeArray(2);
+e.s_edgeAxis = new He();
+e.s_polygonAxis = new He();
+e.s_n = new P();
+e.s_perp = new P();
+return e;
+}())();
+function Je(t, e, i, n, r) {
+Ye.Collide(t, e, i, n, r);
+}
+var Ze = (function() {
+return function() {
+this.mass = 0;
+this.center = new P(0, 0);
+this.I = 0;
+};
+})();
+(function(t) {
+t[t.e_unknown = -1] = "e_unknown";
+t[t.e_circleShape = 0] = "e_circleShape";
+t[t.e_edgeShape = 1] = "e_edgeShape";
+t[t.e_polygonShape = 2] = "e_polygonShape";
+t[t.e_chainShape = 3] = "e_chainShape";
+t[t.e_shapeTypeCount = 4] = "e_shapeTypeCount";
+})(t.b2ShapeType || (t.b2ShapeType = {}));
+var Ke = (function() {
+function e(e, i) {
+this.m_type = t.b2ShapeType.e_unknown;
+this.m_radius = 0;
+this.m_type = e;
+this.m_radius = i;
+}
+e.prototype.Copy = function(t) {
+this.m_radius = t.m_radius;
+return this;
+};
+e.prototype.GetType = function() {
+return this.m_type;
+};
+return e;
+})(), Qe = Object.setPrototypeOf || {
+__proto__: []
+} instanceof Array && function(t, e) {
+t.__proto__ = e;
+} || function(t, e) {
+for (var i in e) e.hasOwnProperty(i) && (t[i] = e[i]);
+};
+function $e(t, e) {
+Qe(t, e);
+function i() {
+this.constructor = t;
+}
+t.prototype = null === e ? Object.create(e) : (i.prototype = e.prototype, new i());
+}
+var ti = (function(e) {
+$e(i, e);
+function i(i) {
+void 0 === i && (i = 0);
+var n = e.call(this, t.b2ShapeType.e_circleShape, i) || this;
+n.m_p = new P();
+return n;
+}
+i.prototype.Set = function(t, e) {
+void 0 === e && (e = this.m_radius);
+this.m_p.Copy(t);
+this.m_radius = e;
+return this;
+};
+i.prototype.Clone = function() {
+return new i().Copy(this);
+};
+i.prototype.Copy = function(t) {
+e.prototype.Copy.call(this, t);
+this.m_p.Copy(t.m_p);
+return this;
+};
+i.prototype.GetChildCount = function() {
+return 1;
+};
+i.prototype.TestPoint = function(t, e) {
+var n = N.MulXV(t, this.m_p, i.TestPoint_s_center), r = P.SubVV(e, n, i.TestPoint_s_d);
+return P.DotVV(r, r) <= A(this.m_radius);
+};
+i.prototype.ComputeDistance = function(t, e, n, r) {
+var s = N.MulXV(t, this.m_p, i.ComputeDistance_s_center);
+P.SubVV(e, s, n);
+return n.Normalize() - this.m_radius;
+};
+i.prototype.RayCast = function(t, e, r, s) {
+var o = N.MulXV(r, this.m_p, i.RayCast_s_position), a = P.SubVV(e.p1, o, i.RayCast_s_s), c = P.DotVV(a, a) - A(this.m_radius), l = P.SubVV(e.p2, e.p1, i.RayCast_s_r), h = P.DotVV(a, l), u = P.DotVV(l, l), _ = h * h - u * c;
+if (_ < 0 || u < n) return !1;
+var f = -(h + w(_));
+if (0 <= f && f <= e.maxFraction * u) {
+f /= u;
+t.fraction = f;
+P.AddVMulSV(a, f, l, t.normal).SelfNormalize();
+return !0;
+}
+return !1;
+};
+i.prototype.ComputeAABB = function(t, e, n) {
+var r = N.MulXV(e, this.m_p, i.ComputeAABB_s_p);
+t.lowerBound.Set(r.x - this.m_radius, r.y - this.m_radius);
+t.upperBound.Set(r.x + this.m_radius, r.y + this.m_radius);
+};
+i.prototype.ComputeMass = function(t, e) {
+var i = A(this.m_radius);
+t.mass = e * s * i;
+t.center.Copy(this.m_p);
+t.I = t.mass * (.5 * i + P.DotVV(this.m_p, this.m_p));
+};
+i.prototype.SetupDistanceProxy = function(t, e) {
+t.m_vertices = t.m_buffer;
+t.m_vertices[0].Copy(this.m_p);
+t.m_count = 1;
+t.m_radius = this.m_radius;
+};
+i.prototype.ComputeSubmergedArea = function(t, e, i, r) {
+var o = N.MulXV(i, this.m_p, new P()), a = -(P.DotVV(t, o) - e);
+if (a < -this.m_radius + n) return 0;
+if (a > this.m_radius) {
+r.Copy(o);
+return s * this.m_radius * this.m_radius;
+}
+var c = this.m_radius * this.m_radius, l = a * a, h = c * (D(a / this.m_radius) + s / 2) + a * w(c - l), u = -2 / 3 * T(c - l, 1.5) / h;
+r.x = o.x + t.x * u;
+r.y = o.y + t.y * u;
+return h;
+};
+i.prototype.Dump = function(t) {
+t(" const shape: b2CircleShape = new b2CircleShape();\n");
+t(" shape.m_radius = %.15f;\n", this.m_radius);
+t(" shape.m_p.Set(%.15f, %.15f);\n", this.m_p.x, this.m_p.y);
+};
+i.TestPoint_s_center = new P();
+i.TestPoint_s_d = new P();
+i.ComputeDistance_s_center = new P();
+i.RayCast_s_position = new P();
+i.RayCast_s_s = new P();
+i.RayCast_s_r = new P();
+i.ComputeAABB_s_p = new P();
+return i;
+})(Ke), ei = (function(e) {
+$e(r, e);
+function r() {
+var i = e.call(this, t.b2ShapeType.e_polygonShape, h) || this;
+i.m_centroid = new P(0, 0);
+i.m_vertices = [];
+i.m_normals = [];
+i.m_count = 0;
+return i;
+}
+r.prototype.Clone = function() {
+return new r().Copy(this);
+};
+r.prototype.Copy = function(t) {
+e.prototype.Copy.call(this, t);
+this.m_centroid.Copy(t.m_centroid);
+this.m_count = t.m_count;
+this.m_vertices = P.MakeArray(this.m_count);
+this.m_normals = P.MakeArray(this.m_count);
+for (var i = 0; i < this.m_count; ++i) {
+this.m_vertices[i].Copy(t.m_vertices[i]);
+this.m_normals[i].Copy(t.m_normals[i]);
+}
+return this;
+};
+r.prototype.GetChildCount = function() {
+return 1;
+};
+r.prototype.Set = function(t, e, i) {
+void 0 === e && (e = t.length);
+void 0 === i && (i = 0);
+if (e < 3) return this.SetAsBox(1, 1);
+for (var n = g(e, a), s = r.Set_s_ps, o = 0, l = 0; l < n; ++l) {
+for (var h = t[i + l], u = !0, _ = 0; _ < o; ++_) if (P.DistanceSquaredVV(h, s[_]) < .5 * c * (.5 * c)) {
+u = !1;
+break;
+}
+u && s[o++].Copy(h);
+}
+if ((n = o) < 3) return this.SetAsBox(1, 1);
+var f = 0, d = s[0].x;
+for (l = 1; l < n; ++l) {
+var m = s[l].x;
+if (m > d || m === d && s[l].y < s[f].y) {
+f = l;
+d = m;
+}
+}
+for (var p = r.Set_s_hull, v = 0, y = f; ;) {
+p[v] = y;
+var x = 0;
+for (_ = 1; _ < n; ++_) if (x !== y) {
+var C = P.SubVV(s[x], s[p[v]], r.Set_s_r), b = (h = P.SubVV(s[_], s[p[v]], r.Set_s_v),
+P.CrossVV(C, h));
+b < 0 && (x = _);
+0 === b && h.LengthSquared() > C.LengthSquared() && (x = _);
+} else x = _;
+++v;
+y = x;
+if (x === f) break;
+}
+this.m_count = v;
+this.m_vertices = P.MakeArray(this.m_count);
+this.m_normals = P.MakeArray(this.m_count);
+for (l = 0; l < v; ++l) this.m_vertices[l].Copy(s[p[l]]);
+for (l = 0; l < v; ++l) {
+var A = this.m_vertices[l], S = this.m_vertices[(l + 1) % v], w = P.SubVV(S, A, P.s_t0);
+P.CrossVOne(w, this.m_normals[l]).SelfNormalize();
+}
+r.ComputeCentroid(this.m_vertices, v, this.m_centroid);
+return this;
+};
+r.prototype.SetAsArray = function(t, e) {
+void 0 === e && (e = t.length);
+return this.Set(t, e);
+};
+r.prototype.SetAsBox = function(t, e, i, n) {
+void 0 === n && (n = 0);
+this.m_count = 4;
+this.m_vertices = P.MakeArray(this.m_count);
+this.m_normals = P.MakeArray(this.m_count);
+this.m_vertices[0].Set(-t, -e);
+this.m_vertices[1].Set(t, -e);
+this.m_vertices[2].Set(t, e);
+this.m_vertices[3].Set(-t, e);
+this.m_normals[0].Set(0, -1);
+this.m_normals[1].Set(1, 0);
+this.m_normals[2].Set(0, 1);
+this.m_normals[3].Set(-1, 0);
+this.m_centroid.SetZero();
+if (i) {
+this.m_centroid.Copy(i);
+var r = new N();
+r.SetPosition(i);
+r.SetRotationAngle(n);
+for (var s = 0; s < this.m_count; ++s) {
+N.MulXV(r, this.m_vertices[s], this.m_vertices[s]);
+V.MulRV(r.q, this.m_normals[s], this.m_normals[s]);
+}
+}
+return this;
+};
+r.prototype.TestPoint = function(t, e) {
+for (var i = N.MulTXV(t, e, r.TestPoint_s_pLocal), n = 0; n < this.m_count; ++n) {
+if (P.DotVV(this.m_normals[n], P.SubVV(i, this.m_vertices[n], P.s_t0)) > 0) return !1;
+}
+return !0;
+};
+r.prototype.ComputeDistance = function(t, e, n, s) {
+for (var o = N.MulTXV(t, e, r.ComputeDistance_s_pLocal), a = -i, c = r.ComputeDistance_s_normalForMaxDistance.Copy(o), l = 0; l < this.m_count; ++l) {
+var h = P.DotVV(this.m_normals[l], P.SubVV(o, this.m_vertices[l], P.s_t0));
+if (h > a) {
+a = h;
+c.Copy(this.m_normals[l]);
+}
+}
+if (a > 0) {
+var u = r.ComputeDistance_s_minDistance.Copy(c), _ = a * a;
+for (l = 0; l < this.m_count; ++l) {
+var f = P.SubVV(o, this.m_vertices[l], r.ComputeDistance_s_distance), d = f.LengthSquared();
+if (_ > d) {
+u.Copy(f);
+_ = d;
+}
+}
+V.MulRV(t.q, u, n);
+n.Normalize();
+return Math.sqrt(_);
+}
+V.MulRV(t.q, c, n);
+return a;
+};
+r.prototype.RayCast = function(t, e, i, n) {
+for (var s = N.MulTXV(i, e.p1, r.RayCast_s_p1), o = N.MulTXV(i, e.p2, r.RayCast_s_p2), a = P.SubVV(o, s, r.RayCast_s_d), c = 0, l = e.maxFraction, h = -1, u = 0; u < this.m_count; ++u) {
+var _ = P.DotVV(this.m_normals[u], P.SubVV(this.m_vertices[u], s, P.s_t0)), f = P.DotVV(this.m_normals[u], a);
+if (0 === f) {
+if (_ < 0) return !1;
+} else if (f < 0 && _ < c * f) {
+c = _ / f;
+h = u;
+} else f > 0 && _ < l * f && (l = _ / f);
+if (l < c) return !1;
+}
+if (h >= 0) {
+t.fraction = c;
+V.MulRV(i.q, this.m_normals[h], t.normal);
+return !0;
+}
+return !1;
+};
+r.prototype.ComputeAABB = function(t, e, i) {
+for (var n = N.MulXV(e, this.m_vertices[0], t.lowerBound), s = t.upperBound.Copy(n), o = 0; o < this.m_count; ++o) {
+var a = N.MulXV(e, this.m_vertices[o], r.ComputeAABB_s_v);
+P.MinV(a, n, n);
+P.MaxV(a, s, s);
+}
+var c = this.m_radius;
+n.SelfSubXY(c, c);
+s.SelfAddXY(c, c);
+};
+r.prototype.ComputeMass = function(t, e) {
+for (var i = r.ComputeMass_s_center.SetZero(), n = 0, s = 0, o = r.ComputeMass_s_s.SetZero(), a = 0; a < this.m_count; ++a) o.SelfAdd(this.m_vertices[a]);
+o.SelfMul(1 / this.m_count);
+for (a = 0; a < this.m_count; ++a) {
+var c = P.SubVV(this.m_vertices[a], o, r.ComputeMass_s_e1), l = P.SubVV(this.m_vertices[(a + 1) % this.m_count], o, r.ComputeMass_s_e2), h = P.CrossVV(c, l), u = .5 * h;
+n += u;
+i.SelfAdd(P.MulSV(u * (1 / 3), P.AddVV(c, l, P.s_t0), P.s_t1));
+var _ = c.x, f = c.y, d = l.x, m = l.y;
+s += 1 / 3 * .25 * h * (_ * _ + d * _ + d * d + (f * f + m * f + m * m));
+}
+t.mass = e * n;
+i.SelfMul(1 / n);
+P.AddVV(i, o, t.center);
+t.I = e * s;
+t.I += t.mass * (P.DotVV(t.center, t.center) - P.DotVV(i, i));
+};
+r.prototype.Validate = function() {
+for (var t = 0; t < this.m_count; ++t) for (var e = t, i = (t + 1) % this.m_count, n = this.m_vertices[e], s = P.SubVV(this.m_vertices[i], n, r.Validate_s_e), o = 0; o < this.m_count; ++o) if (o !== e && o !== i) {
+var a = P.SubVV(this.m_vertices[o], n, r.Validate_s_v);
+if (P.CrossVV(s, a) < 0) return !1;
+}
+return !0;
+};
+r.prototype.SetupDistanceProxy = function(t, e) {
+t.m_vertices = this.m_vertices;
+t.m_count = this.m_count;
+t.m_radius = this.m_radius;
+};
+r.prototype.ComputeSubmergedArea = function(t, e, i, s) {
+for (var o = V.MulTRV(i.q, t, r.ComputeSubmergedArea_s_normalL), a = e - P.DotVV(t, i.p), c = r.ComputeSubmergedArea_s_depths, l = 0, h = -1, u = -1, _ = !1, f = 0; f < this.m_count; ++f) {
+c[f] = P.DotVV(o, this.m_vertices[f]) - a;
+var d = c[f] < -n;
+if (f > 0) if (d) {
+if (!_) {
+h = f - 1;
+l++;
+}
+} else if (_) {
+u = f - 1;
+l++;
+}
+_ = d;
+}
+switch (l) {
+case 0:
+if (_) {
+var m = r.ComputeSubmergedArea_s_md;
+this.ComputeMass(m, 1);
+N.MulXV(i, m.center, s);
+return m.mass;
+}
+return 0;
+
+case 1:
+-1 === h ? h = this.m_count - 1 : u = this.m_count - 1;
+}
+for (var p, v = (h + 1) % this.m_count, y = (u + 1) % this.m_count, g = (0 - c[h]) / (c[v] - c[h]), x = (0 - c[u]) / (c[y] - c[u]), C = r.ComputeSubmergedArea_s_intoVec.Set(this.m_vertices[h].x * (1 - g) + this.m_vertices[v].x * g, this.m_vertices[h].y * (1 - g) + this.m_vertices[v].y * g), b = r.ComputeSubmergedArea_s_outoVec.Set(this.m_vertices[u].x * (1 - x) + this.m_vertices[y].x * x, this.m_vertices[u].y * (1 - x) + this.m_vertices[y].y * x), A = 0, S = r.ComputeSubmergedArea_s_center.SetZero(), w = this.m_vertices[v], T = v; T !== y; ) {
+p = (T = (T + 1) % this.m_count) === y ? b : this.m_vertices[T];
+var E = .5 * ((w.x - C.x) * (p.y - C.y) - (w.y - C.y) * (p.x - C.x));
+A += E;
+S.x += E * (C.x + w.x + p.x) / 3;
+S.y += E * (C.y + w.y + p.y) / 3;
+w = p;
+}
+S.SelfMul(1 / A);
+N.MulXV(i, S, s);
+return A;
+};
+r.prototype.Dump = function(t) {
+t(" const shape: b2PolygonShape = new b2PolygonShape();\n");
+t(" const vs: b2Vec2[] = b2Vec2.MakeArray(%d);\n", a);
+for (var e = 0; e < this.m_count; ++e) t(" vs[%d].Set(%.15f, %.15f);\n", e, this.m_vertices[e].x, this.m_vertices[e].y);
+t(" shape.Set(vs, %d);\n", this.m_count);
+};
+r.ComputeCentroid = function(t, e, i) {
+var n = i;
+n.SetZero();
+for (var s = 0, o = r.ComputeCentroid_s_pRef.SetZero(), a = 0; a < e; ++a) {
+var c = o, l = t[a], h = t[(a + 1) % e], u = P.SubVV(l, c, r.ComputeCentroid_s_e1), _ = P.SubVV(h, c, r.ComputeCentroid_s_e2), f = .5 * P.CrossVV(u, _);
+s += f;
+n.x += f * (1 / 3) * (c.x + l.x + h.x);
+n.y += f * (1 / 3) * (c.y + l.y + h.y);
+}
+n.SelfMul(1 / s);
+return n;
+};
+r.Set_s_ps = P.MakeArray(a);
+r.Set_s_hull = m(a);
+r.Set_s_r = new P();
+r.Set_s_v = new P();
+r.TestPoint_s_pLocal = new P();
+r.ComputeDistance_s_pLocal = new P();
+r.ComputeDistance_s_normalForMaxDistance = new P();
+r.ComputeDistance_s_minDistance = new P();
+r.ComputeDistance_s_distance = new P();
+r.RayCast_s_p1 = new P();
+r.RayCast_s_p2 = new P();
+r.RayCast_s_d = new P();
+r.ComputeAABB_s_v = new P();
+r.ComputeMass_s_center = new P();
+r.ComputeMass_s_s = new P();
+r.ComputeMass_s_e1 = new P();
+r.ComputeMass_s_e2 = new P();
+r.Validate_s_e = new P();
+r.Validate_s_v = new P();
+r.ComputeSubmergedArea_s_normalL = new P();
+r.ComputeSubmergedArea_s_depths = m(a);
+r.ComputeSubmergedArea_s_md = new Ze();
+r.ComputeSubmergedArea_s_intoVec = new P();
+r.ComputeSubmergedArea_s_outoVec = new P();
+r.ComputeSubmergedArea_s_center = new P();
+r.ComputeCentroid_s_pRef = new P();
+r.ComputeCentroid_s_e1 = new P();
+r.ComputeCentroid_s_e2 = new P();
+return r;
+})(Ke), ii = (function(e) {
+$e(i, e);
+function i() {
+var i = e.call(this, t.b2ShapeType.e_edgeShape, h) || this;
+i.m_vertex1 = new P();
+i.m_vertex2 = new P();
+i.m_vertex0 = new P();
+i.m_vertex3 = new P();
+i.m_hasVertex0 = !1;
+i.m_hasVertex3 = !1;
+return i;
+}
+i.prototype.Set = function(t, e) {
+this.m_vertex1.Copy(t);
+this.m_vertex2.Copy(e);
+this.m_hasVertex0 = !1;
+this.m_hasVertex3 = !1;
+return this;
+};
+i.prototype.Clone = function() {
+return new i().Copy(this);
+};
+i.prototype.Copy = function(t) {
+e.prototype.Copy.call(this, t);
+this.m_vertex1.Copy(t.m_vertex1);
+this.m_vertex2.Copy(t.m_vertex2);
+this.m_vertex0.Copy(t.m_vertex0);
+this.m_vertex3.Copy(t.m_vertex3);
+this.m_hasVertex0 = t.m_hasVertex0;
+this.m_hasVertex3 = t.m_hasVertex3;
+return this;
+};
+i.prototype.GetChildCount = function() {
+return 1;
+};
+i.prototype.TestPoint = function(t, e) {
+return !1;
+};
+i.prototype.ComputeDistance = function(t, e, n, r) {
+var s = N.MulXV(t, this.m_vertex1, i.ComputeDistance_s_v1), o = N.MulXV(t, this.m_vertex2, i.ComputeDistance_s_v2), a = P.SubVV(e, s, i.ComputeDistance_s_d), c = P.SubVV(o, s, i.ComputeDistance_s_s), l = P.DotVV(a, c);
+if (l > 0) {
+var h = P.DotVV(c, c);
+l > h ? P.SubVV(e, o, a) : a.SelfMulSub(l / h, c);
+}
+n.Copy(a);
+return n.Normalize();
+};
+i.prototype.RayCast = function(t, e, n, r) {
+var s = N.MulTXV(n, e.p1, i.RayCast_s_p1), o = N.MulTXV(n, e.p2, i.RayCast_s_p2), a = P.SubVV(o, s, i.RayCast_s_d), c = this.m_vertex1, l = this.m_vertex2, h = P.SubVV(l, c, i.RayCast_s_e), u = t.normal.Set(h.y, -h.x).SelfNormalize(), _ = P.DotVV(u, P.SubVV(c, s, P.s_t0)), f = P.DotVV(u, a);
+if (0 === f) return !1;
+var d = _ / f;
+if (d < 0 || e.maxFraction < d) return !1;
+var m = P.AddVMulSV(s, d, a, i.RayCast_s_q), p = P.SubVV(l, c, i.RayCast_s_r), v = P.DotVV(p, p);
+if (0 === v) return !1;
+var y = P.DotVV(P.SubVV(m, c, P.s_t0), p) / v;
+if (y < 0 || 1 < y) return !1;
+t.fraction = d;
+V.MulRV(n.q, t.normal, t.normal);
+_ > 0 && t.normal.SelfNeg();
+return !0;
+};
+i.prototype.ComputeAABB = function(t, e, n) {
+var r = N.MulXV(e, this.m_vertex1, i.ComputeAABB_s_v1), s = N.MulXV(e, this.m_vertex2, i.ComputeAABB_s_v2);
+P.MinV(r, s, t.lowerBound);
+P.MaxV(r, s, t.upperBound);
+var o = this.m_radius;
+t.lowerBound.SelfSubXY(o, o);
+t.upperBound.SelfAddXY(o, o);
+};
+i.prototype.ComputeMass = function(t, e) {
+t.mass = 0;
+P.MidVV(this.m_vertex1, this.m_vertex2, t.center);
+t.I = 0;
+};
+i.prototype.SetupDistanceProxy = function(t, e) {
+t.m_vertices = t.m_buffer;
+t.m_vertices[0].Copy(this.m_vertex1);
+t.m_vertices[1].Copy(this.m_vertex2);
+t.m_count = 2;
+t.m_radius = this.m_radius;
+};
+i.prototype.ComputeSubmergedArea = function(t, e, i, n) {
+n.SetZero();
+return 0;
+};
+i.prototype.Dump = function(t) {
+t(" const shape: b2EdgeShape = new b2EdgeShape();\n");
+t(" shape.m_radius = %.15f;\n", this.m_radius);
+t(" shape.m_vertex0.Set(%.15f, %.15f);\n", this.m_vertex0.x, this.m_vertex0.y);
+t(" shape.m_vertex1.Set(%.15f, %.15f);\n", this.m_vertex1.x, this.m_vertex1.y);
+t(" shape.m_vertex2.Set(%.15f, %.15f);\n", this.m_vertex2.x, this.m_vertex2.y);
+t(" shape.m_vertex3.Set(%.15f, %.15f);\n", this.m_vertex3.x, this.m_vertex3.y);
+t(" shape.m_hasVertex0 = %s;\n", this.m_hasVertex0);
+t(" shape.m_hasVertex3 = %s;\n", this.m_hasVertex3);
+};
+i.ComputeDistance_s_v1 = new P();
+i.ComputeDistance_s_v2 = new P();
+i.ComputeDistance_s_d = new P();
+i.ComputeDistance_s_s = new P();
+i.RayCast_s_p1 = new P();
+i.RayCast_s_p2 = new P();
+i.RayCast_s_d = new P();
+i.RayCast_s_e = new P();
+i.RayCast_s_q = new P();
+i.RayCast_s_r = new P();
+i.ComputeAABB_s_v1 = new P();
+i.ComputeAABB_s_v2 = new P();
+return i;
+})(Ke), ni = (function(e) {
+$e(i, e);
+function i() {
+var i = e.call(this, t.b2ShapeType.e_chainShape, h) || this;
+i.m_vertices = [];
+i.m_count = 0;
+i.m_prevVertex = new P();
+i.m_nextVertex = new P();
+i.m_hasPrevVertex = !1;
+i.m_hasNextVertex = !1;
+return i;
+}
+i.prototype.CreateLoop = function(t, e, i) {
+void 0 === e && (e = t.length);
+void 0 === i && (i = 0);
+if (e < 3) return this;
+this.m_count = e + 1;
+this.m_vertices = P.MakeArray(this.m_count);
+for (var n = 0; n < e; ++n) this.m_vertices[n].Copy(t[i + n]);
+this.m_vertices[e].Copy(this.m_vertices[0]);
+this.m_prevVertex.Copy(this.m_vertices[this.m_count - 2]);
+this.m_nextVertex.Copy(this.m_vertices[1]);
+this.m_hasPrevVertex = !0;
+this.m_hasNextVertex = !0;
+return this;
+};
+i.prototype.CreateChain = function(t, e, i) {
+void 0 === e && (e = t.length);
+void 0 === i && (i = 0);
+this.m_count = e;
+this.m_vertices = P.MakeArray(e);
+for (var n = 0; n < e; ++n) this.m_vertices[n].Copy(t[i + n]);
+this.m_hasPrevVertex = !1;
+this.m_hasNextVertex = !1;
+this.m_prevVertex.SetZero();
+this.m_nextVertex.SetZero();
+return this;
+};
+i.prototype.SetPrevVertex = function(t) {
+this.m_prevVertex.Copy(t);
+this.m_hasPrevVertex = !0;
+return this;
+};
+i.prototype.SetNextVertex = function(t) {
+this.m_nextVertex.Copy(t);
+this.m_hasNextVertex = !0;
+return this;
+};
+i.prototype.Clone = function() {
+return new i().Copy(this);
+};
+i.prototype.Copy = function(t) {
+e.prototype.Copy.call(this, t);
+this.CreateChain(t.m_vertices, t.m_count);
+this.m_prevVertex.Copy(t.m_prevVertex);
+this.m_nextVertex.Copy(t.m_nextVertex);
+this.m_hasPrevVertex = t.m_hasPrevVertex;
+this.m_hasNextVertex = t.m_hasNextVertex;
+return this;
+};
+i.prototype.GetChildCount = function() {
+return this.m_count - 1;
+};
+i.prototype.GetChildEdge = function(e, i) {
+e.m_type = t.b2ShapeType.e_edgeShape;
+e.m_radius = this.m_radius;
+e.m_vertex1.Copy(this.m_vertices[i]);
+e.m_vertex2.Copy(this.m_vertices[i + 1]);
+if (i > 0) {
+e.m_vertex0.Copy(this.m_vertices[i - 1]);
+e.m_hasVertex0 = !0;
+} else {
+e.m_vertex0.Copy(this.m_prevVertex);
+e.m_hasVertex0 = this.m_hasPrevVertex;
+}
+if (i < this.m_count - 2) {
+e.m_vertex3.Copy(this.m_vertices[i + 2]);
+e.m_hasVertex3 = !0;
+} else {
+e.m_vertex3.Copy(this.m_nextVertex);
+e.m_hasVertex3 = this.m_hasNextVertex;
+}
+};
+i.prototype.TestPoint = function(t, e) {
+return !1;
+};
+i.prototype.ComputeDistance = function(t, e, n, r) {
+var s = i.ComputeDistance_s_edgeShape;
+this.GetChildEdge(s, r);
+return s.ComputeDistance(t, e, n, 0);
+};
+i.prototype.RayCast = function(t, e, n, r) {
+var s = i.RayCast_s_edgeShape;
+s.m_vertex1.Copy(this.m_vertices[r]);
+s.m_vertex2.Copy(this.m_vertices[(r + 1) % this.m_count]);
+return s.RayCast(t, e, n, 0);
+};
+i.prototype.ComputeAABB = function(t, e, n) {
+var r = this.m_vertices[n], s = this.m_vertices[(n + 1) % this.m_count], o = N.MulXV(e, r, i.ComputeAABB_s_v1), a = N.MulXV(e, s, i.ComputeAABB_s_v2);
+P.MinV(o, a, t.lowerBound);
+P.MaxV(o, a, t.upperBound);
+};
+i.prototype.ComputeMass = function(t, e) {
+t.mass = 0;
+t.center.SetZero();
+t.I = 0;
+};
+i.prototype.SetupDistanceProxy = function(t, e) {
+t.m_vertices = t.m_buffer;
+t.m_vertices[0].Copy(this.m_vertices[e]);
+e + 1 < this.m_count ? t.m_vertices[1].Copy(this.m_vertices[e + 1]) : t.m_vertices[1].Copy(this.m_vertices[0]);
+t.m_count = 2;
+t.m_radius = this.m_radius;
+};
+i.prototype.ComputeSubmergedArea = function(t, e, i, n) {
+n.SetZero();
+return 0;
+};
+i.prototype.Dump = function(t) {
+t(" const shape: b2ChainShape = new b2ChainShape();\n");
+t(" const vs: b2Vec2[] = b2Vec2.MakeArray(%d);\n", a);
+for (var e = 0; e < this.m_count; ++e) t(" vs[%d].Set(%.15f, %.15f);\n", e, this.m_vertices[e].x, this.m_vertices[e].y);
+t(" shape.CreateChain(vs, %d);\n", this.m_count);
+t(" shape.m_prevVertex.Set(%.15f, %.15f);\n", this.m_prevVertex.x, this.m_prevVertex.y);
+t(" shape.m_nextVertex.Set(%.15f, %.15f);\n", this.m_nextVertex.x, this.m_nextVertex.y);
+t(" shape.m_hasPrevVertex = %s;\n", this.m_hasPrevVertex ? "true" : "false");
+t(" shape.m_hasNextVertex = %s;\n", this.m_hasNextVertex ? "true" : "false");
+};
+i.ComputeDistance_s_edgeShape = new ii();
+i.RayCast_s_edgeShape = new ii();
+i.ComputeAABB_s_v1 = new P();
+i.ComputeAABB_s_v2 = new P();
+return i;
+})(Ke), ri = (function() {
+function t() {
+this.categoryBits = 1;
+this.maskBits = 65535;
+this.groupIndex = 0;
+}
+t.prototype.Clone = function() {
+return new t().Copy(this);
+};
+t.prototype.Copy = function(t) {
+this.categoryBits = t.categoryBits;
+this.maskBits = t.maskBits;
+this.groupIndex = t.groupIndex || 0;
+return this;
+};
+t.DEFAULT = new t();
+return t;
+})(), si = (function() {
+return function() {
+this.userData = null;
+this.friction = .2;
+this.restitution = 0;
+this.density = 0;
+this.isSensor = !1;
+this.filter = new ri();
+};
+})(), oi = (function() {
+return function(t) {
+this.aabb = new Tt();
+this.childIndex = 0;
+this.fixture = t;
+};
+})(), ai = (function() {
+function t(t, e) {
+this.m_density = 0;
+this.m_next = null;
+this.m_friction = 0;
+this.m_restitution = 0;
+this.m_proxies = [];
+this.m_proxyCount = 0;
+this.m_filter = new ri();
+this.m_isSensor = !1;
+this.m_userData = null;
+this.m_body = e;
+this.m_shape = t.shape.Clone();
+}
+t.prototype.GetType = function() {
+return this.m_shape.GetType();
+};
+t.prototype.GetShape = function() {
+return this.m_shape;
+};
+t.prototype.SetSensor = function(t) {
+if (t !== this.m_isSensor) {
+this.m_body.SetAwake(!0);
+this.m_isSensor = t;
+}
+};
+t.prototype.IsSensor = function() {
+return this.m_isSensor;
+};
+t.prototype.SetFilterData = function(t) {
+this.m_filter.Copy(t);
+this.Refilter();
+};
+t.prototype.GetFilterData = function() {
+return this.m_filter;
+};
+t.prototype.Refilter = function() {
+for (var t = this.m_body.GetContactList(); t; ) {
+var e = t.contact, i = e.GetFixtureA(), n = e.GetFixtureB();
+i !== this && n !== this || e.FlagForFiltering();
+t = t.next;
+}
+var r = this.m_body.GetWorld();
+if (null !== r) for (var s = r.m_contactManager.m_broadPhase, o = 0; o < this.m_proxyCount; ++o) s.TouchProxy(this.m_proxies[o].treeNode);
+};
+t.prototype.GetBody = function() {
+return this.m_body;
+};
+t.prototype.GetNext = function() {
+return this.m_next;
+};
+t.prototype.GetUserData = function() {
+return this.m_userData;
+};
+t.prototype.SetUserData = function(t) {
+this.m_userData = t;
+};
+t.prototype.TestPoint = function(t) {
+return this.m_shape.TestPoint(this.m_body.GetTransform(), t);
+};
+t.prototype.ComputeDistance = function(t, e, i) {
+return this.m_shape.ComputeDistance(this.m_body.GetTransform(), t, e, i);
+};
+t.prototype.RayCast = function(t, e, i) {
+return this.m_shape.RayCast(t, e, this.m_body.GetTransform(), i);
+};
+t.prototype.GetMassData = function(t) {
+void 0 === t && (t = new Ze());
+this.m_shape.ComputeMass(t, this.m_density);
+return t;
+};
+t.prototype.SetDensity = function(t) {
+this.m_density = t;
+};
+t.prototype.GetDensity = function() {
+return this.m_density;
+};
+t.prototype.GetFriction = function() {
+return this.m_friction;
+};
+t.prototype.SetFriction = function(t) {
+this.m_friction = t;
+};
+t.prototype.GetRestitution = function() {
+return this.m_restitution;
+};
+t.prototype.SetRestitution = function(t) {
+this.m_restitution = t;
+};
+t.prototype.GetAABB = function(t) {
+return this.m_proxies[t].aabb;
+};
+t.prototype.Dump = function(t, e) {
+t(" const fd: b2FixtureDef = new b2FixtureDef();\n");
+t(" fd.friction = %.15f;\n", this.m_friction);
+t(" fd.restitution = %.15f;\n", this.m_restitution);
+t(" fd.density = %.15f;\n", this.m_density);
+t(" fd.isSensor = %s;\n", this.m_isSensor ? "true" : "false");
+t(" fd.filter.categoryBits = %d;\n", this.m_filter.categoryBits);
+t(" fd.filter.maskBits = %d;\n", this.m_filter.maskBits);
+t(" fd.filter.groupIndex = %d;\n", this.m_filter.groupIndex);
+this.m_shape.Dump(t);
+t("\n");
+t(" fd.shape = shape;\n");
+t("\n");
+t(" bodies[%d].CreateFixture(fd);\n", e);
+};
+t.prototype.Create = function(t) {
+var i = this;
+this.m_userData = t.userData;
+this.m_friction = e(t.friction, .2);
+this.m_restitution = e(t.restitution, 0);
+this.m_next = null;
+this.m_filter.Copy(e(t.filter, ri.DEFAULT));
+this.m_isSensor = e(t.isSensor, !1);
+this.m_proxies = d(this.m_shape.GetChildCount(), (function(t) {
+return new oi(i);
+}));
+this.m_proxyCount = 0;
+this.m_density = e(t.density, 0);
+};
+t.prototype.Destroy = function() {};
+t.prototype.CreateProxies = function(t) {
+var e = this.m_body.m_world.m_contactManager.m_broadPhase;
+this.m_proxyCount = this.m_shape.GetChildCount();
+for (var i = 0; i < this.m_proxyCount; ++i) {
+var n = this.m_proxies[i] = new oi(this);
+this.m_shape.ComputeAABB(n.aabb, t, i);
+n.treeNode = e.CreateProxy(n.aabb, n);
+n.childIndex = i;
+}
+};
+t.prototype.DestroyProxies = function() {
+for (var t = this.m_body.m_world.m_contactManager.m_broadPhase, e = 0; e < this.m_proxyCount; ++e) {
+var i = this.m_proxies[e];
+delete i.treeNode.userData;
+t.DestroyProxy(i.treeNode);
+delete i.treeNode;
+}
+this.m_proxyCount = 0;
+};
+t.prototype.TouchProxies = function() {
+for (var t = this.m_body.m_world.m_contactManager.m_broadPhase, e = this.m_proxyCount, i = 0; i < e; ++i) t.TouchProxy(this.m_proxies[i].treeNode);
+};
+t.prototype.Synchronize = function(e, i) {
+if (0 !== this.m_proxyCount) for (var n = this.m_body.m_world.m_contactManager.m_broadPhase, r = 0; r < this.m_proxyCount; ++r) {
+var s = this.m_proxies[r], o = t.Synchronize_s_aabb1, a = t.Synchronize_s_aabb2;
+this.m_shape.ComputeAABB(o, e, r);
+this.m_shape.ComputeAABB(a, i, r);
+s.aabb.Combine2(o, a);
+var c = P.SubVV(i.p, e.p, t.Synchronize_s_displacement);
+n.MoveProxy(s.treeNode, s.aabb, c);
+}
+};
+t.Synchronize_s_aabb1 = new Tt();
+t.Synchronize_s_aabb2 = new Tt();
+t.Synchronize_s_displacement = new P();
+return t;
+})();
+(function(t) {
+t[t.b2_unknown = -1] = "b2_unknown";
+t[t.b2_staticBody = 0] = "b2_staticBody";
+t[t.b2_kinematicBody = 1] = "b2_kinematicBody";
+t[t.b2_dynamicBody = 2] = "b2_dynamicBody";
+})(t.b2BodyType || (t.b2BodyType = {}));
+var ci = (function() {
+return function() {
+this.type = t.b2BodyType.b2_staticBody;
+this.position = new P(0, 0);
+this.angle = 0;
+this.linearVelocity = new P(0, 0);
+this.angularVelocity = 0;
+this.linearDamping = 0;
+this.angularDamping = 0;
+this.allowSleep = !0;
+this.awake = !0;
+this.fixedRotation = !1;
+this.bullet = !1;
+this.active = !0;
+this.userData = null;
+this.gravityScale = 1;
+};
+})(), li = (function() {
+function i(i, n) {
+this.m_type = t.b2BodyType.b2_staticBody;
+this.m_islandFlag = !1;
+this.m_awakeFlag = !1;
+this.m_autoSleepFlag = !1;
+this.m_bulletFlag = !1;
+this.m_fixedRotationFlag = !1;
+this.m_activeFlag = !1;
+this.m_toiFlag = !1;
+this.m_islandIndex = 0;
+this.m_xf = new N();
+this.m_xf0 = new N();
+this.m_sweep = new k();
+this.m_linearVelocity = new P();
+this.m_angularVelocity = 0;
+this.m_force = new P();
+this.m_torque = 0;
+this.m_prev = null;
+this.m_next = null;
+this.m_fixtureList = null;
+this.m_fixtureCount = 0;
+this.m_jointList = null;
+this.m_contactList = null;
+this.m_mass = 1;
+this.m_invMass = 1;
+this.m_I = 0;
+this.m_invI = 0;
+this.m_linearDamping = 0;
+this.m_angularDamping = 0;
+this.m_gravityScale = 1;
+this.m_sleepTime = 0;
+this.m_userData = null;
+this.m_controllerList = null;
+this.m_controllerCount = 0;
+this.m_bulletFlag = e(i.bullet, !1);
+this.m_fixedRotationFlag = e(i.fixedRotation, !1);
+this.m_autoSleepFlag = e(i.allowSleep, !0);
+this.m_awakeFlag = e(i.awake, !0);
+this.m_activeFlag = e(i.active, !0);
+this.m_world = n;
+this.m_xf.p.Copy(e(i.position, P.ZERO));
+this.m_xf.q.SetAngle(e(i.angle, 0));
+this.m_xf0.Copy(this.m_xf);
+this.m_sweep.localCenter.SetZero();
+this.m_sweep.c0.Copy(this.m_xf.p);
+this.m_sweep.c.Copy(this.m_xf.p);
+this.m_sweep.a0 = this.m_sweep.a = this.m_xf.q.GetAngle();
+this.m_sweep.alpha0 = 0;
+this.m_linearVelocity.Copy(e(i.linearVelocity, P.ZERO));
+this.m_angularVelocity = e(i.angularVelocity, 0);
+this.m_linearDamping = e(i.linearDamping, 0);
+this.m_angularDamping = e(i.angularDamping, 0);
+this.m_gravityScale = e(i.gravityScale, 1);
+this.m_force.SetZero();
+this.m_torque = 0;
+this.m_sleepTime = 0;
+this.m_type = e(i.type, t.b2BodyType.b2_staticBody);
+if (i.type === t.b2BodyType.b2_dynamicBody) {
+this.m_mass = 1;
+this.m_invMass = 1;
+} else {
+this.m_mass = 0;
+this.m_invMass = 0;
+}
+this.m_I = 0;
+this.m_invI = 0;
+this.m_userData = i.userData;
+this.m_fixtureList = null;
+this.m_fixtureCount = 0;
+this.m_controllerList = null;
+this.m_controllerCount = 0;
+}
+i.prototype.CreateFixture = function(t, e) {
+void 0 === e && (e = 0);
+return t instanceof Ke ? this.CreateFixtureShapeDensity(t, e) : this.CreateFixtureDef(t);
+};
+i.prototype.CreateFixtureDef = function(t) {
+if (this.m_world.IsLocked()) throw new Error();
+var e = new ai(t, this);
+e.Create(t);
+this.m_activeFlag && e.CreateProxies(this.m_xf);
+e.m_next = this.m_fixtureList;
+this.m_fixtureList = e;
+++this.m_fixtureCount;
+e.m_density > 0 && this.ResetMassData();
+this.m_world.m_newFixture = !0;
+return e;
+};
+i.prototype.CreateFixtureShapeDensity = function(t, e) {
+void 0 === e && (e = 0);
+var n = i.CreateFixtureShapeDensity_s_def;
+n.shape = t;
+n.density = e;
+return this.CreateFixtureDef(n);
+};
+i.prototype.DestroyFixture = function(t) {
+if (this.m_world.IsLocked()) throw new Error();
+for (var e = this.m_fixtureList, i = null; null !== e; ) {
+if (e === t) {
+i ? i.m_next = t.m_next : this.m_fixtureList = t.m_next;
+break;
+}
+i = e;
+e = e.m_next;
+}
+for (var n = this.m_contactList; n; ) {
+var r = n.contact;
+n = n.next;
+var s = r.GetFixtureA(), o = r.GetFixtureB();
+t !== s && t !== o || this.m_world.m_contactManager.Destroy(r);
+}
+this.m_activeFlag && t.DestroyProxies();
+t.m_next = null;
+t.Destroy();
+--this.m_fixtureCount;
+this.ResetMassData();
+};
+i.prototype.SetTransformVec = function(t, e) {
+this.SetTransformXY(t.x, t.y, e);
+};
+i.prototype.SetTransformXY = function(t, e, i) {
+if (this.m_world.IsLocked()) throw new Error();
+this.m_xf.q.SetAngle(i);
+this.m_xf.p.Set(t, e);
+this.m_xf0.Copy(this.m_xf);
+N.MulXV(this.m_xf, this.m_sweep.localCenter, this.m_sweep.c);
+this.m_sweep.a = i;
+this.m_sweep.c0.Copy(this.m_sweep.c);
+this.m_sweep.a0 = i;
+for (var n = this.m_fixtureList; n; n = n.m_next) n.Synchronize(this.m_xf, this.m_xf);
+this.m_world.m_contactManager.FindNewContacts();
+};
+i.prototype.SetTransform = function(t) {
+this.SetTransformVec(t.p, t.GetAngle());
+};
+i.prototype.GetTransform = function() {
+return this.m_xf;
+};
+i.prototype.GetPosition = function() {
+return this.m_xf.p;
+};
+i.prototype.SetPosition = function(t) {
+this.SetTransformVec(t, this.GetAngle());
+};
+i.prototype.SetPositionXY = function(t, e) {
+this.SetTransformXY(t, e, this.GetAngle());
+};
+i.prototype.GetAngle = function() {
+return this.m_sweep.a;
+};
+i.prototype.SetAngle = function(t) {
+this.SetTransformVec(this.GetPosition(), t);
+};
+i.prototype.GetWorldCenter = function() {
+return this.m_sweep.c;
+};
+i.prototype.GetLocalCenter = function() {
+return this.m_sweep.localCenter;
+};
+i.prototype.SetLinearVelocity = function(e) {
+if (this.m_type !== t.b2BodyType.b2_staticBody) {
+P.DotVV(e, e) > 0 && this.SetAwake(!0);
+this.m_linearVelocity.Copy(e);
+}
+};
+i.prototype.GetLinearVelocity = function() {
+return this.m_linearVelocity;
+};
+i.prototype.SetAngularVelocity = function(e) {
+if (this.m_type !== t.b2BodyType.b2_staticBody) {
+e * e > 0 && this.SetAwake(!0);
+this.m_angularVelocity = e;
+}
+};
+i.prototype.GetAngularVelocity = function() {
+return this.m_angularVelocity;
+};
+i.prototype.GetDefinition = function(t) {
+t.type = this.GetType();
+t.allowSleep = this.m_autoSleepFlag;
+t.angle = this.GetAngle();
+t.angularDamping = this.m_angularDamping;
+t.gravityScale = this.m_gravityScale;
+t.angularVelocity = this.m_angularVelocity;
+t.fixedRotation = this.m_fixedRotationFlag;
+t.bullet = this.m_bulletFlag;
+t.awake = this.m_awakeFlag;
+t.linearDamping = this.m_linearDamping;
+t.linearVelocity.Copy(this.GetLinearVelocity());
+t.position.Copy(this.GetPosition());
+t.userData = this.GetUserData();
+return t;
+};
+i.prototype.ApplyForce = function(e, i, n) {
+void 0 === n && (n = !0);
+if (this.m_type === t.b2BodyType.b2_dynamicBody) {
+n && !this.m_awakeFlag && this.SetAwake(!0);
+if (this.m_awakeFlag) {
+this.m_force.x += e.x;
+this.m_force.y += e.y;
+this.m_torque += (i.x - this.m_sweep.c.x) * e.y - (i.y - this.m_sweep.c.y) * e.x;
+}
+}
+};
+i.prototype.ApplyForceToCenter = function(e, i) {
+void 0 === i && (i = !0);
+if (this.m_type === t.b2BodyType.b2_dynamicBody) {
+i && !this.m_awakeFlag && this.SetAwake(!0);
+if (this.m_awakeFlag) {
+this.m_force.x += e.x;
+this.m_force.y += e.y;
+}
+}
+};
+i.prototype.ApplyTorque = function(e, i) {
+void 0 === i && (i = !0);
+if (this.m_type === t.b2BodyType.b2_dynamicBody) {
+i && !this.m_awakeFlag && this.SetAwake(!0);
+this.m_awakeFlag && (this.m_torque += e);
+}
+};
+i.prototype.ApplyLinearImpulse = function(e, i, n) {
+void 0 === n && (n = !0);
+if (this.m_type === t.b2BodyType.b2_dynamicBody) {
+n && !this.m_awakeFlag && this.SetAwake(!0);
+if (this.m_awakeFlag) {
+this.m_linearVelocity.x += this.m_invMass * e.x;
+this.m_linearVelocity.y += this.m_invMass * e.y;
+this.m_angularVelocity += this.m_invI * ((i.x - this.m_sweep.c.x) * e.y - (i.y - this.m_sweep.c.y) * e.x);
+}
+}
+};
+i.prototype.ApplyLinearImpulseToCenter = function(e, i) {
+void 0 === i && (i = !0);
+if (this.m_type === t.b2BodyType.b2_dynamicBody) {
+i && !this.m_awakeFlag && this.SetAwake(!0);
+if (this.m_awakeFlag) {
+this.m_linearVelocity.x += this.m_invMass * e.x;
+this.m_linearVelocity.y += this.m_invMass * e.y;
+}
+}
+};
+i.prototype.ApplyAngularImpulse = function(e, i) {
+void 0 === i && (i = !0);
+if (this.m_type === t.b2BodyType.b2_dynamicBody) {
+i && !this.m_awakeFlag && this.SetAwake(!0);
+this.m_awakeFlag && (this.m_angularVelocity += this.m_invI * e);
+}
+};
+i.prototype.GetMass = function() {
+return this.m_mass;
+};
+i.prototype.GetInertia = function() {
+return this.m_I + this.m_mass * P.DotVV(this.m_sweep.localCenter, this.m_sweep.localCenter);
+};
+i.prototype.GetMassData = function(t) {
+t.mass = this.m_mass;
+t.I = this.m_I + this.m_mass * P.DotVV(this.m_sweep.localCenter, this.m_sweep.localCenter);
+t.center.Copy(this.m_sweep.localCenter);
+return t;
+};
+i.prototype.SetMassData = function(e) {
+if (this.m_world.IsLocked()) throw new Error();
+if (this.m_type === t.b2BodyType.b2_dynamicBody) {
+this.m_invMass = 0;
+this.m_I = 0;
+this.m_invI = 0;
+this.m_mass = e.mass;
+this.m_mass <= 0 && (this.m_mass = 1);
+this.m_invMass = 1 / this.m_mass;
+if (e.I > 0 && !this.m_fixedRotationFlag) {
+this.m_I = e.I - this.m_mass * P.DotVV(e.center, e.center);
+this.m_invI = 1 / this.m_I;
+}
+var n = i.SetMassData_s_oldCenter.Copy(this.m_sweep.c);
+this.m_sweep.localCenter.Copy(e.center);
+N.MulXV(this.m_xf, this.m_sweep.localCenter, this.m_sweep.c);
+this.m_sweep.c0.Copy(this.m_sweep.c);
+P.AddVCrossSV(this.m_linearVelocity, this.m_angularVelocity, P.SubVV(this.m_sweep.c, n, P.s_t0), this.m_linearVelocity);
+}
+};
+i.prototype.ResetMassData = function() {
+this.m_mass = 0;
+this.m_invMass = 0;
+this.m_I = 0;
+this.m_invI = 0;
+this.m_sweep.localCenter.SetZero();
+if (this.m_type !== t.b2BodyType.b2_staticBody && this.m_type !== t.b2BodyType.b2_kinematicBody) {
+for (var e = i.ResetMassData_s_localCenter.SetZero(), n = this.m_fixtureList; n; n = n.m_next) if (0 !== n.m_density) {
+var r = n.GetMassData(i.ResetMassData_s_massData);
+this.m_mass += r.mass;
+e.x += r.center.x * r.mass;
+e.y += r.center.y * r.mass;
+this.m_I += r.I;
+}
+if (this.m_mass > 0) {
+this.m_invMass = 1 / this.m_mass;
+e.x *= this.m_invMass;
+e.y *= this.m_invMass;
+} else {
+this.m_mass = 1;
+this.m_invMass = 1;
+}
+if (this.m_I > 0 && !this.m_fixedRotationFlag) {
+this.m_I -= this.m_mass * P.DotVV(e, e);
+this.m_invI = 1 / this.m_I;
+} else {
+this.m_I = 0;
+this.m_invI = 0;
+}
+var s = i.ResetMassData_s_oldCenter.Copy(this.m_sweep.c);
+this.m_sweep.localCenter.Copy(e);
+N.MulXV(this.m_xf, this.m_sweep.localCenter, this.m_sweep.c);
+this.m_sweep.c0.Copy(this.m_sweep.c);
+P.AddVCrossSV(this.m_linearVelocity, this.m_angularVelocity, P.SubVV(this.m_sweep.c, s, P.s_t0), this.m_linearVelocity);
+} else {
+this.m_sweep.c0.Copy(this.m_xf.p);
+this.m_sweep.c.Copy(this.m_xf.p);
+this.m_sweep.a0 = this.m_sweep.a;
+}
+};
+i.prototype.GetWorldPoint = function(t, e) {
+return N.MulXV(this.m_xf, t, e);
+};
+i.prototype.GetWorldVector = function(t, e) {
+return V.MulRV(this.m_xf.q, t, e);
+};
+i.prototype.GetLocalPoint = function(t, e) {
+return N.MulTXV(this.m_xf, t, e);
+};
+i.prototype.GetLocalVector = function(t, e) {
+return V.MulTRV(this.m_xf.q, t, e);
+};
+i.prototype.GetLinearVelocityFromWorldPoint = function(t, e) {
+return P.AddVCrossSV(this.m_linearVelocity, this.m_angularVelocity, P.SubVV(t, this.m_sweep.c, P.s_t0), e);
+};
+i.prototype.GetLinearVelocityFromLocalPoint = function(t, e) {
+return this.GetLinearVelocityFromWorldPoint(this.GetWorldPoint(t, e), e);
+};
+i.prototype.GetLinearDamping = function() {
+return this.m_linearDamping;
+};
+i.prototype.SetLinearDamping = function(t) {
+this.m_linearDamping = t;
+};
+i.prototype.GetAngularDamping = function() {
+return this.m_angularDamping;
+};
+i.prototype.SetAngularDamping = function(t) {
+this.m_angularDamping = t;
+};
+i.prototype.GetGravityScale = function() {
+return this.m_gravityScale;
+};
+i.prototype.SetGravityScale = function(t) {
+this.m_gravityScale = t;
+};
+i.prototype.SetType = function(e) {
+if (this.m_world.IsLocked()) throw new Error();
+if (this.m_type !== e) {
+this.m_type = e;
+this.ResetMassData();
+if (this.m_type === t.b2BodyType.b2_staticBody) {
+this.m_linearVelocity.SetZero();
+this.m_angularVelocity = 0;
+this.m_sweep.a0 = this.m_sweep.a;
+this.m_sweep.c0.Copy(this.m_sweep.c);
+this.SynchronizeFixtures();
+}
+this.SetAwake(!0);
+this.m_force.SetZero();
+this.m_torque = 0;
+for (var i = this.m_contactList; i; ) {
+var n = i;
+i = i.next;
+this.m_world.m_contactManager.Destroy(n.contact);
+}
+this.m_contactList = null;
+for (var r = this.m_fixtureList; r; r = r.m_next) r.TouchProxies();
+}
+};
+i.prototype.GetType = function() {
+return this.m_type;
+};
+i.prototype.SetBullet = function(t) {
+this.m_bulletFlag = t;
+};
+i.prototype.IsBullet = function() {
+return this.m_bulletFlag;
+};
+i.prototype.SetSleepingAllowed = function(t) {
+this.m_autoSleepFlag = t;
+t || this.SetAwake(!0);
+};
+i.prototype.IsSleepingAllowed = function() {
+return this.m_autoSleepFlag;
+};
+i.prototype.SetAwake = function(t) {
+if (t) {
+this.m_awakeFlag = !0;
+this.m_sleepTime = 0;
+} else {
+this.m_awakeFlag = !1;
+this.m_sleepTime = 0;
+this.m_linearVelocity.SetZero();
+this.m_angularVelocity = 0;
+this.m_force.SetZero();
+this.m_torque = 0;
+}
+};
+i.prototype.IsAwake = function() {
+return this.m_awakeFlag;
+};
+i.prototype.SetActive = function(t) {
+if (this.m_world.IsLocked()) throw new Error();
+if (t !== this.IsActive()) {
+this.m_activeFlag = t;
+if (t) for (var e = this.m_fixtureList; e; e = e.m_next) e.CreateProxies(this.m_xf); else {
+for (e = this.m_fixtureList; e; e = e.m_next) e.DestroyProxies();
+for (var i = this.m_contactList; i; ) {
+var n = i;
+i = i.next;
+this.m_world.m_contactManager.Destroy(n.contact);
+}
+this.m_contactList = null;
+}
+}
+};
+i.prototype.IsActive = function() {
+return this.m_activeFlag;
+};
+i.prototype.SetFixedRotation = function(t) {
+if (this.m_fixedRotationFlag !== t) {
+this.m_fixedRotationFlag = t;
+this.m_angularVelocity = 0;
+this.ResetMassData();
+}
+};
+i.prototype.IsFixedRotation = function() {
+return this.m_fixedRotationFlag;
+};
+i.prototype.GetFixtureList = function() {
+return this.m_fixtureList;
+};
+i.prototype.GetJointList = function() {
+return this.m_jointList;
+};
+i.prototype.GetContactList = function() {
+return this.m_contactList;
+};
+i.prototype.GetNext = function() {
+return this.m_next;
+};
+i.prototype.GetUserData = function() {
+return this.m_userData;
+};
+i.prototype.SetUserData = function(t) {
+this.m_userData = t;
+};
+i.prototype.GetWorld = function() {
+return this.m_world;
+};
+i.prototype.Dump = function(e) {
+var i = this.m_islandIndex;
+e("{\n");
+e(" const bd: b2BodyDef = new b2BodyDef();\n");
+var n = "";
+switch (this.m_type) {
+case t.b2BodyType.b2_staticBody:
+n = "b2BodyType.b2_staticBody";
+break;
+
+case t.b2BodyType.b2_kinematicBody:
+n = "b2BodyType.b2_kinematicBody";
+break;
+
+case t.b2BodyType.b2_dynamicBody:
+n = "b2BodyType.b2_dynamicBody";
+}
+e(" bd.type = %s;\n", n);
+e(" bd.position.Set(%.15f, %.15f);\n", this.m_xf.p.x, this.m_xf.p.y);
+e(" bd.angle = %.15f;\n", this.m_sweep.a);
+e(" bd.linearVelocity.Set(%.15f, %.15f);\n", this.m_linearVelocity.x, this.m_linearVelocity.y);
+e(" bd.angularVelocity = %.15f;\n", this.m_angularVelocity);
+e(" bd.linearDamping = %.15f;\n", this.m_linearDamping);
+e(" bd.angularDamping = %.15f;\n", this.m_angularDamping);
+e(" bd.allowSleep = %s;\n", this.m_autoSleepFlag ? "true" : "false");
+e(" bd.awake = %s;\n", this.m_awakeFlag ? "true" : "false");
+e(" bd.fixedRotation = %s;\n", this.m_fixedRotationFlag ? "true" : "false");
+e(" bd.bullet = %s;\n", this.m_bulletFlag ? "true" : "false");
+e(" bd.active = %s;\n", this.m_activeFlag ? "true" : "false");
+e(" bd.gravityScale = %.15f;\n", this.m_gravityScale);
+e("\n");
+e(" bodies[%d] = this.m_world.CreateBody(bd);\n", this.m_islandIndex);
+e("\n");
+for (var r = this.m_fixtureList; r; r = r.m_next) {
+e(" {\n");
+r.Dump(e, i);
+e(" }\n");
+}
+e("}\n");
+};
+i.prototype.SynchronizeFixtures = function() {
+var t = i.SynchronizeFixtures_s_xf1;
+t.q.SetAngle(this.m_sweep.a0);
+V.MulRV(t.q, this.m_sweep.localCenter, t.p);
+P.SubVV(this.m_sweep.c0, t.p, t.p);
+for (var e = this.m_fixtureList; e; e = e.m_next) e.Synchronize(t, this.m_xf);
+};
+i.prototype.SynchronizeTransform = function() {
+this.m_xf.q.SetAngle(this.m_sweep.a);
+V.MulRV(this.m_xf.q, this.m_sweep.localCenter, this.m_xf.p);
+P.SubVV(this.m_sweep.c, this.m_xf.p, this.m_xf.p);
+};
+i.prototype.ShouldCollide = function(e) {
+return (this.m_type !== t.b2BodyType.b2_staticBody || e.m_type !== t.b2BodyType.b2_staticBody) && this.ShouldCollideConnected(e);
+};
+i.prototype.ShouldCollideConnected = function(t) {
+for (var e = this.m_jointList; e; e = e.next) if (e.other === t && !e.joint.m_collideConnected) return !1;
+return !0;
+};
+i.prototype.Advance = function(t) {
+this.m_sweep.Advance(t);
+this.m_sweep.c.Copy(this.m_sweep.c0);
+this.m_sweep.a = this.m_sweep.a0;
+this.m_xf.q.SetAngle(this.m_sweep.a);
+V.MulRV(this.m_xf.q, this.m_sweep.localCenter, this.m_xf.p);
+P.SubVV(this.m_sweep.c, this.m_xf.p, this.m_xf.p);
+};
+i.prototype.GetControllerList = function() {
+return this.m_controllerList;
+};
+i.prototype.GetControllerCount = function() {
+return this.m_controllerCount;
+};
+i.CreateFixtureShapeDensity_s_def = new si();
+i.SetMassData_s_oldCenter = new P();
+i.ResetMassData_s_localCenter = new P();
+i.ResetMassData_s_oldCenter = new P();
+i.ResetMassData_s_massData = new Ze();
+i.SynchronizeFixtures_s_xf1 = new N();
+return i;
+})();
+(function(t) {
+t[t.e_unknownJoint = 0] = "e_unknownJoint";
+t[t.e_revoluteJoint = 1] = "e_revoluteJoint";
+t[t.e_prismaticJoint = 2] = "e_prismaticJoint";
+t[t.e_distanceJoint = 3] = "e_distanceJoint";
+t[t.e_pulleyJoint = 4] = "e_pulleyJoint";
+t[t.e_mouseJoint = 5] = "e_mouseJoint";
+t[t.e_gearJoint = 6] = "e_gearJoint";
+t[t.e_wheelJoint = 7] = "e_wheelJoint";
+t[t.e_weldJoint = 8] = "e_weldJoint";
+t[t.e_frictionJoint = 9] = "e_frictionJoint";
+t[t.e_ropeJoint = 10] = "e_ropeJoint";
+t[t.e_motorJoint = 11] = "e_motorJoint";
+t[t.e_areaJoint = 12] = "e_areaJoint";
+})(t.b2JointType || (t.b2JointType = {}));
+(function(t) {
+t[t.e_inactiveLimit = 0] = "e_inactiveLimit";
+t[t.e_atLowerLimit = 1] = "e_atLowerLimit";
+t[t.e_atUpperLimit = 2] = "e_atUpperLimit";
+t[t.e_equalLimits = 3] = "e_equalLimits";
+})(t.b2LimitState || (t.b2LimitState = {}));
+var hi = (function() {
+function t() {
+this.linear = new P();
+this.angularA = 0;
+this.angularB = 0;
+}
+t.prototype.SetZero = function() {
+this.linear.SetZero();
+this.angularA = 0;
+this.angularB = 0;
+return this;
+};
+t.prototype.Set = function(t, e, i) {
+this.linear.Copy(t);
+this.angularA = e;
+this.angularB = i;
+return this;
+};
+return t;
+})(), ui = (function() {
+return function(t, e) {
+this.prev = null;
+this.next = null;
+this.joint = t;
+this.other = e;
+};
+})(), _i = (function() {
+return function(e) {
+this.type = t.b2JointType.e_unknownJoint;
+this.userData = null;
+this.collideConnected = !1;
+this.type = e;
+};
+})(), fi = (function() {
+function i(i) {
+this.m_type = t.b2JointType.e_unknownJoint;
+this.m_prev = null;
+this.m_next = null;
+this.m_index = 0;
+this.m_islandFlag = !1;
+this.m_collideConnected = !1;
+this.m_userData = null;
+this.m_type = i.type;
+this.m_edgeA = new ui(this, i.bodyB);
+this.m_edgeB = new ui(this, i.bodyA);
+this.m_bodyA = i.bodyA;
+this.m_bodyB = i.bodyB;
+this.m_collideConnected = e(i.collideConnected, !1);
+this.m_userData = i.userData;
+}
+i.prototype.GetType = function() {
+return this.m_type;
+};
+i.prototype.GetBodyA = function() {
+return this.m_bodyA;
+};
+i.prototype.GetBodyB = function() {
+return this.m_bodyB;
+};
+i.prototype.GetNext = function() {
+return this.m_next;
+};
+i.prototype.GetUserData = function() {
+return this.m_userData;
+};
+i.prototype.SetUserData = function(t) {
+this.m_userData = t;
+};
+i.prototype.IsActive = function() {
+return this.m_bodyA.IsActive() && this.m_bodyB.IsActive();
+};
+i.prototype.GetCollideConnected = function() {
+return this.m_collideConnected;
+};
+i.prototype.Dump = function(t) {
+t("// Dump is not supported for this joint type.\n");
+};
+i.prototype.ShiftOrigin = function(t) {};
+return i;
+})(), di = (function(e) {
+$e(i, e);
+function i() {
+var i = e.call(this, t.b2JointType.e_distanceJoint) || this;
+i.localAnchorA = new P();
+i.localAnchorB = new P();
+i.length = 1;
+i.frequencyHz = 0;
+i.dampingRatio = 0;
+return i;
+}
+i.prototype.Initialize = function(t, e, i, n) {
+this.bodyA = t;
+this.bodyB = e;
+this.bodyA.GetLocalPoint(i, this.localAnchorA);
+this.bodyB.GetLocalPoint(n, this.localAnchorB);
+this.length = P.DistanceVV(i, n);
+this.frequencyHz = 0;
+this.dampingRatio = 0;
+};
+return i;
+})(_i), mi = (function(t) {
+$e(i, t);
+function i(i) {
+var n = t.call(this, i) || this;
+n.m_frequencyHz = 0;
+n.m_dampingRatio = 0;
+n.m_bias = 0;
+n.m_localAnchorA = new P();
+n.m_localAnchorB = new P();
+n.m_gamma = 0;
+n.m_impulse = 0;
+n.m_length = 0;
+n.m_indexA = 0;
+n.m_indexB = 0;
+n.m_u = new P();
+n.m_rA = new P();
+n.m_rB = new P();
+n.m_localCenterA = new P();
+n.m_localCenterB = new P();
+n.m_invMassA = 0;
+n.m_invMassB = 0;
+n.m_invIA = 0;
+n.m_invIB = 0;
+n.m_mass = 0;
+n.m_qA = new V();
+n.m_qB = new V();
+n.m_lalcA = new P();
+n.m_lalcB = new P();
+n.m_frequencyHz = e(i.frequencyHz, 0);
+n.m_dampingRatio = e(i.dampingRatio, 0);
+n.m_localAnchorA.Copy(i.localAnchorA);
+n.m_localAnchorB.Copy(i.localAnchorB);
+n.m_length = i.length;
+return n;
+}
+i.prototype.GetAnchorA = function(t) {
+return this.m_bodyA.GetWorldPoint(this.m_localAnchorA, t);
+};
+i.prototype.GetAnchorB = function(t) {
+return this.m_bodyB.GetWorldPoint(this.m_localAnchorB, t);
+};
+i.prototype.GetReactionForce = function(t, e) {
+e.x = t * this.m_impulse * this.m_u.x;
+e.y = t * this.m_impulse * this.m_u.y;
+return e;
+};
+i.prototype.GetReactionTorque = function(t) {
+return 0;
+};
+i.prototype.GetLocalAnchorA = function() {
+return this.m_localAnchorA;
+};
+i.prototype.GetLocalAnchorB = function() {
+return this.m_localAnchorB;
+};
+i.prototype.SetLength = function(t) {
+this.m_length = t;
+};
+i.prototype.Length = function() {
+return this.m_length;
+};
+i.prototype.SetFrequency = function(t) {
+this.m_frequencyHz = t;
+};
+i.prototype.GetFrequency = function() {
+return this.m_frequencyHz;
+};
+i.prototype.SetDampingRatio = function(t) {
+this.m_dampingRatio = t;
+};
+i.prototype.GetDampingRatio = function() {
+return this.m_dampingRatio;
+};
+i.prototype.Dump = function(t) {
+var e = this.m_bodyA.m_islandIndex, i = this.m_bodyB.m_islandIndex;
+t(" const jd: b2DistanceJointDef = new b2DistanceJointDef();\n");
+t(" jd.bodyA = bodies[%d];\n", e);
+t(" jd.bodyB = bodies[%d];\n", i);
+t(" jd.collideConnected = %s;\n", this.m_collideConnected ? "true" : "false");
+t(" jd.localAnchorA.Set(%.15f, %.15f);\n", this.m_localAnchorA.x, this.m_localAnchorA.y);
+t(" jd.localAnchorB.Set(%.15f, %.15f);\n", this.m_localAnchorB.x, this.m_localAnchorB.y);
+t(" jd.length = %.15f;\n", this.m_length);
+t(" jd.frequencyHz = %.15f;\n", this.m_frequencyHz);
+t(" jd.dampingRatio = %.15f;\n", this.m_dampingRatio);
+t(" joints[%d] = this.m_world.CreateJoint(jd);\n", this.m_index);
+};
+i.prototype.InitVelocityConstraints = function(t) {
+this.m_indexA = this.m_bodyA.m_islandIndex;
+this.m_indexB = this.m_bodyB.m_islandIndex;
+this.m_localCenterA.Copy(this.m_bodyA.m_sweep.localCenter);
+this.m_localCenterB.Copy(this.m_bodyB.m_sweep.localCenter);
+this.m_invMassA = this.m_bodyA.m_invMass;
+this.m_invMassB = this.m_bodyB.m_invMass;
+this.m_invIA = this.m_bodyA.m_invI;
+this.m_invIB = this.m_bodyB.m_invI;
+var e = t.positions[this.m_indexA].c, n = t.positions[this.m_indexA].a, r = t.velocities[this.m_indexA].v, o = t.velocities[this.m_indexA].w, a = t.positions[this.m_indexB].c, l = t.positions[this.m_indexB].a, h = t.velocities[this.m_indexB].v, u = t.velocities[this.m_indexB].w, _ = this.m_qA.SetAngle(n), f = this.m_qB.SetAngle(l);
+P.SubVV(this.m_localAnchorA, this.m_localCenterA, this.m_lalcA);
+V.MulRV(_, this.m_lalcA, this.m_rA);
+P.SubVV(this.m_localAnchorB, this.m_localCenterB, this.m_lalcB);
+V.MulRV(f, this.m_lalcB, this.m_rB);
+this.m_u.x = a.x + this.m_rB.x - e.x - this.m_rA.x;
+this.m_u.y = a.y + this.m_rB.y - e.y - this.m_rA.y;
+var d = this.m_u.Length();
+d > c ? this.m_u.SelfMul(1 / d) : this.m_u.SetZero();
+var m = P.CrossVV(this.m_rA, this.m_u), p = P.CrossVV(this.m_rB, this.m_u), v = this.m_invMassA + this.m_invIA * m * m + this.m_invMassB + this.m_invIB * p * p;
+this.m_mass = 0 !== v ? 1 / v : 0;
+if (this.m_frequencyHz > 0) {
+var y = d - this.m_length, g = 2 * s * this.m_frequencyHz, x = 2 * this.m_mass * this.m_dampingRatio * g, C = this.m_mass * g * g, b = t.step.dt;
+this.m_gamma = b * (x + b * C);
+this.m_gamma = 0 !== this.m_gamma ? 1 / this.m_gamma : 0;
+this.m_bias = y * b * C * this.m_gamma;
+v += this.m_gamma;
+this.m_mass = 0 !== v ? 1 / v : 0;
+} else {
+this.m_gamma = 0;
+this.m_bias = 0;
+}
+if (t.step.warmStarting) {
+this.m_impulse *= t.step.dtRatio;
+var A = P.MulSV(this.m_impulse, this.m_u, i.InitVelocityConstraints_s_P);
+r.SelfMulSub(this.m_invMassA, A);
+o -= this.m_invIA * P.CrossVV(this.m_rA, A);
+h.SelfMulAdd(this.m_invMassB, A);
+u += this.m_invIB * P.CrossVV(this.m_rB, A);
+} else this.m_impulse = 0;
+t.velocities[this.m_indexA].w = o;
+t.velocities[this.m_indexB].w = u;
+};
+i.prototype.SolveVelocityConstraints = function(t) {
+var e = t.velocities[this.m_indexA].v, n = t.velocities[this.m_indexA].w, r = t.velocities[this.m_indexB].v, s = t.velocities[this.m_indexB].w, o = P.AddVCrossSV(e, n, this.m_rA, i.SolveVelocityConstraints_s_vpA), a = P.AddVCrossSV(r, s, this.m_rB, i.SolveVelocityConstraints_s_vpB), c = P.DotVV(this.m_u, P.SubVV(a, o, P.s_t0)), l = -this.m_mass * (c + this.m_bias + this.m_gamma * this.m_impulse);
+this.m_impulse += l;
+var h = P.MulSV(l, this.m_u, i.SolveVelocityConstraints_s_P);
+e.SelfMulSub(this.m_invMassA, h);
+n -= this.m_invIA * P.CrossVV(this.m_rA, h);
+r.SelfMulAdd(this.m_invMassB, h);
+s += this.m_invIB * P.CrossVV(this.m_rB, h);
+t.velocities[this.m_indexA].w = n;
+t.velocities[this.m_indexB].w = s;
+};
+i.prototype.SolvePositionConstraints = function(t) {
+if (this.m_frequencyHz > 0) return !0;
+var e = t.positions[this.m_indexA].c, n = t.positions[this.m_indexA].a, r = t.positions[this.m_indexB].c, s = t.positions[this.m_indexB].a, o = this.m_qA.SetAngle(n), a = this.m_qB.SetAngle(s), l = V.MulRV(o, this.m_lalcA, this.m_rA), h = V.MulRV(a, this.m_lalcB, this.m_rB), u = this.m_u;
+u.x = r.x + h.x - e.x - l.x;
+u.y = r.y + h.y - e.y - l.y;
+var _ = this.m_u.Normalize() - this.m_length;
+_ = C(_, -.2, .2);
+var f = -this.m_mass * _, d = P.MulSV(f, u, i.SolvePositionConstraints_s_P);
+e.SelfMulSub(this.m_invMassA, d);
+n -= this.m_invIA * P.CrossVV(l, d);
+r.SelfMulAdd(this.m_invMassB, d);
+s += this.m_invIB * P.CrossVV(h, d);
+t.positions[this.m_indexA].a = n;
+t.positions[this.m_indexB].a = s;
+return y(_) < c;
+};
+i.InitVelocityConstraints_s_P = new P();
+i.SolveVelocityConstraints_s_vpA = new P();
+i.SolveVelocityConstraints_s_vpB = new P();
+i.SolveVelocityConstraints_s_P = new P();
+i.SolvePositionConstraints_s_P = new P();
+return i;
+})(fi), pi = (function(e) {
+$e(i, e);
+function i() {
+var i = e.call(this, t.b2JointType.e_areaJoint) || this;
+i.bodies = [];
+i.frequencyHz = 0;
+i.dampingRatio = 0;
+return i;
+}
+i.prototype.AddBody = function(t) {
+this.bodies.push(t);
+1 === this.bodies.length ? this.bodyA = t : 2 === this.bodies.length && (this.bodyB = t);
+};
+return i;
+})(_i), vi = (function(t) {
+$e(i, t);
+function i(i) {
+var n = t.call(this, i) || this;
+n.m_frequencyHz = 0;
+n.m_dampingRatio = 0;
+n.m_impulse = 0;
+n.m_targetArea = 0;
+n.m_bodies = i.bodies;
+n.m_frequencyHz = e(i.frequencyHz, 0);
+n.m_dampingRatio = e(i.dampingRatio, 0);
+n.m_targetLengths = m(i.bodies.length);
+n.m_normals = P.MakeArray(i.bodies.length);
+n.m_joints = [];
+n.m_deltas = P.MakeArray(i.bodies.length);
+n.m_delta = new P();
+var r = new di();
+r.frequencyHz = n.m_frequencyHz;
+r.dampingRatio = n.m_dampingRatio;
+n.m_targetArea = 0;
+for (var s = 0; s < n.m_bodies.length; ++s) {
+var o = n.m_bodies[s], a = n.m_bodies[(s + 1) % n.m_bodies.length], c = o.GetWorldCenter(), l = a.GetWorldCenter();
+n.m_targetLengths[s] = P.DistanceVV(c, l);
+n.m_targetArea += P.CrossVV(c, l);
+r.Initialize(o, a, c, l);
+n.m_joints[s] = o.GetWorld().CreateJoint(r);
+}
+n.m_targetArea *= .5;
+return n;
+}
+i.prototype.GetAnchorA = function(t) {
+return t;
+};
+i.prototype.GetAnchorB = function(t) {
+return t;
+};
+i.prototype.GetReactionForce = function(t, e) {
+return e;
+};
+i.prototype.GetReactionTorque = function(t) {
+return 0;
+};
+i.prototype.SetFrequency = function(t) {
+this.m_frequencyHz = t;
+for (var e = 0; e < this.m_joints.length; ++e) this.m_joints[e].SetFrequency(t);
+};
+i.prototype.GetFrequency = function() {
+return this.m_frequencyHz;
+};
+i.prototype.SetDampingRatio = function(t) {
+this.m_dampingRatio = t;
+for (var e = 0; e < this.m_joints.length; ++e) this.m_joints[e].SetDampingRatio(t);
+};
+i.prototype.GetDampingRatio = function() {
+return this.m_dampingRatio;
+};
+i.prototype.Dump = function(t) {
+t("Area joint dumping is not supported.\n");
+};
+i.prototype.InitVelocityConstraints = function(t) {
+for (var e = 0; e < this.m_bodies.length; ++e) {
+var i = this.m_bodies[(e + this.m_bodies.length - 1) % this.m_bodies.length], n = this.m_bodies[(e + 1) % this.m_bodies.length], r = t.positions[i.m_islandIndex].c, s = t.positions[n.m_islandIndex].c, o = this.m_deltas[e];
+P.SubVV(s, r, o);
+}
+if (t.step.warmStarting) {
+this.m_impulse *= t.step.dtRatio;
+for (e = 0; e < this.m_bodies.length; ++e) {
+var a = this.m_bodies[e], c = t.velocities[a.m_islandIndex].v;
+o = this.m_deltas[e];
+c.x += a.m_invMass * o.y * .5 * this.m_impulse;
+c.y += a.m_invMass * -o.x * .5 * this.m_impulse;
+}
+} else this.m_impulse = 0;
+};
+i.prototype.SolveVelocityConstraints = function(t) {
+for (var e = 0, i = 0, n = 0; n < this.m_bodies.length; ++n) {
+var r = this.m_bodies[n], s = t.velocities[r.m_islandIndex].v;
+e += (a = this.m_deltas[n]).LengthSquared() / r.GetMass();
+i += P.CrossVV(s, a);
+}
+var o = -2 * i / e;
+this.m_impulse += o;
+for (n = 0; n < this.m_bodies.length; ++n) {
+r = this.m_bodies[n], s = t.velocities[r.m_islandIndex].v;
+var a = this.m_deltas[n];
+s.x += r.m_invMass * a.y * .5 * o;
+s.y += r.m_invMass * -a.x * .5 * o;
+}
+};
+i.prototype.SolvePositionConstraints = function(t) {
+for (var e = 0, i = 0, r = 0; r < this.m_bodies.length; ++r) {
+var s = this.m_bodies[r], o = this.m_bodies[(r + 1) % this.m_bodies.length], a = t.positions[s.m_islandIndex].c, l = t.positions[o.m_islandIndex].c, h = (f = P.SubVV(l, a, this.m_delta)).Length();
+h < n && (h = 1);
+this.m_normals[r].x = f.y / h;
+this.m_normals[r].y = -f.x / h;
+e += h;
+i += P.CrossVV(a, l);
+}
+i *= .5;
+var u = .5 * (this.m_targetArea - i) / e, _ = !0;
+for (r = 0; r < this.m_bodies.length; ++r) {
+s = this.m_bodies[r], a = t.positions[s.m_islandIndex].c;
+var f, d = (r + 1) % this.m_bodies.length;
+(f = P.AddVV(this.m_normals[r], this.m_normals[d], this.m_delta)).SelfMul(u);
+var m = f.LengthSquared();
+m > A(.2) && f.SelfMul(.2 / w(m));
+m > A(c) && (_ = !1);
+a.x += f.x;
+a.y += f.y;
+}
+return _;
+};
+return i;
+})(fi), yi = (function(e) {
+$e(i, e);
+function i() {
+var i = e.call(this, t.b2JointType.e_frictionJoint) || this;
+i.localAnchorA = new P();
+i.localAnchorB = new P();
+i.maxForce = 0;
+i.maxTorque = 0;
+return i;
+}
+i.prototype.Initialize = function(t, e, i) {
+this.bodyA = t;
+this.bodyB = e;
+this.bodyA.GetLocalPoint(i, this.localAnchorA);
+this.bodyB.GetLocalPoint(i, this.localAnchorB);
+};
+return i;
+})(_i), gi = (function(t) {
+$e(i, t);
+function i(i) {
+var n = t.call(this, i) || this;
+n.m_localAnchorA = new P();
+n.m_localAnchorB = new P();
+n.m_linearImpulse = new P();
+n.m_angularImpulse = 0;
+n.m_maxForce = 0;
+n.m_maxTorque = 0;
+n.m_indexA = 0;
+n.m_indexB = 0;
+n.m_rA = new P();
+n.m_rB = new P();
+n.m_localCenterA = new P();
+n.m_localCenterB = new P();
+n.m_invMassA = 0;
+n.m_invMassB = 0;
+n.m_invIA = 0;
+n.m_invIB = 0;
+n.m_linearMass = new F();
+n.m_angularMass = 0;
+n.m_qA = new V();
+n.m_qB = new V();
+n.m_lalcA = new P();
+n.m_lalcB = new P();
+n.m_K = new F();
+n.m_localAnchorA.Copy(i.localAnchorA);
+n.m_localAnchorB.Copy(i.localAnchorB);
+n.m_linearImpulse.SetZero();
+n.m_maxForce = e(i.maxForce, 0);
+n.m_maxTorque = e(i.maxTorque, 0);
+n.m_linearMass.SetZero();
+return n;
+}
+i.prototype.InitVelocityConstraints = function(t) {
+this.m_indexA = this.m_bodyA.m_islandIndex;
+this.m_indexB = this.m_bodyB.m_islandIndex;
+this.m_localCenterA.Copy(this.m_bodyA.m_sweep.localCenter);
+this.m_localCenterB.Copy(this.m_bodyB.m_sweep.localCenter);
+this.m_invMassA = this.m_bodyA.m_invMass;
+this.m_invMassB = this.m_bodyB.m_invMass;
+this.m_invIA = this.m_bodyA.m_invI;
+this.m_invIB = this.m_bodyB.m_invI;
+var e = t.positions[this.m_indexA].a, i = t.velocities[this.m_indexA].v, n = t.velocities[this.m_indexA].w, r = t.positions[this.m_indexB].a, s = t.velocities[this.m_indexB].v, o = t.velocities[this.m_indexB].w, a = this.m_qA.SetAngle(e), c = this.m_qB.SetAngle(r);
+P.SubVV(this.m_localAnchorA, this.m_localCenterA, this.m_lalcA);
+var l = V.MulRV(a, this.m_lalcA, this.m_rA);
+P.SubVV(this.m_localAnchorB, this.m_localCenterB, this.m_lalcB);
+var h = V.MulRV(c, this.m_lalcB, this.m_rB), u = this.m_invMassA, _ = this.m_invMassB, f = this.m_invIA, d = this.m_invIB, m = this.m_K;
+m.ex.x = u + _ + f * l.y * l.y + d * h.y * h.y;
+m.ex.y = -f * l.x * l.y - d * h.x * h.y;
+m.ey.x = m.ex.y;
+m.ey.y = u + _ + f * l.x * l.x + d * h.x * h.x;
+m.GetInverse(this.m_linearMass);
+this.m_angularMass = f + d;
+this.m_angularMass > 0 && (this.m_angularMass = 1 / this.m_angularMass);
+if (t.step.warmStarting) {
+this.m_linearImpulse.SelfMul(t.step.dtRatio);
+this.m_angularImpulse *= t.step.dtRatio;
+var p = this.m_linearImpulse;
+i.SelfMulSub(u, p);
+n -= f * (P.CrossVV(this.m_rA, p) + this.m_angularImpulse);
+s.SelfMulAdd(_, p);
+o += d * (P.CrossVV(this.m_rB, p) + this.m_angularImpulse);
+} else {
+this.m_linearImpulse.SetZero();
+this.m_angularImpulse = 0;
+}
+t.velocities[this.m_indexA].w = n;
+t.velocities[this.m_indexB].w = o;
+};
+i.prototype.SolveVelocityConstraints = function(t) {
+var e = t.velocities[this.m_indexA].v, n = t.velocities[this.m_indexA].w, r = t.velocities[this.m_indexB].v, s = t.velocities[this.m_indexB].w, o = this.m_invMassA, a = this.m_invMassB, c = this.m_invIA, l = this.m_invIB, h = t.step.dt, u = s - n, _ = -this.m_angularMass * u, f = this.m_angularImpulse, d = h * this.m_maxTorque;
+this.m_angularImpulse = C(this.m_angularImpulse + _, -d, d);
+n -= c * (_ = this.m_angularImpulse - f);
+s += l * _;
+var m = P.SubVV(P.AddVCrossSV(r, s, this.m_rB, P.s_t0), P.AddVCrossSV(e, n, this.m_rA, P.s_t1), i.SolveVelocityConstraints_s_Cdot_v2), p = F.MulMV(this.m_linearMass, m, i.SolveVelocityConstraints_s_impulseV).SelfNeg(), v = i.SolveVelocityConstraints_s_oldImpulseV.Copy(this.m_linearImpulse);
+this.m_linearImpulse.SelfAdd(p);
+d = h * this.m_maxForce;
+if (this.m_linearImpulse.LengthSquared() > d * d) {
+this.m_linearImpulse.Normalize();
+this.m_linearImpulse.SelfMul(d);
+}
+P.SubVV(this.m_linearImpulse, v, p);
+e.SelfMulSub(o, p);
+n -= c * P.CrossVV(this.m_rA, p);
+r.SelfMulAdd(a, p);
+s += l * P.CrossVV(this.m_rB, p);
+t.velocities[this.m_indexA].w = n;
+t.velocities[this.m_indexB].w = s;
+};
+i.prototype.SolvePositionConstraints = function(t) {
+return !0;
+};
+i.prototype.GetAnchorA = function(t) {
+return this.m_bodyA.GetWorldPoint(this.m_localAnchorA, t);
+};
+i.prototype.GetAnchorB = function(t) {
+return this.m_bodyB.GetWorldPoint(this.m_localAnchorB, t);
+};
+i.prototype.GetReactionForce = function(t, e) {
+e.x = t * this.m_linearImpulse.x;
+e.y = t * this.m_linearImpulse.y;
+return e;
+};
+i.prototype.GetReactionTorque = function(t) {
+return t * this.m_angularImpulse;
+};
+i.prototype.GetLocalAnchorA = function() {
+return this.m_localAnchorA;
+};
+i.prototype.GetLocalAnchorB = function() {
+return this.m_localAnchorB;
+};
+i.prototype.SetMaxForce = function(t) {
+this.m_maxForce = t;
+};
+i.prototype.GetMaxForce = function() {
+return this.m_maxForce;
+};
+i.prototype.SetMaxTorque = function(t) {
+this.m_maxTorque = t;
+};
+i.prototype.GetMaxTorque = function() {
+return this.m_maxTorque;
+};
+i.prototype.Dump = function(t) {
+var e = this.m_bodyA.m_islandIndex, i = this.m_bodyB.m_islandIndex;
+t(" const jd: b2FrictionJointDef = new b2FrictionJointDef();\n");
+t(" jd.bodyA = bodies[%d];\n", e);
+t(" jd.bodyB = bodies[%d];\n", i);
+t(" jd.collideConnected = %s;\n", this.m_collideConnected ? "true" : "false");
+t(" jd.localAnchorA.Set(%.15f, %.15f);\n", this.m_localAnchorA.x, this.m_localAnchorA.y);
+t(" jd.localAnchorB.Set(%.15f, %.15f);\n", this.m_localAnchorB.x, this.m_localAnchorB.y);
+t(" jd.maxForce = %.15f;\n", this.m_maxForce);
+t(" jd.maxTorque = %.15f;\n", this.m_maxTorque);
+t(" joints[%d] = this.m_world.CreateJoint(jd);\n", this.m_index);
+};
+i.SolveVelocityConstraints_s_Cdot_v2 = new P();
+i.SolveVelocityConstraints_s_impulseV = new P();
+i.SolveVelocityConstraints_s_oldImpulseV = new P();
+return i;
+})(fi), xi = (function(e) {
+$e(i, e);
+function i() {
+var i = e.call(this, t.b2JointType.e_gearJoint) || this;
+i.ratio = 1;
+return i;
+}
+return i;
+})(_i), Ci = (function(i) {
+$e(n, i);
+function n(n) {
+var r, s, o = i.call(this, n) || this;
+o.m_typeA = t.b2JointType.e_unknownJoint;
+o.m_typeB = t.b2JointType.e_unknownJoint;
+o.m_localAnchorA = new P();
+o.m_localAnchorB = new P();
+o.m_localAnchorC = new P();
+o.m_localAnchorD = new P();
+o.m_localAxisC = new P();
+o.m_localAxisD = new P();
+o.m_referenceAngleA = 0;
+o.m_referenceAngleB = 0;
+o.m_constant = 0;
+o.m_ratio = 0;
+o.m_impulse = 0;
+o.m_indexA = 0;
+o.m_indexB = 0;
+o.m_indexC = 0;
+o.m_indexD = 0;
+o.m_lcA = new P();
+o.m_lcB = new P();
+o.m_lcC = new P();
+o.m_lcD = new P();
+o.m_mA = 0;
+o.m_mB = 0;
+o.m_mC = 0;
+o.m_mD = 0;
+o.m_iA = 0;
+o.m_iB = 0;
+o.m_iC = 0;
+o.m_iD = 0;
+o.m_JvAC = new P();
+o.m_JvBD = new P();
+o.m_JwA = 0;
+o.m_JwB = 0;
+o.m_JwC = 0;
+o.m_JwD = 0;
+o.m_mass = 0;
+o.m_qA = new V();
+o.m_qB = new V();
+o.m_qC = new V();
+o.m_qD = new V();
+o.m_lalcA = new P();
+o.m_lalcB = new P();
+o.m_lalcC = new P();
+o.m_lalcD = new P();
+o.m_joint1 = n.joint1;
+o.m_joint2 = n.joint2;
+o.m_typeA = o.m_joint1.GetType();
+o.m_typeB = o.m_joint2.GetType();
+o.m_bodyC = o.m_joint1.GetBodyA();
+o.m_bodyA = o.m_joint1.GetBodyB();
+var a = o.m_bodyA.m_xf, c = o.m_bodyA.m_sweep.a, l = o.m_bodyC.m_xf, h = o.m_bodyC.m_sweep.a;
+if (o.m_typeA === t.b2JointType.e_revoluteJoint) {
+var u = n.joint1;
+o.m_localAnchorC.Copy(u.m_localAnchorA);
+o.m_localAnchorA.Copy(u.m_localAnchorB);
+o.m_referenceAngleA = u.m_referenceAngle;
+o.m_localAxisC.SetZero();
+r = c - h - o.m_referenceAngleA;
+} else {
+var _ = n.joint1;
+o.m_localAnchorC.Copy(_.m_localAnchorA);
+o.m_localAnchorA.Copy(_.m_localAnchorB);
+o.m_referenceAngleA = _.m_referenceAngle;
+o.m_localAxisC.Copy(_.m_localXAxisA);
+var f = o.m_localAnchorC, d = V.MulTRV(l.q, P.AddVV(V.MulRV(a.q, o.m_localAnchorA, P.s_t0), P.SubVV(a.p, l.p, P.s_t1), P.s_t0), P.s_t0);
+r = P.DotVV(P.SubVV(d, f, P.s_t0), o.m_localAxisC);
+}
+o.m_bodyD = o.m_joint2.GetBodyA();
+o.m_bodyB = o.m_joint2.GetBodyB();
+var m = o.m_bodyB.m_xf, p = o.m_bodyB.m_sweep.a, v = o.m_bodyD.m_xf, y = o.m_bodyD.m_sweep.a;
+if (o.m_typeB === t.b2JointType.e_revoluteJoint) {
+u = n.joint2;
+o.m_localAnchorD.Copy(u.m_localAnchorA);
+o.m_localAnchorB.Copy(u.m_localAnchorB);
+o.m_referenceAngleB = u.m_referenceAngle;
+o.m_localAxisD.SetZero();
+s = p - y - o.m_referenceAngleB;
+} else {
+_ = n.joint2;
+o.m_localAnchorD.Copy(_.m_localAnchorA);
+o.m_localAnchorB.Copy(_.m_localAnchorB);
+o.m_referenceAngleB = _.m_referenceAngle;
+o.m_localAxisD.Copy(_.m_localXAxisA);
+var g = o.m_localAnchorD, x = V.MulTRV(v.q, P.AddVV(V.MulRV(m.q, o.m_localAnchorB, P.s_t0), P.SubVV(m.p, v.p, P.s_t1), P.s_t0), P.s_t0);
+s = P.DotVV(P.SubVV(x, g, P.s_t0), o.m_localAxisD);
+}
+o.m_ratio = e(n.ratio, 1);
+o.m_constant = r + o.m_ratio * s;
+o.m_impulse = 0;
+return o;
+}
+n.prototype.InitVelocityConstraints = function(e) {
+this.m_indexA = this.m_bodyA.m_islandIndex;
+this.m_indexB = this.m_bodyB.m_islandIndex;
+this.m_indexC = this.m_bodyC.m_islandIndex;
+this.m_indexD = this.m_bodyD.m_islandIndex;
+this.m_lcA.Copy(this.m_bodyA.m_sweep.localCenter);
+this.m_lcB.Copy(this.m_bodyB.m_sweep.localCenter);
+this.m_lcC.Copy(this.m_bodyC.m_sweep.localCenter);
+this.m_lcD.Copy(this.m_bodyD.m_sweep.localCenter);
+this.m_mA = this.m_bodyA.m_invMass;
+this.m_mB = this.m_bodyB.m_invMass;
+this.m_mC = this.m_bodyC.m_invMass;
+this.m_mD = this.m_bodyD.m_invMass;
+this.m_iA = this.m_bodyA.m_invI;
+this.m_iB = this.m_bodyB.m_invI;
+this.m_iC = this.m_bodyC.m_invI;
+this.m_iD = this.m_bodyD.m_invI;
+var i = e.positions[this.m_indexA].a, r = e.velocities[this.m_indexA].v, s = e.velocities[this.m_indexA].w, o = e.positions[this.m_indexB].a, a = e.velocities[this.m_indexB].v, c = e.velocities[this.m_indexB].w, l = e.positions[this.m_indexC].a, h = e.velocities[this.m_indexC].v, u = e.velocities[this.m_indexC].w, _ = e.positions[this.m_indexD].a, f = e.velocities[this.m_indexD].v, d = e.velocities[this.m_indexD].w, m = this.m_qA.SetAngle(i), p = this.m_qB.SetAngle(o), v = this.m_qC.SetAngle(l), y = this.m_qD.SetAngle(_);
+this.m_mass = 0;
+if (this.m_typeA === t.b2JointType.e_revoluteJoint) {
+this.m_JvAC.SetZero();
+this.m_JwA = 1;
+this.m_JwC = 1;
+this.m_mass += this.m_iA + this.m_iC;
+} else {
+var g = V.MulRV(v, this.m_localAxisC, n.InitVelocityConstraints_s_u);
+P.SubVV(this.m_localAnchorC, this.m_lcC, this.m_lalcC);
+var x = V.MulRV(v, this.m_lalcC, n.InitVelocityConstraints_s_rC);
+P.SubVV(this.m_localAnchorA, this.m_lcA, this.m_lalcA);
+var C = V.MulRV(m, this.m_lalcA, n.InitVelocityConstraints_s_rA);
+this.m_JvAC.Copy(g);
+this.m_JwC = P.CrossVV(x, g);
+this.m_JwA = P.CrossVV(C, g);
+this.m_mass += this.m_mC + this.m_mA + this.m_iC * this.m_JwC * this.m_JwC + this.m_iA * this.m_JwA * this.m_JwA;
+}
+if (this.m_typeB === t.b2JointType.e_revoluteJoint) {
+this.m_JvBD.SetZero();
+this.m_JwB = this.m_ratio;
+this.m_JwD = this.m_ratio;
+this.m_mass += this.m_ratio * this.m_ratio * (this.m_iB + this.m_iD);
+} else {
+g = V.MulRV(y, this.m_localAxisD, n.InitVelocityConstraints_s_u);
+P.SubVV(this.m_localAnchorD, this.m_lcD, this.m_lalcD);
+var b = V.MulRV(y, this.m_lalcD, n.InitVelocityConstraints_s_rD);
+P.SubVV(this.m_localAnchorB, this.m_lcB, this.m_lalcB);
+var A = V.MulRV(p, this.m_lalcB, n.InitVelocityConstraints_s_rB);
+P.MulSV(this.m_ratio, g, this.m_JvBD);
+this.m_JwD = this.m_ratio * P.CrossVV(b, g);
+this.m_JwB = this.m_ratio * P.CrossVV(A, g);
+this.m_mass += this.m_ratio * this.m_ratio * (this.m_mD + this.m_mB) + this.m_iD * this.m_JwD * this.m_JwD + this.m_iB * this.m_JwB * this.m_JwB;
+}
+this.m_mass = this.m_mass > 0 ? 1 / this.m_mass : 0;
+if (e.step.warmStarting) {
+r.SelfMulAdd(this.m_mA * this.m_impulse, this.m_JvAC);
+s += this.m_iA * this.m_impulse * this.m_JwA;
+a.SelfMulAdd(this.m_mB * this.m_impulse, this.m_JvBD);
+c += this.m_iB * this.m_impulse * this.m_JwB;
+h.SelfMulSub(this.m_mC * this.m_impulse, this.m_JvAC);
+u -= this.m_iC * this.m_impulse * this.m_JwC;
+f.SelfMulSub(this.m_mD * this.m_impulse, this.m_JvBD);
+d -= this.m_iD * this.m_impulse * this.m_JwD;
+} else this.m_impulse = 0;
+e.velocities[this.m_indexA].w = s;
+e.velocities[this.m_indexB].w = c;
+e.velocities[this.m_indexC].w = u;
+e.velocities[this.m_indexD].w = d;
+};
+n.prototype.SolveVelocityConstraints = function(t) {
+var e = t.velocities[this.m_indexA].v, i = t.velocities[this.m_indexA].w, n = t.velocities[this.m_indexB].v, r = t.velocities[this.m_indexB].w, s = t.velocities[this.m_indexC].v, o = t.velocities[this.m_indexC].w, a = t.velocities[this.m_indexD].v, c = t.velocities[this.m_indexD].w, l = P.DotVV(this.m_JvAC, P.SubVV(e, s, P.s_t0)) + P.DotVV(this.m_JvBD, P.SubVV(n, a, P.s_t0));
+l += this.m_JwA * i - this.m_JwC * o + (this.m_JwB * r - this.m_JwD * c);
+var h = -this.m_mass * l;
+this.m_impulse += h;
+e.SelfMulAdd(this.m_mA * h, this.m_JvAC);
+i += this.m_iA * h * this.m_JwA;
+n.SelfMulAdd(this.m_mB * h, this.m_JvBD);
+r += this.m_iB * h * this.m_JwB;
+s.SelfMulSub(this.m_mC * h, this.m_JvAC);
+o -= this.m_iC * h * this.m_JwC;
+a.SelfMulSub(this.m_mD * h, this.m_JvBD);
+c -= this.m_iD * h * this.m_JwD;
+t.velocities[this.m_indexA].w = i;
+t.velocities[this.m_indexB].w = r;
+t.velocities[this.m_indexC].w = o;
+t.velocities[this.m_indexD].w = c;
+};
+n.prototype.SolvePositionConstraints = function(e) {
+var i, r, s, o, a, l, h = e.positions[this.m_indexA].c, u = e.positions[this.m_indexA].a, _ = e.positions[this.m_indexB].c, f = e.positions[this.m_indexB].a, d = e.positions[this.m_indexC].c, m = e.positions[this.m_indexC].a, p = e.positions[this.m_indexD].c, v = e.positions[this.m_indexD].a, y = this.m_qA.SetAngle(u), g = this.m_qB.SetAngle(f), x = this.m_qC.SetAngle(m), C = this.m_qD.SetAngle(v), b = this.m_JvAC, A = this.m_JvBD, S = 0;
+if (this.m_typeA === t.b2JointType.e_revoluteJoint) {
+b.SetZero();
+s = 1;
+a = 1;
+S += this.m_iA + this.m_iC;
+i = u - m - this.m_referenceAngleA;
+} else {
+var w = V.MulRV(x, this.m_localAxisC, n.SolvePositionConstraints_s_u), T = V.MulRV(x, this.m_lalcC, n.SolvePositionConstraints_s_rC), E = V.MulRV(y, this.m_lalcA, n.SolvePositionConstraints_s_rA);
+b.Copy(w);
+a = P.CrossVV(T, w);
+s = P.CrossVV(E, w);
+S += this.m_mC + this.m_mA + this.m_iC * a * a + this.m_iA * s * s;
+var M = this.m_lalcC, B = V.MulTRV(x, P.AddVV(E, P.SubVV(h, d, P.s_t0), P.s_t0), P.s_t0);
+i = P.DotVV(P.SubVV(B, M, P.s_t0), this.m_localAxisC);
+}
+if (this.m_typeB === t.b2JointType.e_revoluteJoint) {
+A.SetZero();
+o = this.m_ratio;
+l = this.m_ratio;
+S += this.m_ratio * this.m_ratio * (this.m_iB + this.m_iD);
+r = f - v - this.m_referenceAngleB;
+} else {
+w = V.MulRV(C, this.m_localAxisD, n.SolvePositionConstraints_s_u);
+var D = V.MulRV(C, this.m_lalcD, n.SolvePositionConstraints_s_rD), I = V.MulRV(g, this.m_lalcB, n.SolvePositionConstraints_s_rB);
+P.MulSV(this.m_ratio, w, A);
+l = this.m_ratio * P.CrossVV(D, w);
+o = this.m_ratio * P.CrossVV(I, w);
+S += this.m_ratio * this.m_ratio * (this.m_mD + this.m_mB) + this.m_iD * l * l + this.m_iB * o * o;
+var R = this.m_lalcD, L = V.MulTRV(C, P.AddVV(I, P.SubVV(_, p, P.s_t0), P.s_t0), P.s_t0);
+r = P.DotVV(P.SubVV(L, R, P.s_t0), this.m_localAxisD);
+}
+var F = i + this.m_ratio * r - this.m_constant, O = 0;
+S > 0 && (O = -F / S);
+h.SelfMulAdd(this.m_mA * O, b);
+u += this.m_iA * O * s;
+_.SelfMulAdd(this.m_mB * O, A);
+f += this.m_iB * O * o;
+d.SelfMulSub(this.m_mC * O, b);
+m -= this.m_iC * O * a;
+p.SelfMulSub(this.m_mD * O, A);
+v -= this.m_iD * O * l;
+e.positions[this.m_indexA].a = u;
+e.positions[this.m_indexB].a = f;
+e.positions[this.m_indexC].a = m;
+e.positions[this.m_indexD].a = v;
+return 0 < c;
+};
+n.prototype.GetAnchorA = function(t) {
+return this.m_bodyA.GetWorldPoint(this.m_localAnchorA, t);
+};
+n.prototype.GetAnchorB = function(t) {
+return this.m_bodyB.GetWorldPoint(this.m_localAnchorB, t);
+};
+n.prototype.GetReactionForce = function(t, e) {
+return P.MulSV(t * this.m_impulse, this.m_JvAC, e);
+};
+n.prototype.GetReactionTorque = function(t) {
+return t * this.m_impulse * this.m_JwA;
+};
+n.prototype.GetJoint1 = function() {
+return this.m_joint1;
+};
+n.prototype.GetJoint2 = function() {
+return this.m_joint2;
+};
+n.prototype.GetRatio = function() {
+return this.m_ratio;
+};
+n.prototype.SetRatio = function(t) {
+this.m_ratio = t;
+};
+n.prototype.Dump = function(t) {
+var e = this.m_bodyA.m_islandIndex, i = this.m_bodyB.m_islandIndex, n = this.m_joint1.m_index, r = this.m_joint2.m_index;
+t(" const jd: b2GearJointDef = new b2GearJointDef();\n");
+t(" jd.bodyA = bodies[%d];\n", e);
+t(" jd.bodyB = bodies[%d];\n", i);
+t(" jd.collideConnected = %s;\n", this.m_collideConnected ? "true" : "false");
+t(" jd.joint1 = joints[%d];\n", n);
+t(" jd.joint2 = joints[%d];\n", r);
+t(" jd.ratio = %.15f;\n", this.m_ratio);
+t(" joints[%d] = this.m_world.CreateJoint(jd);\n", this.m_index);
+};
+n.InitVelocityConstraints_s_u = new P();
+n.InitVelocityConstraints_s_rA = new P();
+n.InitVelocityConstraints_s_rB = new P();
+n.InitVelocityConstraints_s_rC = new P();
+n.InitVelocityConstraints_s_rD = new P();
+n.SolvePositionConstraints_s_u = new P();
+n.SolvePositionConstraints_s_rA = new P();
+n.SolvePositionConstraints_s_rB = new P();
+n.SolvePositionConstraints_s_rC = new P();
+n.SolvePositionConstraints_s_rD = new P();
+return n;
+})(fi), bi = (function(e) {
+$e(i, e);
+function i() {
+var i = e.call(this, t.b2JointType.e_motorJoint) || this;
+i.linearOffset = new P(0, 0);
+i.angularOffset = 0;
+i.maxForce = 1;
+i.maxTorque = 1;
+i.correctionFactor = .3;
+return i;
+}
+i.prototype.Initialize = function(t, e) {
+this.bodyA = t;
+this.bodyB = e;
+this.bodyA.GetLocalPoint(this.bodyB.GetPosition(), this.linearOffset);
+var i = this.bodyA.GetAngle(), n = this.bodyB.GetAngle();
+this.angularOffset = n - i;
+};
+return i;
+})(_i), Ai = (function(t) {
+$e(i, t);
+function i(i) {
+var n = t.call(this, i) || this;
+n.m_linearOffset = new P();
+n.m_angularOffset = 0;
+n.m_linearImpulse = new P();
+n.m_angularImpulse = 0;
+n.m_maxForce = 0;
+n.m_maxTorque = 0;
+n.m_correctionFactor = .3;
+n.m_indexA = 0;
+n.m_indexB = 0;
+n.m_rA = new P();
+n.m_rB = new P();
+n.m_localCenterA = new P();
+n.m_localCenterB = new P();
+n.m_linearError = new P();
+n.m_angularError = 0;
+n.m_invMassA = 0;
+n.m_invMassB = 0;
+n.m_invIA = 0;
+n.m_invIB = 0;
+n.m_linearMass = new F();
+n.m_angularMass = 0;
+n.m_qA = new V();
+n.m_qB = new V();
+n.m_K = new F();
+n.m_linearOffset.Copy(e(i.linearOffset, P.ZERO));
+n.m_linearImpulse.SetZero();
+n.m_maxForce = e(i.maxForce, 0);
+n.m_maxTorque = e(i.maxTorque, 0);
+n.m_correctionFactor = e(i.correctionFactor, .3);
+return n;
+}
+i.prototype.GetAnchorA = function(t) {
+var e = this.m_bodyA.GetPosition();
+t.x = e.x;
+t.y = e.y;
+return t;
+};
+i.prototype.GetAnchorB = function(t) {
+var e = this.m_bodyB.GetPosition();
+t.x = e.x;
+t.y = e.y;
+return t;
+};
+i.prototype.GetReactionForce = function(t, e) {
+return P.MulSV(t, this.m_linearImpulse, e);
+};
+i.prototype.GetReactionTorque = function(t) {
+return t * this.m_angularImpulse;
+};
+i.prototype.SetLinearOffset = function(t) {
+if (!P.IsEqualToV(t, this.m_linearOffset)) {
+this.m_bodyA.SetAwake(!0);
+this.m_bodyB.SetAwake(!0);
+this.m_linearOffset.Copy(t);
+}
+};
+i.prototype.GetLinearOffset = function() {
+return this.m_linearOffset;
+};
+i.prototype.SetAngularOffset = function(t) {
+if (t !== this.m_angularOffset) {
+this.m_bodyA.SetAwake(!0);
+this.m_bodyB.SetAwake(!0);
+this.m_angularOffset = t;
+}
+};
+i.prototype.GetAngularOffset = function() {
+return this.m_angularOffset;
+};
+i.prototype.SetMaxForce = function(t) {
+this.m_maxForce = t;
+};
+i.prototype.GetMaxForce = function() {
+return this.m_maxForce;
+};
+i.prototype.SetMaxTorque = function(t) {
+this.m_maxTorque = t;
+};
+i.prototype.GetMaxTorque = function() {
+return this.m_maxTorque;
+};
+i.prototype.InitVelocityConstraints = function(t) {
+this.m_indexA = this.m_bodyA.m_islandIndex;
+this.m_indexB = this.m_bodyB.m_islandIndex;
+this.m_localCenterA.Copy(this.m_bodyA.m_sweep.localCenter);
+this.m_localCenterB.Copy(this.m_bodyB.m_sweep.localCenter);
+this.m_invMassA = this.m_bodyA.m_invMass;
+this.m_invMassB = this.m_bodyB.m_invMass;
+this.m_invIA = this.m_bodyA.m_invI;
+this.m_invIB = this.m_bodyB.m_invI;
+var e = t.positions[this.m_indexA].c, i = t.positions[this.m_indexA].a, n = t.velocities[this.m_indexA].v, r = t.velocities[this.m_indexA].w, s = t.positions[this.m_indexB].c, o = t.positions[this.m_indexB].a, a = t.velocities[this.m_indexB].v, c = t.velocities[this.m_indexB].w, l = this.m_qA.SetAngle(i), h = this.m_qB.SetAngle(o), u = V.MulRV(l, P.SubVV(this.m_linearOffset, this.m_localCenterA, P.s_t0), this.m_rA), _ = V.MulRV(h, P.NegV(this.m_localCenterB, P.s_t0), this.m_rB), f = this.m_invMassA, d = this.m_invMassB, m = this.m_invIA, p = this.m_invIB, v = this.m_K;
+v.ex.x = f + d + m * u.y * u.y + p * _.y * _.y;
+v.ex.y = -m * u.x * u.y - p * _.x * _.y;
+v.ey.x = v.ex.y;
+v.ey.y = f + d + m * u.x * u.x + p * _.x * _.x;
+v.GetInverse(this.m_linearMass);
+this.m_angularMass = m + p;
+this.m_angularMass > 0 && (this.m_angularMass = 1 / this.m_angularMass);
+P.SubVV(P.AddVV(s, _, P.s_t0), P.AddVV(e, u, P.s_t1), this.m_linearError);
+this.m_angularError = o - i - this.m_angularOffset;
+if (t.step.warmStarting) {
+this.m_linearImpulse.SelfMul(t.step.dtRatio);
+this.m_angularImpulse *= t.step.dtRatio;
+var y = this.m_linearImpulse;
+n.SelfMulSub(f, y);
+r -= m * (P.CrossVV(u, y) + this.m_angularImpulse);
+a.SelfMulAdd(d, y);
+c += p * (P.CrossVV(_, y) + this.m_angularImpulse);
+} else {
+this.m_linearImpulse.SetZero();
+this.m_angularImpulse = 0;
+}
+t.velocities[this.m_indexA].w = r;
+t.velocities[this.m_indexB].w = c;
+};
+i.prototype.SolveVelocityConstraints = function(t) {
+var e = t.velocities[this.m_indexA].v, n = t.velocities[this.m_indexA].w, r = t.velocities[this.m_indexB].v, s = t.velocities[this.m_indexB].w, o = this.m_invMassA, a = this.m_invMassB, c = this.m_invIA, l = this.m_invIB, h = t.step.dt, u = t.step.inv_dt, _ = s - n + u * this.m_correctionFactor * this.m_angularError, f = -this.m_angularMass * _, d = this.m_angularImpulse, m = h * this.m_maxTorque;
+this.m_angularImpulse = C(this.m_angularImpulse + f, -m, m);
+n -= c * (f = this.m_angularImpulse - d);
+s += l * f;
+var p = this.m_rA, v = this.m_rB, y = P.AddVV(P.SubVV(P.AddVV(r, P.CrossSV(s, v, P.s_t0), P.s_t0), P.AddVV(e, P.CrossSV(n, p, P.s_t1), P.s_t1), P.s_t2), P.MulSV(u * this.m_correctionFactor, this.m_linearError, P.s_t3), i.SolveVelocityConstraints_s_Cdot_v2), g = F.MulMV(this.m_linearMass, y, i.SolveVelocityConstraints_s_impulse_v2).SelfNeg(), x = i.SolveVelocityConstraints_s_oldImpulse_v2.Copy(this.m_linearImpulse);
+this.m_linearImpulse.SelfAdd(g);
+m = h * this.m_maxForce;
+if (this.m_linearImpulse.LengthSquared() > m * m) {
+this.m_linearImpulse.Normalize();
+this.m_linearImpulse.SelfMul(m);
+}
+P.SubVV(this.m_linearImpulse, x, g);
+e.SelfMulSub(o, g);
+n -= c * P.CrossVV(p, g);
+r.SelfMulAdd(a, g);
+s += l * P.CrossVV(v, g);
+t.velocities[this.m_indexA].w = n;
+t.velocities[this.m_indexB].w = s;
+};
+i.prototype.SolvePositionConstraints = function(t) {
+return !0;
+};
+i.prototype.Dump = function(t) {
+var e = this.m_bodyA.m_islandIndex, i = this.m_bodyB.m_islandIndex;
+t(" const jd: b2MotorJointDef = new b2MotorJointDef();\n");
+t(" jd.bodyA = bodies[%d];\n", e);
+t(" jd.bodyB = bodies[%d];\n", i);
+t(" jd.collideConnected = %s;\n", this.m_collideConnected ? "true" : "false");
+t(" jd.linearOffset.Set(%.15f, %.15f);\n", this.m_linearOffset.x, this.m_linearOffset.y);
+t(" jd.angularOffset = %.15f;\n", this.m_angularOffset);
+t(" jd.maxForce = %.15f;\n", this.m_maxForce);
+t(" jd.maxTorque = %.15f;\n", this.m_maxTorque);
+t(" jd.correctionFactor = %.15f;\n", this.m_correctionFactor);
+t(" joints[%d] = this.m_world.CreateJoint(jd);\n", this.m_index);
+};
+i.SolveVelocityConstraints_s_Cdot_v2 = new P();
+i.SolveVelocityConstraints_s_impulse_v2 = new P();
+i.SolveVelocityConstraints_s_oldImpulse_v2 = new P();
+return i;
+})(fi), Si = (function(e) {
+$e(i, e);
+function i() {
+var i = e.call(this, t.b2JointType.e_mouseJoint) || this;
+i.target = new P();
+i.maxForce = 0;
+i.frequencyHz = 5;
+i.dampingRatio = .7;
+return i;
+}
+return i;
+})(_i), wi = (function(t) {
+$e(i, t);
+function i(i) {
+var n = t.call(this, i) || this;
+n.m_localAnchorB = new P();
+n.m_targetA = new P();
+n.m_frequencyHz = 0;
+n.m_dampingRatio = 0;
+n.m_beta = 0;
+n.m_impulse = new P();
+n.m_maxForce = 0;
+n.m_gamma = 0;
+n.m_indexA = 0;
+n.m_indexB = 0;
+n.m_rB = new P();
+n.m_localCenterB = new P();
+n.m_invMassB = 0;
+n.m_invIB = 0;
+n.m_mass = new F();
+n.m_C = new P();
+n.m_qB = new V();
+n.m_lalcB = new P();
+n.m_K = new F();
+n.m_targetA.Copy(e(i.target, P.ZERO));
+N.MulTXV(n.m_bodyB.GetTransform(), n.m_targetA, n.m_localAnchorB);
+n.m_maxForce = e(i.maxForce, 0);
+n.m_impulse.SetZero();
+n.m_frequencyHz = e(i.frequencyHz, 0);
+n.m_dampingRatio = e(i.dampingRatio, 0);
+n.m_beta = 0;
+n.m_gamma = 0;
+return n;
+}
+i.prototype.SetTarget = function(t) {
+this.m_bodyB.IsAwake() || this.m_bodyB.SetAwake(!0);
+this.m_targetA.Copy(t);
+};
+i.prototype.GetTarget = function() {
+return this.m_targetA;
+};
+i.prototype.SetMaxForce = function(t) {
+this.m_maxForce = t;
+};
+i.prototype.GetMaxForce = function() {
+return this.m_maxForce;
+};
+i.prototype.SetFrequency = function(t) {
+this.m_frequencyHz = t;
+};
+i.prototype.GetFrequency = function() {
+return this.m_frequencyHz;
+};
+i.prototype.SetDampingRatio = function(t) {
+this.m_dampingRatio = t;
+};
+i.prototype.GetDampingRatio = function() {
+return this.m_dampingRatio;
+};
+i.prototype.InitVelocityConstraints = function(t) {
+this.m_indexB = this.m_bodyB.m_islandIndex;
+this.m_localCenterB.Copy(this.m_bodyB.m_sweep.localCenter);
+this.m_invMassB = this.m_bodyB.m_invMass;
+this.m_invIB = this.m_bodyB.m_invI;
+var e = t.positions[this.m_indexB].c, i = t.positions[this.m_indexB].a, n = t.velocities[this.m_indexB].v, r = t.velocities[this.m_indexB].w, o = this.m_qB.SetAngle(i), a = this.m_bodyB.GetMass(), c = 2 * s * this.m_frequencyHz, l = 2 * a * this.m_dampingRatio * c, h = a * (c * c), u = t.step.dt;
+this.m_gamma = u * (l + u * h);
+0 !== this.m_gamma && (this.m_gamma = 1 / this.m_gamma);
+this.m_beta = u * h * this.m_gamma;
+P.SubVV(this.m_localAnchorB, this.m_localCenterB, this.m_lalcB);
+V.MulRV(o, this.m_lalcB, this.m_rB);
+var _ = this.m_K;
+_.ex.x = this.m_invMassB + this.m_invIB * this.m_rB.y * this.m_rB.y + this.m_gamma;
+_.ex.y = -this.m_invIB * this.m_rB.x * this.m_rB.y;
+_.ey.x = _.ex.y;
+_.ey.y = this.m_invMassB + this.m_invIB * this.m_rB.x * this.m_rB.x + this.m_gamma;
+_.GetInverse(this.m_mass);
+this.m_C.x = e.x + this.m_rB.x - this.m_targetA.x;
+this.m_C.y = e.y + this.m_rB.y - this.m_targetA.y;
+this.m_C.SelfMul(this.m_beta);
+r *= .98;
+if (t.step.warmStarting) {
+this.m_impulse.SelfMul(t.step.dtRatio);
+n.x += this.m_invMassB * this.m_impulse.x;
+n.y += this.m_invMassB * this.m_impulse.y;
+r += this.m_invIB * P.CrossVV(this.m_rB, this.m_impulse);
+} else this.m_impulse.SetZero();
+t.velocities[this.m_indexB].w = r;
+};
+i.prototype.SolveVelocityConstraints = function(t) {
+var e = t.velocities[this.m_indexB].v, n = t.velocities[this.m_indexB].w, r = P.AddVCrossSV(e, n, this.m_rB, i.SolveVelocityConstraints_s_Cdot), s = F.MulMV(this.m_mass, P.AddVV(r, P.AddVV(this.m_C, P.MulSV(this.m_gamma, this.m_impulse, P.s_t0), P.s_t0), P.s_t0).SelfNeg(), i.SolveVelocityConstraints_s_impulse), o = i.SolveVelocityConstraints_s_oldImpulse.Copy(this.m_impulse);
+this.m_impulse.SelfAdd(s);
+var a = t.step.dt * this.m_maxForce;
+this.m_impulse.LengthSquared() > a * a && this.m_impulse.SelfMul(a / this.m_impulse.Length());
+P.SubVV(this.m_impulse, o, s);
+e.SelfMulAdd(this.m_invMassB, s);
+n += this.m_invIB * P.CrossVV(this.m_rB, s);
+t.velocities[this.m_indexB].w = n;
+};
+i.prototype.SolvePositionConstraints = function(t) {
+return !0;
+};
+i.prototype.GetAnchorA = function(t) {
+t.x = this.m_targetA.x;
+t.y = this.m_targetA.y;
+return t;
+};
+i.prototype.GetAnchorB = function(t) {
+return this.m_bodyB.GetWorldPoint(this.m_localAnchorB, t);
+};
+i.prototype.GetReactionForce = function(t, e) {
+return P.MulSV(t, this.m_impulse, e);
+};
+i.prototype.GetReactionTorque = function(t) {
+return 0;
+};
+i.prototype.Dump = function(t) {
+t("Mouse joint dumping is not supported.\n");
+};
+i.prototype.ShiftOrigin = function(t) {
+this.m_targetA.SelfSub(t);
+};
+i.SolveVelocityConstraints_s_Cdot = new P();
+i.SolveVelocityConstraints_s_impulse = new P();
+i.SolveVelocityConstraints_s_oldImpulse = new P();
+return i;
+})(fi), Ti = (function(e) {
+$e(i, e);
+function i() {
+var i = e.call(this, t.b2JointType.e_prismaticJoint) || this;
+i.localAnchorA = new P();
+i.localAnchorB = new P();
+i.localAxisA = new P(1, 0);
+i.referenceAngle = 0;
+i.enableLimit = !1;
+i.lowerTranslation = 0;
+i.upperTranslation = 0;
+i.enableMotor = !1;
+i.maxMotorForce = 0;
+i.motorSpeed = 0;
+return i;
+}
+i.prototype.Initialize = function(t, e, i, n) {
+this.bodyA = t;
+this.bodyB = e;
+this.bodyA.GetLocalPoint(i, this.localAnchorA);
+this.bodyB.GetLocalPoint(i, this.localAnchorB);
+this.bodyA.GetLocalVector(n, this.localAxisA);
+this.referenceAngle = this.bodyB.GetAngle() - this.bodyA.GetAngle();
+};
+return i;
+})(_i), Ei = (function(i) {
+$e(n, i);
+function n(n) {
+var r = i.call(this, n) || this;
+r.m_localAnchorA = new P();
+r.m_localAnchorB = new P();
+r.m_localXAxisA = new P();
+r.m_localYAxisA = new P();
+r.m_referenceAngle = 0;
+r.m_impulse = new L(0, 0, 0);
+r.m_motorImpulse = 0;
+r.m_lowerTranslation = 0;
+r.m_upperTranslation = 0;
+r.m_maxMotorForce = 0;
+r.m_motorSpeed = 0;
+r.m_enableLimit = !1;
+r.m_enableMotor = !1;
+r.m_limitState = t.b2LimitState.e_inactiveLimit;
+r.m_indexA = 0;
+r.m_indexB = 0;
+r.m_localCenterA = new P();
+r.m_localCenterB = new P();
+r.m_invMassA = 0;
+r.m_invMassB = 0;
+r.m_invIA = 0;
+r.m_invIB = 0;
+r.m_axis = new P(0, 0);
+r.m_perp = new P(0, 0);
+r.m_s1 = 0;
+r.m_s2 = 0;
+r.m_a1 = 0;
+r.m_a2 = 0;
+r.m_K = new O();
+r.m_K3 = new O();
+r.m_K2 = new F();
+r.m_motorMass = 0;
+r.m_qA = new V();
+r.m_qB = new V();
+r.m_lalcA = new P();
+r.m_lalcB = new P();
+r.m_rA = new P();
+r.m_rB = new P();
+r.m_localAnchorA.Copy(e(n.localAnchorA, P.ZERO));
+r.m_localAnchorB.Copy(e(n.localAnchorB, P.ZERO));
+r.m_localXAxisA.Copy(e(n.localAxisA, new P(1, 0))).SelfNormalize();
+P.CrossOneV(r.m_localXAxisA, r.m_localYAxisA);
+r.m_referenceAngle = e(n.referenceAngle, 0);
+r.m_lowerTranslation = e(n.lowerTranslation, 0);
+r.m_upperTranslation = e(n.upperTranslation, 0);
+r.m_maxMotorForce = e(n.maxMotorForce, 0);
+r.m_motorSpeed = e(n.motorSpeed, 0);
+r.m_enableLimit = e(n.enableLimit, !1);
+r.m_enableMotor = e(n.enableMotor, !1);
+return r;
+}
+n.prototype.InitVelocityConstraints = function(e) {
+this.m_indexA = this.m_bodyA.m_islandIndex;
+this.m_indexB = this.m_bodyB.m_islandIndex;
+this.m_localCenterA.Copy(this.m_bodyA.m_sweep.localCenter);
+this.m_localCenterB.Copy(this.m_bodyB.m_sweep.localCenter);
+this.m_invMassA = this.m_bodyA.m_invMass;
+this.m_invMassB = this.m_bodyB.m_invMass;
+this.m_invIA = this.m_bodyA.m_invI;
+this.m_invIB = this.m_bodyB.m_invI;
+var i = e.positions[this.m_indexA].c, r = e.positions[this.m_indexA].a, s = e.velocities[this.m_indexA].v, o = e.velocities[this.m_indexA].w, a = e.positions[this.m_indexB].c, l = e.positions[this.m_indexB].a, h = e.velocities[this.m_indexB].v, u = e.velocities[this.m_indexB].w, _ = this.m_qA.SetAngle(r), f = this.m_qB.SetAngle(l);
+P.SubVV(this.m_localAnchorA, this.m_localCenterA, this.m_lalcA);
+var d = V.MulRV(_, this.m_lalcA, this.m_rA);
+P.SubVV(this.m_localAnchorB, this.m_localCenterB, this.m_lalcB);
+var m = V.MulRV(f, this.m_lalcB, this.m_rB), p = P.AddVV(P.SubVV(a, i, P.s_t0), P.SubVV(m, d, P.s_t1), n.InitVelocityConstraints_s_d), v = this.m_invMassA, g = this.m_invMassB, x = this.m_invIA, C = this.m_invIB;
+V.MulRV(_, this.m_localXAxisA, this.m_axis);
+this.m_a1 = P.CrossVV(P.AddVV(p, d, P.s_t0), this.m_axis);
+this.m_a2 = P.CrossVV(m, this.m_axis);
+this.m_motorMass = v + g + x * this.m_a1 * this.m_a1 + C * this.m_a2 * this.m_a2;
+this.m_motorMass > 0 && (this.m_motorMass = 1 / this.m_motorMass);
+V.MulRV(_, this.m_localYAxisA, this.m_perp);
+this.m_s1 = P.CrossVV(P.AddVV(p, d, P.s_t0), this.m_perp);
+this.m_s2 = P.CrossVV(m, this.m_perp);
+this.m_K.ex.x = v + g + x * this.m_s1 * this.m_s1 + C * this.m_s2 * this.m_s2;
+this.m_K.ex.y = x * this.m_s1 + C * this.m_s2;
+this.m_K.ex.z = x * this.m_s1 * this.m_a1 + C * this.m_s2 * this.m_a2;
+this.m_K.ey.x = this.m_K.ex.y;
+this.m_K.ey.y = x + C;
+0 === this.m_K.ey.y && (this.m_K.ey.y = 1);
+this.m_K.ey.z = x * this.m_a1 + C * this.m_a2;
+this.m_K.ez.x = this.m_K.ex.z;
+this.m_K.ez.y = this.m_K.ey.z;
+this.m_K.ez.z = v + g + x * this.m_a1 * this.m_a1 + C * this.m_a2 * this.m_a2;
+if (this.m_enableLimit) {
+var b = P.DotVV(this.m_axis, p);
+if (y(this.m_upperTranslation - this.m_lowerTranslation) < 2 * c) this.m_limitState = t.b2LimitState.e_equalLimits; else if (b <= this.m_lowerTranslation) {
+if (this.m_limitState !== t.b2LimitState.e_atLowerLimit) {
+this.m_limitState = t.b2LimitState.e_atLowerLimit;
+this.m_impulse.z = 0;
+}
+} else if (b >= this.m_upperTranslation) {
+if (this.m_limitState !== t.b2LimitState.e_atUpperLimit) {
+this.m_limitState = t.b2LimitState.e_atUpperLimit;
+this.m_impulse.z = 0;
+}
+} else {
+this.m_limitState = t.b2LimitState.e_inactiveLimit;
+this.m_impulse.z = 0;
+}
+} else {
+this.m_limitState = t.b2LimitState.e_inactiveLimit;
+this.m_impulse.z = 0;
+}
+this.m_enableMotor || (this.m_motorImpulse = 0);
+if (e.step.warmStarting) {
+this.m_impulse.SelfMul(e.step.dtRatio);
+this.m_motorImpulse *= e.step.dtRatio;
+var A = P.AddVV(P.MulSV(this.m_impulse.x, this.m_perp, P.s_t0), P.MulSV(this.m_motorImpulse + this.m_impulse.z, this.m_axis, P.s_t1), n.InitVelocityConstraints_s_P), S = this.m_impulse.x * this.m_s1 + this.m_impulse.y + (this.m_motorImpulse + this.m_impulse.z) * this.m_a1, w = this.m_impulse.x * this.m_s2 + this.m_impulse.y + (this.m_motorImpulse + this.m_impulse.z) * this.m_a2;
+s.SelfMulSub(v, A);
+o -= x * S;
+h.SelfMulAdd(g, A);
+u += C * w;
+} else {
+this.m_impulse.SetZero();
+this.m_motorImpulse = 0;
+}
+e.velocities[this.m_indexA].w = o;
+e.velocities[this.m_indexB].w = u;
+};
+n.prototype.SolveVelocityConstraints = function(e) {
+var i = e.velocities[this.m_indexA].v, r = e.velocities[this.m_indexA].w, s = e.velocities[this.m_indexB].v, o = e.velocities[this.m_indexB].w, a = this.m_invMassA, c = this.m_invMassB, l = this.m_invIA, h = this.m_invIB;
+if (this.m_enableMotor && this.m_limitState !== t.b2LimitState.e_equalLimits) {
+var u = P.DotVV(this.m_axis, P.SubVV(s, i, P.s_t0)) + this.m_a2 * o - this.m_a1 * r, _ = this.m_motorMass * (this.m_motorSpeed - u), f = this.m_motorImpulse, d = e.step.dt * this.m_maxMotorForce;
+this.m_motorImpulse = C(this.m_motorImpulse + _, -d, d);
+_ = this.m_motorImpulse - f;
+var m = P.MulSV(_, this.m_axis, n.SolveVelocityConstraints_s_P), p = _ * this.m_a1, v = _ * this.m_a2;
+i.SelfMulSub(a, m);
+r -= l * p;
+s.SelfMulAdd(c, m);
+o += h * v;
+}
+var y = P.DotVV(this.m_perp, P.SubVV(s, i, P.s_t0)) + this.m_s2 * o - this.m_s1 * r, b = o - r;
+if (this.m_enableLimit && this.m_limitState !== t.b2LimitState.e_inactiveLimit) {
+var A = P.DotVV(this.m_axis, P.SubVV(s, i, P.s_t0)) + this.m_a2 * o - this.m_a1 * r, S = n.SolveVelocityConstraints_s_f1.Copy(this.m_impulse), w = this.m_K.Solve33(-y, -b, -A, n.SolveVelocityConstraints_s_df3);
+this.m_impulse.SelfAdd(w);
+this.m_limitState === t.b2LimitState.e_atLowerLimit ? this.m_impulse.z = x(this.m_impulse.z, 0) : this.m_limitState === t.b2LimitState.e_atUpperLimit && (this.m_impulse.z = g(this.m_impulse.z, 0));
+var T = -y - (this.m_impulse.z - S.z) * this.m_K.ez.x, E = -b - (this.m_impulse.z - S.z) * this.m_K.ez.y, M = this.m_K.Solve22(T, E, n.SolveVelocityConstraints_s_f2r);
+M.x += S.x;
+M.y += S.y;
+this.m_impulse.x = M.x;
+this.m_impulse.y = M.y;
+w.x = this.m_impulse.x - S.x;
+w.y = this.m_impulse.y - S.y;
+w.z = this.m_impulse.z - S.z;
+m = P.AddVV(P.MulSV(w.x, this.m_perp, P.s_t0), P.MulSV(w.z, this.m_axis, P.s_t1), n.SolveVelocityConstraints_s_P),
+p = w.x * this.m_s1 + w.y + w.z * this.m_a1, v = w.x * this.m_s2 + w.y + w.z * this.m_a2;
+i.SelfMulSub(a, m);
+r -= l * p;
+s.SelfMulAdd(c, m);
+o += h * v;
+} else {
+var B = this.m_K.Solve22(-y, -b, n.SolveVelocityConstraints_s_df2);
+this.m_impulse.x += B.x;
+this.m_impulse.y += B.y;
+m = P.MulSV(B.x, this.m_perp, n.SolveVelocityConstraints_s_P), p = B.x * this.m_s1 + B.y,
+v = B.x * this.m_s2 + B.y;
+i.SelfMulSub(a, m);
+r -= l * p;
+s.SelfMulAdd(c, m);
+o += h * v;
+}
+e.velocities[this.m_indexA].w = r;
+e.velocities[this.m_indexB].w = o;
+};
+n.prototype.SolvePositionConstraints = function(t) {
+var e = t.positions[this.m_indexA].c, i = t.positions[this.m_indexA].a, r = t.positions[this.m_indexB].c, s = t.positions[this.m_indexB].a, o = this.m_qA.SetAngle(i), a = this.m_qB.SetAngle(s), h = this.m_invMassA, u = this.m_invMassB, _ = this.m_invIA, f = this.m_invIB, d = V.MulRV(o, this.m_lalcA, this.m_rA), m = V.MulRV(a, this.m_lalcB, this.m_rB), p = P.SubVV(P.AddVV(r, m, P.s_t0), P.AddVV(e, d, P.s_t1), n.SolvePositionConstraints_s_d), v = V.MulRV(o, this.m_localXAxisA, this.m_axis), g = P.CrossVV(P.AddVV(p, d, P.s_t0), v), b = P.CrossVV(m, v), A = V.MulRV(o, this.m_localYAxisA, this.m_perp), S = P.CrossVV(P.AddVV(p, d, P.s_t0), A), w = P.CrossVV(m, A), T = n.SolvePositionConstraints_s_impulse, E = P.DotVV(A, p), M = s - i - this.m_referenceAngle, B = y(E), D = y(M), I = !1, R = 0;
+if (this.m_enableLimit) {
+var L = P.DotVV(v, p);
+if (y(this.m_upperTranslation - this.m_lowerTranslation) < 2 * c) {
+R = C(L, -.2, .2);
+B = x(B, y(L));
+I = !0;
+} else if (L <= this.m_lowerTranslation) {
+R = C(L - this.m_lowerTranslation + c, -.2, 0);
+B = x(B, this.m_lowerTranslation - L);
+I = !0;
+} else if (L >= this.m_upperTranslation) {
+R = C(L - this.m_upperTranslation - c, 0, .2);
+B = x(B, L - this.m_upperTranslation);
+I = !0;
+}
+}
+if (I) {
+var F = h + u + _ * S * S + f * w * w, O = _ * S + f * w, N = _ * S * g + f * w * b;
+0 === (U = _ + f) && (U = 1);
+var k = _ * g + f * b, z = h + u + _ * g * g + f * b * b, G = this.m_K3;
+G.ex.SetXYZ(F, O, N);
+G.ey.SetXYZ(O, U, k);
+G.ez.SetXYZ(N, k, z);
+T = G.Solve33(-E, -M, -R, T);
+} else {
+var U;
+F = h + u + _ * S * S + f * w * w, O = _ * S + f * w;
+0 === (U = _ + f) && (U = 1);
+var j = this.m_K2;
+j.ex.Set(F, O);
+j.ey.Set(O, U);
+var W = j.Solve(-E, -M, n.SolvePositionConstraints_s_impulse1);
+T.x = W.x;
+T.y = W.y;
+T.z = 0;
+}
+var H = P.AddVV(P.MulSV(T.x, A, P.s_t0), P.MulSV(T.z, v, P.s_t1), n.SolvePositionConstraints_s_P), q = T.x * S + T.y + T.z * g, X = T.x * w + T.y + T.z * b;
+e.SelfMulSub(h, H);
+i -= _ * q;
+r.SelfMulAdd(u, H);
+s += f * X;
+t.positions[this.m_indexA].a = i;
+t.positions[this.m_indexB].a = s;
+return B <= c && D <= l;
+};
+n.prototype.GetAnchorA = function(t) {
+return this.m_bodyA.GetWorldPoint(this.m_localAnchorA, t);
+};
+n.prototype.GetAnchorB = function(t) {
+return this.m_bodyB.GetWorldPoint(this.m_localAnchorB, t);
+};
+n.prototype.GetReactionForce = function(t, e) {
+e.x = t * (this.m_impulse.x * this.m_perp.x + (this.m_motorImpulse + this.m_impulse.z) * this.m_axis.x);
+e.y = t * (this.m_impulse.x * this.m_perp.y + (this.m_motorImpulse + this.m_impulse.z) * this.m_axis.y);
+return e;
+};
+n.prototype.GetReactionTorque = function(t) {
+return t * this.m_impulse.y;
+};
+n.prototype.GetLocalAnchorA = function() {
+return this.m_localAnchorA;
+};
+n.prototype.GetLocalAnchorB = function() {
+return this.m_localAnchorB;
+};
+n.prototype.GetLocalAxisA = function() {
+return this.m_localXAxisA;
+};
+n.prototype.GetReferenceAngle = function() {
+return this.m_referenceAngle;
+};
+n.prototype.GetJointTranslation = function() {
+var t = this.m_bodyA.GetWorldPoint(this.m_localAnchorA, n.GetJointTranslation_s_pA), e = this.m_bodyB.GetWorldPoint(this.m_localAnchorB, n.GetJointTranslation_s_pB), i = P.SubVV(e, t, n.GetJointTranslation_s_d), r = this.m_bodyA.GetWorldVector(this.m_localXAxisA, n.GetJointTranslation_s_axis);
+return P.DotVV(i, r);
+};
+n.prototype.GetJointSpeed = function() {
+var t = this.m_bodyA, e = this.m_bodyB;
+P.SubVV(this.m_localAnchorA, t.m_sweep.localCenter, this.m_lalcA);
+var i = V.MulRV(t.m_xf.q, this.m_lalcA, this.m_rA);
+P.SubVV(this.m_localAnchorB, e.m_sweep.localCenter, this.m_lalcB);
+var n = V.MulRV(e.m_xf.q, this.m_lalcB, this.m_rB), r = P.AddVV(t.m_sweep.c, i, P.s_t0), s = P.AddVV(e.m_sweep.c, n, P.s_t1), o = P.SubVV(s, r, P.s_t2), a = t.GetWorldVector(this.m_localXAxisA, this.m_axis), c = t.m_linearVelocity, l = e.m_linearVelocity, h = t.m_angularVelocity, u = e.m_angularVelocity;
+return P.DotVV(o, P.CrossSV(h, a, P.s_t0)) + P.DotVV(a, P.SubVV(P.AddVCrossSV(l, u, n, P.s_t0), P.AddVCrossSV(c, h, i, P.s_t1), P.s_t0));
+};
+n.prototype.IsLimitEnabled = function() {
+return this.m_enableLimit;
+};
+n.prototype.EnableLimit = function(t) {
+if (t !== this.m_enableLimit) {
+this.m_bodyA.SetAwake(!0);
+this.m_bodyB.SetAwake(!0);
+this.m_enableLimit = t;
+this.m_impulse.z = 0;
+}
+};
+n.prototype.GetLowerLimit = function() {
+return this.m_lowerTranslation;
+};
+n.prototype.GetUpperLimit = function() {
+return this.m_upperTranslation;
+};
+n.prototype.SetLimits = function(t, e) {
+if (t !== this.m_lowerTranslation || e !== this.m_upperTranslation) {
+this.m_bodyA.SetAwake(!0);
+this.m_bodyB.SetAwake(!0);
+this.m_lowerTranslation = t;
+this.m_upperTranslation = e;
+this.m_impulse.z = 0;
+}
+};
+n.prototype.IsMotorEnabled = function() {
+return this.m_enableMotor;
+};
+n.prototype.EnableMotor = function(t) {
+if (t !== this.m_enableMotor) {
+this.m_bodyA.SetAwake(!0);
+this.m_bodyB.SetAwake(!0);
+this.m_enableMotor = t;
+}
+};
+n.prototype.SetMotorSpeed = function(t) {
+if (t !== this.m_motorSpeed) {
+this.m_bodyA.SetAwake(!0);
+this.m_bodyB.SetAwake(!0);
+this.m_motorSpeed = t;
+}
+};
+n.prototype.GetMotorSpeed = function() {
+return this.m_motorSpeed;
+};
+n.prototype.SetMaxMotorForce = function(t) {
+if (t !== this.m_maxMotorForce) {
+this.m_bodyA.SetAwake(!0);
+this.m_bodyB.SetAwake(!0);
+this.m_maxMotorForce = t;
+}
+};
+n.prototype.GetMaxMotorForce = function() {
+return this.m_maxMotorForce;
+};
+n.prototype.GetMotorForce = function(t) {
+return t * this.m_motorImpulse;
+};
+n.prototype.Dump = function(t) {
+var e = this.m_bodyA.m_islandIndex, i = this.m_bodyB.m_islandIndex;
+t(" const jd: b2PrismaticJointDef = new b2PrismaticJointDef();\n");
+t(" jd.bodyA = bodies[%d];\n", e);
+t(" jd.bodyB = bodies[%d];\n", i);
+t(" jd.collideConnected = %s;\n", this.m_collideConnected ? "true" : "false");
+t(" jd.localAnchorA.Set(%.15f, %.15f);\n", this.m_localAnchorA.x, this.m_localAnchorA.y);
+t(" jd.localAnchorB.Set(%.15f, %.15f);\n", this.m_localAnchorB.x, this.m_localAnchorB.y);
+t(" jd.localAxisA.Set(%.15f, %.15f);\n", this.m_localXAxisA.x, this.m_localXAxisA.y);
+t(" jd.referenceAngle = %.15f;\n", this.m_referenceAngle);
+t(" jd.enableLimit = %s;\n", this.m_enableLimit ? "true" : "false");
+t(" jd.lowerTranslation = %.15f;\n", this.m_lowerTranslation);
+t(" jd.upperTranslation = %.15f;\n", this.m_upperTranslation);
+t(" jd.enableMotor = %s;\n", this.m_enableMotor ? "true" : "false");
+t(" jd.motorSpeed = %.15f;\n", this.m_motorSpeed);
+t(" jd.maxMotorForce = %.15f;\n", this.m_maxMotorForce);
+t(" joints[%d] = this.m_world.CreateJoint(jd);\n", this.m_index);
+};
+n.InitVelocityConstraints_s_d = new P();
+n.InitVelocityConstraints_s_P = new P();
+n.SolveVelocityConstraints_s_P = new P();
+n.SolveVelocityConstraints_s_f2r = new P();
+n.SolveVelocityConstraints_s_f1 = new L();
+n.SolveVelocityConstraints_s_df3 = new L();
+n.SolveVelocityConstraints_s_df2 = new P();
+n.SolvePositionConstraints_s_d = new P();
+n.SolvePositionConstraints_s_impulse = new L();
+n.SolvePositionConstraints_s_impulse1 = new P();
+n.SolvePositionConstraints_s_P = new P();
+n.GetJointTranslation_s_pA = new P();
+n.GetJointTranslation_s_pB = new P();
+n.GetJointTranslation_s_d = new P();
+n.GetJointTranslation_s_axis = new P();
+return n;
+})(fi), Mi = (function(e) {
+$e(i, e);
+function i() {
+var i = e.call(this, t.b2JointType.e_pulleyJoint) || this;
+i.groundAnchorA = new P(-1, 1);
+i.groundAnchorB = new P(1, 1);
+i.localAnchorA = new P(-1, 0);
+i.localAnchorB = new P(1, 0);
+i.lengthA = 0;
+i.lengthB = 0;
+i.ratio = 1;
+i.collideConnected = !0;
+return i;
+}
+i.prototype.Initialize = function(t, e, i, n, r, s, o) {
+this.bodyA = t;
+this.bodyB = e;
+this.groundAnchorA.Copy(i);
+this.groundAnchorB.Copy(n);
+this.bodyA.GetLocalPoint(r, this.localAnchorA);
+this.bodyB.GetLocalPoint(s, this.localAnchorB);
+this.lengthA = P.DistanceVV(r, i);
+this.lengthB = P.DistanceVV(s, n);
+this.ratio = o;
+};
+return i;
+})(_i), Bi = (function(t) {
+$e(i, t);
+function i(i) {
+var n = t.call(this, i) || this;
+n.m_groundAnchorA = new P();
+n.m_groundAnchorB = new P();
+n.m_lengthA = 0;
+n.m_lengthB = 0;
+n.m_localAnchorA = new P();
+n.m_localAnchorB = new P();
+n.m_constant = 0;
+n.m_ratio = 0;
+n.m_impulse = 0;
+n.m_indexA = 0;
+n.m_indexB = 0;
+n.m_uA = new P();
+n.m_uB = new P();
+n.m_rA = new P();
+n.m_rB = new P();
+n.m_localCenterA = new P();
+n.m_localCenterB = new P();
+n.m_invMassA = 0;
+n.m_invMassB = 0;
+n.m_invIA = 0;
+n.m_invIB = 0;
+n.m_mass = 0;
+n.m_qA = new V();
+n.m_qB = new V();
+n.m_lalcA = new P();
+n.m_lalcB = new P();
+n.m_groundAnchorA.Copy(e(i.groundAnchorA, new P(-1, 1)));
+n.m_groundAnchorB.Copy(e(i.groundAnchorB, new P(1, 0)));
+n.m_localAnchorA.Copy(e(i.localAnchorA, new P(-1, 0)));
+n.m_localAnchorB.Copy(e(i.localAnchorB, new P(1, 0)));
+n.m_lengthA = e(i.lengthA, 0);
+n.m_lengthB = e(i.lengthB, 0);
+n.m_ratio = e(i.ratio, 1);
+n.m_constant = e(i.lengthA, 0) + n.m_ratio * e(i.lengthB, 0);
+n.m_impulse = 0;
+return n;
+}
+i.prototype.InitVelocityConstraints = function(t) {
+this.m_indexA = this.m_bodyA.m_islandIndex;
+this.m_indexB = this.m_bodyB.m_islandIndex;
+this.m_localCenterA.Copy(this.m_bodyA.m_sweep.localCenter);
+this.m_localCenterB.Copy(this.m_bodyB.m_sweep.localCenter);
+this.m_invMassA = this.m_bodyA.m_invMass;
+this.m_invMassB = this.m_bodyB.m_invMass;
+this.m_invIA = this.m_bodyA.m_invI;
+this.m_invIB = this.m_bodyB.m_invI;
+var e = t.positions[this.m_indexA].c, n = t.positions[this.m_indexA].a, r = t.velocities[this.m_indexA].v, s = t.velocities[this.m_indexA].w, o = t.positions[this.m_indexB].c, a = t.positions[this.m_indexB].a, l = t.velocities[this.m_indexB].v, h = t.velocities[this.m_indexB].w, u = this.m_qA.SetAngle(n), _ = this.m_qB.SetAngle(a);
+P.SubVV(this.m_localAnchorA, this.m_localCenterA, this.m_lalcA);
+V.MulRV(u, this.m_lalcA, this.m_rA);
+P.SubVV(this.m_localAnchorB, this.m_localCenterB, this.m_lalcB);
+V.MulRV(_, this.m_lalcB, this.m_rB);
+this.m_uA.Copy(e).SelfAdd(this.m_rA).SelfSub(this.m_groundAnchorA);
+this.m_uB.Copy(o).SelfAdd(this.m_rB).SelfSub(this.m_groundAnchorB);
+var f = this.m_uA.Length(), d = this.m_uB.Length();
+f > 10 * c ? this.m_uA.SelfMul(1 / f) : this.m_uA.SetZero();
+d > 10 * c ? this.m_uB.SelfMul(1 / d) : this.m_uB.SetZero();
+var m = P.CrossVV(this.m_rA, this.m_uA), p = P.CrossVV(this.m_rB, this.m_uB), v = this.m_invMassA + this.m_invIA * m * m, y = this.m_invMassB + this.m_invIB * p * p;
+this.m_mass = v + this.m_ratio * this.m_ratio * y;
+this.m_mass > 0 && (this.m_mass = 1 / this.m_mass);
+if (t.step.warmStarting) {
+this.m_impulse *= t.step.dtRatio;
+var g = P.MulSV(-this.m_impulse, this.m_uA, i.InitVelocityConstraints_s_PA), x = P.MulSV(-this.m_ratio * this.m_impulse, this.m_uB, i.InitVelocityConstraints_s_PB);
+r.SelfMulAdd(this.m_invMassA, g);
+s += this.m_invIA * P.CrossVV(this.m_rA, g);
+l.SelfMulAdd(this.m_invMassB, x);
+h += this.m_invIB * P.CrossVV(this.m_rB, x);
+} else this.m_impulse = 0;
+t.velocities[this.m_indexA].w = s;
+t.velocities[this.m_indexB].w = h;
+};
+i.prototype.SolveVelocityConstraints = function(t) {
+var e = t.velocities[this.m_indexA].v, n = t.velocities[this.m_indexA].w, r = t.velocities[this.m_indexB].v, s = t.velocities[this.m_indexB].w, o = P.AddVCrossSV(e, n, this.m_rA, i.SolveVelocityConstraints_s_vpA), a = P.AddVCrossSV(r, s, this.m_rB, i.SolveVelocityConstraints_s_vpB), c = -P.DotVV(this.m_uA, o) - this.m_ratio * P.DotVV(this.m_uB, a), l = -this.m_mass * c;
+this.m_impulse += l;
+var h = P.MulSV(-l, this.m_uA, i.SolveVelocityConstraints_s_PA), u = P.MulSV(-this.m_ratio * l, this.m_uB, i.SolveVelocityConstraints_s_PB);
+e.SelfMulAdd(this.m_invMassA, h);
+n += this.m_invIA * P.CrossVV(this.m_rA, h);
+r.SelfMulAdd(this.m_invMassB, u);
+s += this.m_invIB * P.CrossVV(this.m_rB, u);
+t.velocities[this.m_indexA].w = n;
+t.velocities[this.m_indexB].w = s;
+};
+i.prototype.SolvePositionConstraints = function(t) {
+var e = t.positions[this.m_indexA].c, n = t.positions[this.m_indexA].a, r = t.positions[this.m_indexB].c, s = t.positions[this.m_indexB].a, o = this.m_qA.SetAngle(n), a = this.m_qB.SetAngle(s);
+P.SubVV(this.m_localAnchorA, this.m_localCenterA, this.m_lalcA);
+var l = V.MulRV(o, this.m_lalcA, this.m_rA);
+P.SubVV(this.m_localAnchorB, this.m_localCenterB, this.m_lalcB);
+var h = V.MulRV(a, this.m_lalcB, this.m_rB), u = this.m_uA.Copy(e).SelfAdd(l).SelfSub(this.m_groundAnchorA), _ = this.m_uB.Copy(r).SelfAdd(h).SelfSub(this.m_groundAnchorB), f = u.Length(), d = _.Length();
+f > 10 * c ? u.SelfMul(1 / f) : u.SetZero();
+d > 10 * c ? _.SelfMul(1 / d) : _.SetZero();
+var m = P.CrossVV(l, u), p = P.CrossVV(h, _), v = this.m_invMassA + this.m_invIA * m * m, g = this.m_invMassB + this.m_invIB * p * p, x = v + this.m_ratio * this.m_ratio * g;
+x > 0 && (x = 1 / x);
+var C = this.m_constant - f - this.m_ratio * d, b = y(C), A = -x * C, S = P.MulSV(-A, u, i.SolvePositionConstraints_s_PA), w = P.MulSV(-this.m_ratio * A, _, i.SolvePositionConstraints_s_PB);
+e.SelfMulAdd(this.m_invMassA, S);
+n += this.m_invIA * P.CrossVV(l, S);
+r.SelfMulAdd(this.m_invMassB, w);
+s += this.m_invIB * P.CrossVV(h, w);
+t.positions[this.m_indexA].a = n;
+t.positions[this.m_indexB].a = s;
+return b < c;
+};
+i.prototype.GetAnchorA = function(t) {
+return this.m_bodyA.GetWorldPoint(this.m_localAnchorA, t);
+};
+i.prototype.GetAnchorB = function(t) {
+return this.m_bodyB.GetWorldPoint(this.m_localAnchorB, t);
+};
+i.prototype.GetReactionForce = function(t, e) {
+e.x = t * this.m_impulse * this.m_uB.x;
+e.y = t * this.m_impulse * this.m_uB.y;
+return e;
+};
+i.prototype.GetReactionTorque = function(t) {
+return 0;
+};
+i.prototype.GetGroundAnchorA = function() {
+return this.m_groundAnchorA;
+};
+i.prototype.GetGroundAnchorB = function() {
+return this.m_groundAnchorB;
+};
+i.prototype.GetLengthA = function() {
+return this.m_lengthA;
+};
+i.prototype.GetLengthB = function() {
+return this.m_lengthB;
+};
+i.prototype.GetRatio = function() {
+return this.m_ratio;
+};
+i.prototype.GetCurrentLengthA = function() {
+var t = this.m_bodyA.GetWorldPoint(this.m_localAnchorA, i.GetCurrentLengthA_s_p), e = this.m_groundAnchorA;
+return P.DistanceVV(t, e);
+};
+i.prototype.GetCurrentLengthB = function() {
+var t = this.m_bodyB.GetWorldPoint(this.m_localAnchorB, i.GetCurrentLengthB_s_p), e = this.m_groundAnchorB;
+return P.DistanceVV(t, e);
+};
+i.prototype.Dump = function(t) {
+var e = this.m_bodyA.m_islandIndex, i = this.m_bodyB.m_islandIndex;
+t(" const jd: b2PulleyJointDef = new b2PulleyJointDef();\n");
+t(" jd.bodyA = bodies[%d];\n", e);
+t(" jd.bodyB = bodies[%d];\n", i);
+t(" jd.collideConnected = %s;\n", this.m_collideConnected ? "true" : "false");
+t(" jd.groundAnchorA.Set(%.15f, %.15f);\n", this.m_groundAnchorA.x, this.m_groundAnchorA.y);
+t(" jd.groundAnchorB.Set(%.15f, %.15f);\n", this.m_groundAnchorB.x, this.m_groundAnchorB.y);
+t(" jd.localAnchorA.Set(%.15f, %.15f);\n", this.m_localAnchorA.x, this.m_localAnchorA.y);
+t(" jd.localAnchorB.Set(%.15f, %.15f);\n", this.m_localAnchorB.x, this.m_localAnchorB.y);
+t(" jd.lengthA = %.15f;\n", this.m_lengthA);
+t(" jd.lengthB = %.15f;\n", this.m_lengthB);
+t(" jd.ratio = %.15f;\n", this.m_ratio);
+t(" joints[%d] = this.m_world.CreateJoint(jd);\n", this.m_index);
+};
+i.prototype.ShiftOrigin = function(t) {
+this.m_groundAnchorA.SelfSub(t);
+this.m_groundAnchorB.SelfSub(t);
+};
+i.InitVelocityConstraints_s_PA = new P();
+i.InitVelocityConstraints_s_PB = new P();
+i.SolveVelocityConstraints_s_vpA = new P();
+i.SolveVelocityConstraints_s_vpB = new P();
+i.SolveVelocityConstraints_s_PA = new P();
+i.SolveVelocityConstraints_s_PB = new P();
+i.SolvePositionConstraints_s_PA = new P();
+i.SolvePositionConstraints_s_PB = new P();
+i.GetCurrentLengthA_s_p = new P();
+i.GetCurrentLengthB_s_p = new P();
+return i;
+})(fi), Di = (function(e) {
+$e(i, e);
+function i() {
+var i = e.call(this, t.b2JointType.e_revoluteJoint) || this;
+i.localAnchorA = new P(0, 0);
+i.localAnchorB = new P(0, 0);
+i.referenceAngle = 0;
+i.enableLimit = !1;
+i.lowerAngle = 0;
+i.upperAngle = 0;
+i.enableMotor = !1;
+i.motorSpeed = 0;
+i.maxMotorTorque = 0;
+return i;
+}
+i.prototype.Initialize = function(t, e, i) {
+this.bodyA = t;
+this.bodyB = e;
+this.bodyA.GetLocalPoint(i, this.localAnchorA);
+this.bodyB.GetLocalPoint(i, this.localAnchorB);
+this.referenceAngle = this.bodyB.GetAngle() - this.bodyA.GetAngle();
+};
+return i;
+})(_i), Ii = (function(i) {
+$e(n, i);
+function n(n) {
+var r = i.call(this, n) || this;
+r.m_localAnchorA = new P();
+r.m_localAnchorB = new P();
+r.m_impulse = new L();
+r.m_motorImpulse = 0;
+r.m_enableMotor = !1;
+r.m_maxMotorTorque = 0;
+r.m_motorSpeed = 0;
+r.m_enableLimit = !1;
+r.m_referenceAngle = 0;
+r.m_lowerAngle = 0;
+r.m_upperAngle = 0;
+r.m_indexA = 0;
+r.m_indexB = 0;
+r.m_rA = new P();
+r.m_rB = new P();
+r.m_localCenterA = new P();
+r.m_localCenterB = new P();
+r.m_invMassA = 0;
+r.m_invMassB = 0;
+r.m_invIA = 0;
+r.m_invIB = 0;
+r.m_mass = new O();
+r.m_motorMass = 0;
+r.m_limitState = t.b2LimitState.e_inactiveLimit;
+r.m_qA = new V();
+r.m_qB = new V();
+r.m_lalcA = new P();
+r.m_lalcB = new P();
+r.m_K = new F();
+r.m_localAnchorA.Copy(e(n.localAnchorA, P.ZERO));
+r.m_localAnchorB.Copy(e(n.localAnchorB, P.ZERO));
+r.m_referenceAngle = e(n.referenceAngle, 0);
+r.m_impulse.SetZero();
+r.m_motorImpulse = 0;
+r.m_lowerAngle = e(n.lowerAngle, 0);
+r.m_upperAngle = e(n.upperAngle, 0);
+r.m_maxMotorTorque = e(n.maxMotorTorque, 0);
+r.m_motorSpeed = e(n.motorSpeed, 0);
+r.m_enableLimit = e(n.enableLimit, !1);
+r.m_enableMotor = e(n.enableMotor, !1);
+r.m_limitState = t.b2LimitState.e_inactiveLimit;
+return r;
+}
+n.prototype.InitVelocityConstraints = function(e) {
+this.m_indexA = this.m_bodyA.m_islandIndex;
+this.m_indexB = this.m_bodyB.m_islandIndex;
+this.m_localCenterA.Copy(this.m_bodyA.m_sweep.localCenter);
+this.m_localCenterB.Copy(this.m_bodyB.m_sweep.localCenter);
+this.m_invMassA = this.m_bodyA.m_invMass;
+this.m_invMassB = this.m_bodyB.m_invMass;
+this.m_invIA = this.m_bodyA.m_invI;
+this.m_invIB = this.m_bodyB.m_invI;
+var i = e.positions[this.m_indexA].a, r = e.velocities[this.m_indexA].v, s = e.velocities[this.m_indexA].w, o = e.positions[this.m_indexB].a, a = e.velocities[this.m_indexB].v, c = e.velocities[this.m_indexB].w, h = this.m_qA.SetAngle(i), u = this.m_qB.SetAngle(o);
+P.SubVV(this.m_localAnchorA, this.m_localCenterA, this.m_lalcA);
+V.MulRV(h, this.m_lalcA, this.m_rA);
+P.SubVV(this.m_localAnchorB, this.m_localCenterB, this.m_lalcB);
+V.MulRV(u, this.m_lalcB, this.m_rB);
+var _ = this.m_invMassA, f = this.m_invMassB, d = this.m_invIA, m = this.m_invIB, p = d + m === 0;
+this.m_mass.ex.x = _ + f + this.m_rA.y * this.m_rA.y * d + this.m_rB.y * this.m_rB.y * m;
+this.m_mass.ey.x = -this.m_rA.y * this.m_rA.x * d - this.m_rB.y * this.m_rB.x * m;
+this.m_mass.ez.x = -this.m_rA.y * d - this.m_rB.y * m;
+this.m_mass.ex.y = this.m_mass.ey.x;
+this.m_mass.ey.y = _ + f + this.m_rA.x * this.m_rA.x * d + this.m_rB.x * this.m_rB.x * m;
+this.m_mass.ez.y = this.m_rA.x * d + this.m_rB.x * m;
+this.m_mass.ex.z = this.m_mass.ez.x;
+this.m_mass.ey.z = this.m_mass.ez.y;
+this.m_mass.ez.z = d + m;
+this.m_motorMass = d + m;
+this.m_motorMass > 0 && (this.m_motorMass = 1 / this.m_motorMass);
+this.m_enableMotor && !p || (this.m_motorImpulse = 0);
+if (this.m_enableLimit && !p) {
+var v = o - i - this.m_referenceAngle;
+if (y(this.m_upperAngle - this.m_lowerAngle) < 2 * l) this.m_limitState = t.b2LimitState.e_equalLimits; else if (v <= this.m_lowerAngle) {
+this.m_limitState !== t.b2LimitState.e_atLowerLimit && (this.m_impulse.z = 0);
+this.m_limitState = t.b2LimitState.e_atLowerLimit;
+} else if (v >= this.m_upperAngle) {
+this.m_limitState !== t.b2LimitState.e_atUpperLimit && (this.m_impulse.z = 0);
+this.m_limitState = t.b2LimitState.e_atUpperLimit;
+} else {
+this.m_limitState = t.b2LimitState.e_inactiveLimit;
+this.m_impulse.z = 0;
+}
+} else this.m_limitState = t.b2LimitState.e_inactiveLimit;
+if (e.step.warmStarting) {
+this.m_impulse.SelfMul(e.step.dtRatio);
+this.m_motorImpulse *= e.step.dtRatio;
+var g = n.InitVelocityConstraints_s_P.Set(this.m_impulse.x, this.m_impulse.y);
+r.SelfMulSub(_, g);
+s -= d * (P.CrossVV(this.m_rA, g) + this.m_motorImpulse + this.m_impulse.z);
+a.SelfMulAdd(f, g);
+c += m * (P.CrossVV(this.m_rB, g) + this.m_motorImpulse + this.m_impulse.z);
+} else {
+this.m_impulse.SetZero();
+this.m_motorImpulse = 0;
+}
+e.velocities[this.m_indexA].w = s;
+e.velocities[this.m_indexB].w = c;
+};
+n.prototype.SolveVelocityConstraints = function(e) {
+var i = e.velocities[this.m_indexA].v, r = e.velocities[this.m_indexA].w, s = e.velocities[this.m_indexB].v, o = e.velocities[this.m_indexB].w, a = this.m_invMassA, c = this.m_invMassB, l = this.m_invIA, h = this.m_invIB, u = l + h === 0;
+if (this.m_enableMotor && this.m_limitState !== t.b2LimitState.e_equalLimits && !u) {
+var _ = o - r - this.m_motorSpeed, f = -this.m_motorMass * _, d = this.m_motorImpulse, m = e.step.dt * this.m_maxMotorTorque;
+this.m_motorImpulse = C(this.m_motorImpulse + f, -m, m);
+r -= l * (f = this.m_motorImpulse - d);
+o += h * f;
+}
+if (this.m_enableLimit && this.m_limitState !== t.b2LimitState.e_inactiveLimit && !u) {
+var p = P.SubVV(P.AddVCrossSV(s, o, this.m_rB, P.s_t0), P.AddVCrossSV(i, r, this.m_rA, P.s_t1), n.SolveVelocityConstraints_s_Cdot1), v = o - r, y = this.m_mass.Solve33(p.x, p.y, v, n.SolveVelocityConstraints_s_impulse_v3).SelfNeg();
+if (this.m_limitState === t.b2LimitState.e_equalLimits) this.m_impulse.SelfAdd(y); else if (this.m_limitState === t.b2LimitState.e_atLowerLimit) {
+if (this.m_impulse.z + y.z < 0) {
+var g = -p.x + this.m_impulse.z * this.m_mass.ez.x, x = -p.y + this.m_impulse.z * this.m_mass.ez.y, b = this.m_mass.Solve22(g, x, n.SolveVelocityConstraints_s_reduced_v2);
+y.x = b.x;
+y.y = b.y;
+y.z = -this.m_impulse.z;
+this.m_impulse.x += b.x;
+this.m_impulse.y += b.y;
+this.m_impulse.z = 0;
+} else this.m_impulse.SelfAdd(y);
+} else if (this.m_limitState === t.b2LimitState.e_atUpperLimit) {
+if (this.m_impulse.z + y.z > 0) {
+g = -p.x + this.m_impulse.z * this.m_mass.ez.x, x = -p.y + this.m_impulse.z * this.m_mass.ez.y,
+b = this.m_mass.Solve22(g, x, n.SolveVelocityConstraints_s_reduced_v2);
+y.x = b.x;
+y.y = b.y;
+y.z = -this.m_impulse.z;
+this.m_impulse.x += b.x;
+this.m_impulse.y += b.y;
+this.m_impulse.z = 0;
+} else this.m_impulse.SelfAdd(y);
+}
+var A = n.SolveVelocityConstraints_s_P.Set(y.x, y.y);
+i.SelfMulSub(a, A);
+r -= l * (P.CrossVV(this.m_rA, A) + y.z);
+s.SelfMulAdd(c, A);
+o += h * (P.CrossVV(this.m_rB, A) + y.z);
+} else {
+var S = P.SubVV(P.AddVCrossSV(s, o, this.m_rB, P.s_t0), P.AddVCrossSV(i, r, this.m_rA, P.s_t1), n.SolveVelocityConstraints_s_Cdot_v2), w = this.m_mass.Solve22(-S.x, -S.y, n.SolveVelocityConstraints_s_impulse_v2);
+this.m_impulse.x += w.x;
+this.m_impulse.y += w.y;
+i.SelfMulSub(a, w);
+r -= l * P.CrossVV(this.m_rA, w);
+s.SelfMulAdd(c, w);
+o += h * P.CrossVV(this.m_rB, w);
+}
+e.velocities[this.m_indexA].w = r;
+e.velocities[this.m_indexB].w = o;
+};
+n.prototype.SolvePositionConstraints = function(e) {
+var i, r = e.positions[this.m_indexA].c, s = e.positions[this.m_indexA].a, o = e.positions[this.m_indexB].c, a = e.positions[this.m_indexB].a, h = this.m_qA.SetAngle(s), u = this.m_qB.SetAngle(a), _ = 0, f = this.m_invIA + this.m_invIB === 0;
+if (this.m_enableLimit && this.m_limitState !== t.b2LimitState.e_inactiveLimit && !f) {
+var d = a - s - this.m_referenceAngle, m = 0;
+if (this.m_limitState === t.b2LimitState.e_equalLimits) {
+var p = C(d - this.m_lowerAngle, -.13962634015955555, .13962634015955555);
+m = -this.m_motorMass * p;
+_ = y(p);
+} else if (this.m_limitState === t.b2LimitState.e_atLowerLimit) {
+_ = -(p = d - this.m_lowerAngle);
+p = C(p + l, -.13962634015955555, 0);
+m = -this.m_motorMass * p;
+} else if (this.m_limitState === t.b2LimitState.e_atUpperLimit) {
+_ = p = d - this.m_upperAngle;
+p = C(p - l, 0, .13962634015955555);
+m = -this.m_motorMass * p;
+}
+s -= this.m_invIA * m;
+a += this.m_invIB * m;
+}
+h.SetAngle(s);
+u.SetAngle(a);
+P.SubVV(this.m_localAnchorA, this.m_localCenterA, this.m_lalcA);
+var v = V.MulRV(h, this.m_lalcA, this.m_rA);
+P.SubVV(this.m_localAnchorB, this.m_localCenterB, this.m_lalcB);
+var g = V.MulRV(u, this.m_lalcB, this.m_rB), x = P.SubVV(P.AddVV(o, g, P.s_t0), P.AddVV(r, v, P.s_t1), n.SolvePositionConstraints_s_C_v2);
+i = x.Length();
+var b = this.m_invMassA, A = this.m_invMassB, S = this.m_invIA, w = this.m_invIB, T = this.m_K;
+T.ex.x = b + A + S * v.y * v.y + w * g.y * g.y;
+T.ex.y = -S * v.x * v.y - w * g.x * g.y;
+T.ey.x = T.ex.y;
+T.ey.y = b + A + S * v.x * v.x + w * g.x * g.x;
+var E = T.Solve(x.x, x.y, n.SolvePositionConstraints_s_impulse).SelfNeg();
+r.SelfMulSub(b, E);
+s -= S * P.CrossVV(v, E);
+o.SelfMulAdd(A, E);
+a += w * P.CrossVV(g, E);
+e.positions[this.m_indexA].a = s;
+e.positions[this.m_indexB].a = a;
+return i <= c && _ <= l;
+};
+n.prototype.GetAnchorA = function(t) {
+return this.m_bodyA.GetWorldPoint(this.m_localAnchorA, t);
+};
+n.prototype.GetAnchorB = function(t) {
+return this.m_bodyB.GetWorldPoint(this.m_localAnchorB, t);
+};
+n.prototype.GetReactionForce = function(t, e) {
+e.x = t * this.m_impulse.x;
+e.y = t * this.m_impulse.y;
+return e;
+};
+n.prototype.GetReactionTorque = function(t) {
+return t * this.m_impulse.z;
+};
+n.prototype.GetLocalAnchorA = function() {
+return this.m_localAnchorA;
+};
+n.prototype.GetLocalAnchorB = function() {
+return this.m_localAnchorB;
+};
+n.prototype.GetReferenceAngle = function() {
+return this.m_referenceAngle;
+};
+n.prototype.GetJointAngle = function() {
+return this.m_bodyB.m_sweep.a - this.m_bodyA.m_sweep.a - this.m_referenceAngle;
+};
+n.prototype.GetJointSpeed = function() {
+return this.m_bodyB.m_angularVelocity - this.m_bodyA.m_angularVelocity;
+};
+n.prototype.IsMotorEnabled = function() {
+return this.m_enableMotor;
+};
+n.prototype.EnableMotor = function(t) {
+if (t !== this.m_enableMotor) {
+this.m_bodyA.SetAwake(!0);
+this.m_bodyB.SetAwake(!0);
+this.m_enableMotor = t;
+}
+};
+n.prototype.GetMotorTorque = function(t) {
+return t * this.m_motorImpulse;
+};
+n.prototype.GetMotorSpeed = function() {
+return this.m_motorSpeed;
+};
+n.prototype.SetMaxMotorTorque = function(t) {
+if (t !== this.m_maxMotorTorque) {
+this.m_bodyA.SetAwake(!0);
+this.m_bodyB.SetAwake(!0);
+this.m_maxMotorTorque = t;
+}
+};
+n.prototype.GetMaxMotorTorque = function() {
+return this.m_maxMotorTorque;
+};
+n.prototype.IsLimitEnabled = function() {
+return this.m_enableLimit;
+};
+n.prototype.EnableLimit = function(t) {
+if (t !== this.m_enableLimit) {
+this.m_bodyA.SetAwake(!0);
+this.m_bodyB.SetAwake(!0);
+this.m_enableLimit = t;
+this.m_impulse.z = 0;
+}
+};
+n.prototype.GetLowerLimit = function() {
+return this.m_lowerAngle;
+};
+n.prototype.GetUpperLimit = function() {
+return this.m_upperAngle;
+};
+n.prototype.SetLimits = function(t, e) {
+if (t !== this.m_lowerAngle || e !== this.m_upperAngle) {
+this.m_bodyA.SetAwake(!0);
+this.m_bodyB.SetAwake(!0);
+this.m_impulse.z = 0;
+this.m_lowerAngle = t;
+this.m_upperAngle = e;
+}
+};
+n.prototype.SetMotorSpeed = function(t) {
+if (t !== this.m_motorSpeed) {
+this.m_bodyA.SetAwake(!0);
+this.m_bodyB.SetAwake(!0);
+this.m_motorSpeed = t;
+}
+};
+n.prototype.Dump = function(t) {
+var e = this.m_bodyA.m_islandIndex, i = this.m_bodyB.m_islandIndex;
+t(" const jd: b2RevoluteJointDef = new b2RevoluteJointDef();\n");
+t(" jd.bodyA = bodies[%d];\n", e);
+t(" jd.bodyB = bodies[%d];\n", i);
+t(" jd.collideConnected = %s;\n", this.m_collideConnected ? "true" : "false");
+t(" jd.localAnchorA.Set(%.15f, %.15f);\n", this.m_localAnchorA.x, this.m_localAnchorA.y);
+t(" jd.localAnchorB.Set(%.15f, %.15f);\n", this.m_localAnchorB.x, this.m_localAnchorB.y);
+t(" jd.referenceAngle = %.15f;\n", this.m_referenceAngle);
+t(" jd.enableLimit = %s;\n", this.m_enableLimit ? "true" : "false");
+t(" jd.lowerAngle = %.15f;\n", this.m_lowerAngle);
+t(" jd.upperAngle = %.15f;\n", this.m_upperAngle);
+t(" jd.enableMotor = %s;\n", this.m_enableMotor ? "true" : "false");
+t(" jd.motorSpeed = %.15f;\n", this.m_motorSpeed);
+t(" jd.maxMotorTorque = %.15f;\n", this.m_maxMotorTorque);
+t(" joints[%d] = this.m_world.CreateJoint(jd);\n", this.m_index);
+};
+n.InitVelocityConstraints_s_P = new P();
+n.SolveVelocityConstraints_s_P = new P();
+n.SolveVelocityConstraints_s_Cdot_v2 = new P();
+n.SolveVelocityConstraints_s_Cdot1 = new P();
+n.SolveVelocityConstraints_s_impulse_v3 = new L();
+n.SolveVelocityConstraints_s_reduced_v2 = new P();
+n.SolveVelocityConstraints_s_impulse_v2 = new P();
+n.SolvePositionConstraints_s_C_v2 = new P();
+n.SolvePositionConstraints_s_impulse = new P();
+return n;
+})(fi), Pi = (function(e) {
+$e(i, e);
+function i() {
+var i = e.call(this, t.b2JointType.e_ropeJoint) || this;
+i.localAnchorA = new P(-1, 0);
+i.localAnchorB = new P(1, 0);
+i.maxLength = 0;
+return i;
+}
+return i;
+})(_i), Ri = (function(i) {
+$e(n, i);
+function n(n) {
+var r = i.call(this, n) || this;
+r.m_localAnchorA = new P();
+r.m_localAnchorB = new P();
+r.m_maxLength = 0;
+r.m_length = 0;
+r.m_impulse = 0;
+r.m_indexA = 0;
+r.m_indexB = 0;
+r.m_u = new P();
+r.m_rA = new P();
+r.m_rB = new P();
+r.m_localCenterA = new P();
+r.m_localCenterB = new P();
+r.m_invMassA = 0;
+r.m_invMassB = 0;
+r.m_invIA = 0;
+r.m_invIB = 0;
+r.m_mass = 0;
+r.m_state = t.b2LimitState.e_inactiveLimit;
+r.m_qA = new V();
+r.m_qB = new V();
+r.m_lalcA = new P();
+r.m_lalcB = new P();
+r.m_localAnchorA.Copy(e(n.localAnchorA, new P(-1, 0)));
+r.m_localAnchorB.Copy(e(n.localAnchorB, new P(1, 0)));
+r.m_maxLength = e(n.maxLength, 0);
+return r;
+}
+n.prototype.InitVelocityConstraints = function(e) {
+this.m_indexA = this.m_bodyA.m_islandIndex;
+this.m_indexB = this.m_bodyB.m_islandIndex;
+this.m_localCenterA.Copy(this.m_bodyA.m_sweep.localCenter);
+this.m_localCenterB.Copy(this.m_bodyB.m_sweep.localCenter);
+this.m_invMassA = this.m_bodyA.m_invMass;
+this.m_invMassB = this.m_bodyB.m_invMass;
+this.m_invIA = this.m_bodyA.m_invI;
+this.m_invIB = this.m_bodyB.m_invI;
+var i = e.positions[this.m_indexA].c, r = e.positions[this.m_indexA].a, s = e.velocities[this.m_indexA].v, o = e.velocities[this.m_indexA].w, a = e.positions[this.m_indexB].c, l = e.positions[this.m_indexB].a, h = e.velocities[this.m_indexB].v, u = e.velocities[this.m_indexB].w, _ = this.m_qA.SetAngle(r), f = this.m_qB.SetAngle(l);
+P.SubVV(this.m_localAnchorA, this.m_localCenterA, this.m_lalcA);
+V.MulRV(_, this.m_lalcA, this.m_rA);
+P.SubVV(this.m_localAnchorB, this.m_localCenterB, this.m_lalcB);
+V.MulRV(f, this.m_lalcB, this.m_rB);
+this.m_u.Copy(a).SelfAdd(this.m_rB).SelfSub(i).SelfSub(this.m_rA);
+this.m_length = this.m_u.Length();
+var d = this.m_length - this.m_maxLength;
+this.m_state = d > 0 ? t.b2LimitState.e_atUpperLimit : t.b2LimitState.e_inactiveLimit;
+if (this.m_length > c) {
+this.m_u.SelfMul(1 / this.m_length);
+var m = P.CrossVV(this.m_rA, this.m_u), p = P.CrossVV(this.m_rB, this.m_u), v = this.m_invMassA + this.m_invIA * m * m + this.m_invMassB + this.m_invIB * p * p;
+this.m_mass = 0 !== v ? 1 / v : 0;
+if (e.step.warmStarting) {
+this.m_impulse *= e.step.dtRatio;
+var y = P.MulSV(this.m_impulse, this.m_u, n.InitVelocityConstraints_s_P);
+s.SelfMulSub(this.m_invMassA, y);
+o -= this.m_invIA * P.CrossVV(this.m_rA, y);
+h.SelfMulAdd(this.m_invMassB, y);
+u += this.m_invIB * P.CrossVV(this.m_rB, y);
+} else this.m_impulse = 0;
+e.velocities[this.m_indexA].w = o;
+e.velocities[this.m_indexB].w = u;
+} else {
+this.m_u.SetZero();
+this.m_mass = 0;
+this.m_impulse = 0;
+}
+};
+n.prototype.SolveVelocityConstraints = function(t) {
+var e = t.velocities[this.m_indexA].v, i = t.velocities[this.m_indexA].w, r = t.velocities[this.m_indexB].v, s = t.velocities[this.m_indexB].w, o = P.AddVCrossSV(e, i, this.m_rA, n.SolveVelocityConstraints_s_vpA), a = P.AddVCrossSV(r, s, this.m_rB, n.SolveVelocityConstraints_s_vpB), c = this.m_length - this.m_maxLength, l = P.DotVV(this.m_u, P.SubVV(a, o, P.s_t0));
+c < 0 && (l += t.step.inv_dt * c);
+var h = -this.m_mass * l, u = this.m_impulse;
+this.m_impulse = g(0, this.m_impulse + h);
+h = this.m_impulse - u;
+var _ = P.MulSV(h, this.m_u, n.SolveVelocityConstraints_s_P);
+e.SelfMulSub(this.m_invMassA, _);
+i -= this.m_invIA * P.CrossVV(this.m_rA, _);
+r.SelfMulAdd(this.m_invMassB, _);
+s += this.m_invIB * P.CrossVV(this.m_rB, _);
+t.velocities[this.m_indexA].w = i;
+t.velocities[this.m_indexB].w = s;
+};
+n.prototype.SolvePositionConstraints = function(t) {
+var e = t.positions[this.m_indexA].c, i = t.positions[this.m_indexA].a, r = t.positions[this.m_indexB].c, s = t.positions[this.m_indexB].a, o = this.m_qA.SetAngle(i), a = this.m_qB.SetAngle(s);
+P.SubVV(this.m_localAnchorA, this.m_localCenterA, this.m_lalcA);
+var l = V.MulRV(o, this.m_lalcA, this.m_rA);
+P.SubVV(this.m_localAnchorB, this.m_localCenterB, this.m_lalcB);
+var h = V.MulRV(a, this.m_lalcB, this.m_rB), u = this.m_u.Copy(r).SelfAdd(h).SelfSub(e).SelfSub(l), _ = u.Normalize(), f = _ - this.m_maxLength;
+f = C(f, 0, .2);
+var d = -this.m_mass * f, m = P.MulSV(d, u, n.SolvePositionConstraints_s_P);
+e.SelfMulSub(this.m_invMassA, m);
+i -= this.m_invIA * P.CrossVV(l, m);
+r.SelfMulAdd(this.m_invMassB, m);
+s += this.m_invIB * P.CrossVV(h, m);
+t.positions[this.m_indexA].a = i;
+t.positions[this.m_indexB].a = s;
+return _ - this.m_maxLength < c;
+};
+n.prototype.GetAnchorA = function(t) {
+return this.m_bodyA.GetWorldPoint(this.m_localAnchorA, t);
+};
+n.prototype.GetAnchorB = function(t) {
+return this.m_bodyB.GetWorldPoint(this.m_localAnchorB, t);
+};
+n.prototype.GetReactionForce = function(t, e) {
+return P.MulSV(t * this.m_impulse, this.m_u, e);
+};
+n.prototype.GetReactionTorque = function(t) {
+return 0;
+};
+n.prototype.GetLocalAnchorA = function() {
+return this.m_localAnchorA;
+};
+n.prototype.GetLocalAnchorB = function() {
+return this.m_localAnchorB;
+};
+n.prototype.SetMaxLength = function(t) {
+this.m_maxLength = t;
+};
+n.prototype.GetMaxLength = function() {
+return this.m_maxLength;
+};
+n.prototype.GetLimitState = function() {
+return this.m_state;
+};
+n.prototype.Dump = function(t) {
+var e = this.m_bodyA.m_islandIndex, i = this.m_bodyB.m_islandIndex;
+t(" const jd: b2RopeJointDef = new b2RopeJointDef();\n");
+t(" jd.bodyA = bodies[%d];\n", e);
+t(" jd.bodyB = bodies[%d];\n", i);
+t(" jd.collideConnected = %s;\n", this.m_collideConnected ? "true" : "false");
+t(" jd.localAnchorA.Set(%.15f, %.15f);\n", this.m_localAnchorA.x, this.m_localAnchorA.y);
+t(" jd.localAnchorB.Set(%.15f, %.15f);\n", this.m_localAnchorB.x, this.m_localAnchorB.y);
+t(" jd.maxLength = %.15f;\n", this.m_maxLength);
+t(" joints[%d] = this.m_world.CreateJoint(jd);\n", this.m_index);
+};
+n.InitVelocityConstraints_s_P = new P();
+n.SolveVelocityConstraints_s_vpA = new P();
+n.SolveVelocityConstraints_s_vpB = new P();
+n.SolveVelocityConstraints_s_P = new P();
+n.SolvePositionConstraints_s_P = new P();
+return n;
+})(fi), Li = (function(e) {
+$e(i, e);
+function i() {
+var i = e.call(this, t.b2JointType.e_weldJoint) || this;
+i.localAnchorA = new P();
+i.localAnchorB = new P();
+i.referenceAngle = 0;
+i.frequencyHz = 0;
+i.dampingRatio = 0;
+return i;
+}
+i.prototype.Initialize = function(t, e, i) {
+this.bodyA = t;
+this.bodyB = e;
+this.bodyA.GetLocalPoint(i, this.localAnchorA);
+this.bodyB.GetLocalPoint(i, this.localAnchorB);
+this.referenceAngle = this.bodyB.GetAngle() - this.bodyA.GetAngle();
+};
+return i;
+})(_i), Fi = (function(t) {
+$e(i, t);
+function i(i) {
+var n = t.call(this, i) || this;
+n.m_frequencyHz = 0;
+n.m_dampingRatio = 0;
+n.m_bias = 0;
+n.m_localAnchorA = new P();
+n.m_localAnchorB = new P();
+n.m_referenceAngle = 0;
+n.m_gamma = 0;
+n.m_impulse = new L(0, 0, 0);
+n.m_indexA = 0;
+n.m_indexB = 0;
+n.m_rA = new P();
+n.m_rB = new P();
+n.m_localCenterA = new P();
+n.m_localCenterB = new P();
+n.m_invMassA = 0;
+n.m_invMassB = 0;
+n.m_invIA = 0;
+n.m_invIB = 0;
+n.m_mass = new O();
+n.m_qA = new V();
+n.m_qB = new V();
+n.m_lalcA = new P();
+n.m_lalcB = new P();
+n.m_K = new O();
+n.m_frequencyHz = e(i.frequencyHz, 0);
+n.m_dampingRatio = e(i.dampingRatio, 0);
+n.m_localAnchorA.Copy(e(i.localAnchorA, P.ZERO));
+n.m_localAnchorB.Copy(e(i.localAnchorB, P.ZERO));
+n.m_referenceAngle = e(i.referenceAngle, 0);
+n.m_impulse.SetZero();
+return n;
+}
+i.prototype.InitVelocityConstraints = function(t) {
+this.m_indexA = this.m_bodyA.m_islandIndex;
+this.m_indexB = this.m_bodyB.m_islandIndex;
+this.m_localCenterA.Copy(this.m_bodyA.m_sweep.localCenter);
+this.m_localCenterB.Copy(this.m_bodyB.m_sweep.localCenter);
+this.m_invMassA = this.m_bodyA.m_invMass;
+this.m_invMassB = this.m_bodyB.m_invMass;
+this.m_invIA = this.m_bodyA.m_invI;
+this.m_invIB = this.m_bodyB.m_invI;
+var e = t.positions[this.m_indexA].a, n = t.velocities[this.m_indexA].v, r = t.velocities[this.m_indexA].w, o = t.positions[this.m_indexB].a, a = t.velocities[this.m_indexB].v, c = t.velocities[this.m_indexB].w, l = this.m_qA.SetAngle(e), h = this.m_qB.SetAngle(o);
+P.SubVV(this.m_localAnchorA, this.m_localCenterA, this.m_lalcA);
+V.MulRV(l, this.m_lalcA, this.m_rA);
+P.SubVV(this.m_localAnchorB, this.m_localCenterB, this.m_lalcB);
+V.MulRV(h, this.m_lalcB, this.m_rB);
+var u = this.m_invMassA, _ = this.m_invMassB, f = this.m_invIA, d = this.m_invIB, m = this.m_K;
+m.ex.x = u + _ + this.m_rA.y * this.m_rA.y * f + this.m_rB.y * this.m_rB.y * d;
+m.ey.x = -this.m_rA.y * this.m_rA.x * f - this.m_rB.y * this.m_rB.x * d;
+m.ez.x = -this.m_rA.y * f - this.m_rB.y * d;
+m.ex.y = m.ey.x;
+m.ey.y = u + _ + this.m_rA.x * this.m_rA.x * f + this.m_rB.x * this.m_rB.x * d;
+m.ez.y = this.m_rA.x * f + this.m_rB.x * d;
+m.ex.z = m.ez.x;
+m.ey.z = m.ez.y;
+m.ez.z = f + d;
+if (this.m_frequencyHz > 0) {
+m.GetInverse22(this.m_mass);
+var p = f + d, v = p > 0 ? 1 / p : 0, y = o - e - this.m_referenceAngle, g = 2 * s * this.m_frequencyHz, x = 2 * v * this.m_dampingRatio * g, C = v * g * g, b = t.step.dt;
+this.m_gamma = b * (x + b * C);
+this.m_gamma = 0 !== this.m_gamma ? 1 / this.m_gamma : 0;
+this.m_bias = y * b * C * this.m_gamma;
+p += this.m_gamma;
+this.m_mass.ez.z = 0 !== p ? 1 / p : 0;
+} else {
+m.GetSymInverse33(this.m_mass);
+this.m_gamma = 0;
+this.m_bias = 0;
+}
+if (t.step.warmStarting) {
+this.m_impulse.SelfMul(t.step.dtRatio);
+var A = i.InitVelocityConstraints_s_P.Set(this.m_impulse.x, this.m_impulse.y);
+n.SelfMulSub(u, A);
+r -= f * (P.CrossVV(this.m_rA, A) + this.m_impulse.z);
+a.SelfMulAdd(_, A);
+c += d * (P.CrossVV(this.m_rB, A) + this.m_impulse.z);
+} else this.m_impulse.SetZero();
+t.velocities[this.m_indexA].w = r;
+t.velocities[this.m_indexB].w = c;
+};
+i.prototype.SolveVelocityConstraints = function(t) {
+var e = t.velocities[this.m_indexA].v, n = t.velocities[this.m_indexA].w, r = t.velocities[this.m_indexB].v, s = t.velocities[this.m_indexB].w, o = this.m_invMassA, a = this.m_invMassB, c = this.m_invIA, l = this.m_invIB;
+if (this.m_frequencyHz > 0) {
+var h = s - n, u = -this.m_mass.ez.z * (h + this.m_bias + this.m_gamma * this.m_impulse.z);
+this.m_impulse.z += u;
+n -= c * u;
+s += l * u;
+var _ = P.SubVV(P.AddVCrossSV(r, s, this.m_rB, P.s_t0), P.AddVCrossSV(e, n, this.m_rA, P.s_t1), i.SolveVelocityConstraints_s_Cdot1), f = O.MulM33XY(this.m_mass, _.x, _.y, i.SolveVelocityConstraints_s_impulse1).SelfNeg();
+this.m_impulse.x += f.x;
+this.m_impulse.y += f.y;
+var d = f;
+e.SelfMulSub(o, d);
+n -= c * P.CrossVV(this.m_rA, d);
+r.SelfMulAdd(a, d);
+s += l * P.CrossVV(this.m_rB, d);
+} else {
+_ = P.SubVV(P.AddVCrossSV(r, s, this.m_rB, P.s_t0), P.AddVCrossSV(e, n, this.m_rA, P.s_t1), i.SolveVelocityConstraints_s_Cdot1),
+h = s - n;
+var m = O.MulM33XYZ(this.m_mass, _.x, _.y, h, i.SolveVelocityConstraints_s_impulse).SelfNeg();
+this.m_impulse.SelfAdd(m);
+d = i.SolveVelocityConstraints_s_P.Set(m.x, m.y);
+e.SelfMulSub(o, d);
+n -= c * (P.CrossVV(this.m_rA, d) + m.z);
+r.SelfMulAdd(a, d);
+s += l * (P.CrossVV(this.m_rB, d) + m.z);
+}
+t.velocities[this.m_indexA].w = n;
+t.velocities[this.m_indexB].w = s;
+};
+i.prototype.SolvePositionConstraints = function(t) {
+var e = t.positions[this.m_indexA].c, n = t.positions[this.m_indexA].a, r = t.positions[this.m_indexB].c, s = t.positions[this.m_indexB].a, o = this.m_qA.SetAngle(n), a = this.m_qB.SetAngle(s), h = this.m_invMassA, u = this.m_invMassB, _ = this.m_invIA, f = this.m_invIB;
+P.SubVV(this.m_localAnchorA, this.m_localCenterA, this.m_lalcA);
+var d = V.MulRV(o, this.m_lalcA, this.m_rA);
+P.SubVV(this.m_localAnchorB, this.m_localCenterB, this.m_lalcB);
+var m, p, v = V.MulRV(a, this.m_lalcB, this.m_rB), g = this.m_K;
+g.ex.x = h + u + d.y * d.y * _ + v.y * v.y * f;
+g.ey.x = -d.y * d.x * _ - v.y * v.x * f;
+g.ez.x = -d.y * _ - v.y * f;
+g.ex.y = g.ey.x;
+g.ey.y = h + u + d.x * d.x * _ + v.x * v.x * f;
+g.ez.y = d.x * _ + v.x * f;
+g.ex.z = g.ez.x;
+g.ey.z = g.ez.y;
+g.ez.z = _ + f;
+if (this.m_frequencyHz > 0) {
+m = (C = P.SubVV(P.AddVV(r, v, P.s_t0), P.AddVV(e, d, P.s_t1), i.SolvePositionConstraints_s_C1)).Length();
+p = 0;
+var x = g.Solve22(C.x, C.y, i.SolvePositionConstraints_s_P).SelfNeg();
+e.SelfMulSub(h, x);
+n -= _ * P.CrossVV(d, x);
+r.SelfMulAdd(u, x);
+s += f * P.CrossVV(v, x);
+} else {
+var C = P.SubVV(P.AddVV(r, v, P.s_t0), P.AddVV(e, d, P.s_t1), i.SolvePositionConstraints_s_C1), b = s - n - this.m_referenceAngle;
+m = C.Length();
+p = y(b);
+var A = g.Solve33(C.x, C.y, b, i.SolvePositionConstraints_s_impulse).SelfNeg();
+x = i.SolvePositionConstraints_s_P.Set(A.x, A.y);
+e.SelfMulSub(h, x);
+n -= _ * (P.CrossVV(this.m_rA, x) + A.z);
+r.SelfMulAdd(u, x);
+s += f * (P.CrossVV(this.m_rB, x) + A.z);
+}
+t.positions[this.m_indexA].a = n;
+t.positions[this.m_indexB].a = s;
+return m <= c && p <= l;
+};
+i.prototype.GetAnchorA = function(t) {
+return this.m_bodyA.GetWorldPoint(this.m_localAnchorA, t);
+};
+i.prototype.GetAnchorB = function(t) {
+return this.m_bodyB.GetWorldPoint(this.m_localAnchorB, t);
+};
+i.prototype.GetReactionForce = function(t, e) {
+e.x = t * this.m_impulse.x;
+e.y = t * this.m_impulse.y;
+return e;
+};
+i.prototype.GetReactionTorque = function(t) {
+return t * this.m_impulse.z;
+};
+i.prototype.GetLocalAnchorA = function() {
+return this.m_localAnchorA;
+};
+i.prototype.GetLocalAnchorB = function() {
+return this.m_localAnchorB;
+};
+i.prototype.GetReferenceAngle = function() {
+return this.m_referenceAngle;
+};
+i.prototype.SetFrequency = function(t) {
+this.m_frequencyHz = t;
+};
+i.prototype.GetFrequency = function() {
+return this.m_frequencyHz;
+};
+i.prototype.SetDampingRatio = function(t) {
+this.m_dampingRatio = t;
+};
+i.prototype.GetDampingRatio = function() {
+return this.m_dampingRatio;
+};
+i.prototype.Dump = function(t) {
+var e = this.m_bodyA.m_islandIndex, i = this.m_bodyB.m_islandIndex;
+t(" const jd: b2WeldJointDef = new b2WeldJointDef();\n");
+t(" jd.bodyA = bodies[%d];\n", e);
+t(" jd.bodyB = bodies[%d];\n", i);
+t(" jd.collideConnected = %s;\n", this.m_collideConnected ? "true" : "false");
+t(" jd.localAnchorA.Set(%.15f, %.15f);\n", this.m_localAnchorA.x, this.m_localAnchorA.y);
+t(" jd.localAnchorB.Set(%.15f, %.15f);\n", this.m_localAnchorB.x, this.m_localAnchorB.y);
+t(" jd.referenceAngle = %.15f;\n", this.m_referenceAngle);
+t(" jd.frequencyHz = %.15f;\n", this.m_frequencyHz);
+t(" jd.dampingRatio = %.15f;\n", this.m_dampingRatio);
+t(" joints[%d] = this.m_world.CreateJoint(jd);\n", this.m_index);
+};
+i.InitVelocityConstraints_s_P = new P();
+i.SolveVelocityConstraints_s_Cdot1 = new P();
+i.SolveVelocityConstraints_s_impulse1 = new P();
+i.SolveVelocityConstraints_s_impulse = new L();
+i.SolveVelocityConstraints_s_P = new P();
+i.SolvePositionConstraints_s_C1 = new P();
+i.SolvePositionConstraints_s_P = new P();
+i.SolvePositionConstraints_s_impulse = new L();
+return i;
+})(fi), Oi = (function(e) {
+$e(i, e);
+function i() {
+var i = e.call(this, t.b2JointType.e_wheelJoint) || this;
+i.localAnchorA = new P(0, 0);
+i.localAnchorB = new P(0, 0);
+i.localAxisA = new P(1, 0);
+i.enableMotor = !1;
+i.maxMotorTorque = 0;
+i.motorSpeed = 0;
+i.frequencyHz = 2;
+i.dampingRatio = .7;
+return i;
+}
+i.prototype.Initialize = function(t, e, i, n) {
+this.bodyA = t;
+this.bodyB = e;
+this.bodyA.GetLocalPoint(i, this.localAnchorA);
+this.bodyB.GetLocalPoint(i, this.localAnchorB);
+this.bodyA.GetLocalVector(n, this.localAxisA);
+};
+return i;
+})(_i), Vi = (function(t) {
+$e(i, t);
+function i(i) {
+var n = t.call(this, i) || this;
+n.m_frequencyHz = 0;
+n.m_dampingRatio = 0;
+n.m_localAnchorA = new P();
+n.m_localAnchorB = new P();
+n.m_localXAxisA = new P();
+n.m_localYAxisA = new P();
+n.m_impulse = 0;
+n.m_motorImpulse = 0;
+n.m_springImpulse = 0;
+n.m_maxMotorTorque = 0;
+n.m_motorSpeed = 0;
+n.m_enableMotor = !1;
+n.m_indexA = 0;
+n.m_indexB = 0;
+n.m_localCenterA = new P();
+n.m_localCenterB = new P();
+n.m_invMassA = 0;
+n.m_invMassB = 0;
+n.m_invIA = 0;
+n.m_invIB = 0;
+n.m_ax = new P();
+n.m_ay = new P();
+n.m_sAx = 0;
+n.m_sBx = 0;
+n.m_sAy = 0;
+n.m_sBy = 0;
+n.m_mass = 0;
+n.m_motorMass = 0;
+n.m_springMass = 0;
+n.m_bias = 0;
+n.m_gamma = 0;
+n.m_qA = new V();
+n.m_qB = new V();
+n.m_lalcA = new P();
+n.m_lalcB = new P();
+n.m_rA = new P();
+n.m_rB = new P();
+n.m_frequencyHz = e(i.frequencyHz, 2);
+n.m_dampingRatio = e(i.dampingRatio, .7);
+n.m_localAnchorA.Copy(e(i.localAnchorA, P.ZERO));
+n.m_localAnchorB.Copy(e(i.localAnchorB, P.ZERO));
+n.m_localXAxisA.Copy(e(i.localAxisA, P.UNITX));
+P.CrossOneV(n.m_localXAxisA, n.m_localYAxisA);
+n.m_maxMotorTorque = e(i.maxMotorTorque, 0);
+n.m_motorSpeed = e(i.motorSpeed, 0);
+n.m_enableMotor = e(i.enableMotor, !1);
+n.m_ax.SetZero();
+n.m_ay.SetZero();
+return n;
+}
+i.prototype.GetMotorSpeed = function() {
+return this.m_motorSpeed;
+};
+i.prototype.GetMaxMotorTorque = function() {
+return this.m_maxMotorTorque;
+};
+i.prototype.SetSpringFrequencyHz = function(t) {
+this.m_frequencyHz = t;
+};
+i.prototype.GetSpringFrequencyHz = function() {
+return this.m_frequencyHz;
+};
+i.prototype.SetSpringDampingRatio = function(t) {
+this.m_dampingRatio = t;
+};
+i.prototype.GetSpringDampingRatio = function() {
+return this.m_dampingRatio;
+};
+i.prototype.InitVelocityConstraints = function(t) {
+this.m_indexA = this.m_bodyA.m_islandIndex;
+this.m_indexB = this.m_bodyB.m_islandIndex;
+this.m_localCenterA.Copy(this.m_bodyA.m_sweep.localCenter);
+this.m_localCenterB.Copy(this.m_bodyB.m_sweep.localCenter);
+this.m_invMassA = this.m_bodyA.m_invMass;
+this.m_invMassB = this.m_bodyB.m_invMass;
+this.m_invIA = this.m_bodyA.m_invI;
+this.m_invIB = this.m_bodyB.m_invI;
+var e = this.m_invMassA, n = this.m_invMassB, r = this.m_invIA, o = this.m_invIB, a = t.positions[this.m_indexA].c, c = t.positions[this.m_indexA].a, l = t.velocities[this.m_indexA].v, h = t.velocities[this.m_indexA].w, u = t.positions[this.m_indexB].c, _ = t.positions[this.m_indexB].a, f = t.velocities[this.m_indexB].v, d = t.velocities[this.m_indexB].w, m = this.m_qA.SetAngle(c), p = this.m_qB.SetAngle(_);
+P.SubVV(this.m_localAnchorA, this.m_localCenterA, this.m_lalcA);
+var v = V.MulRV(m, this.m_lalcA, this.m_rA);
+P.SubVV(this.m_localAnchorB, this.m_localCenterB, this.m_lalcB);
+var y = V.MulRV(p, this.m_lalcB, this.m_rB), g = P.SubVV(P.AddVV(u, y, P.s_t0), P.AddVV(a, v, P.s_t1), i.InitVelocityConstraints_s_d);
+V.MulRV(m, this.m_localYAxisA, this.m_ay);
+this.m_sAy = P.CrossVV(P.AddVV(g, v, P.s_t0), this.m_ay);
+this.m_sBy = P.CrossVV(y, this.m_ay);
+this.m_mass = e + n + r * this.m_sAy * this.m_sAy + o * this.m_sBy * this.m_sBy;
+this.m_mass > 0 && (this.m_mass = 1 / this.m_mass);
+this.m_springMass = 0;
+this.m_bias = 0;
+this.m_gamma = 0;
+if (this.m_frequencyHz > 0) {
+V.MulRV(m, this.m_localXAxisA, this.m_ax);
+this.m_sAx = P.CrossVV(P.AddVV(g, v, P.s_t0), this.m_ax);
+this.m_sBx = P.CrossVV(y, this.m_ax);
+var x = e + n + r * this.m_sAx * this.m_sAx + o * this.m_sBx * this.m_sBx;
+if (x > 0) {
+this.m_springMass = 1 / x;
+var C = P.DotVV(g, this.m_ax), b = 2 * s * this.m_frequencyHz, A = 2 * this.m_springMass * this.m_dampingRatio * b, S = this.m_springMass * b * b, w = t.step.dt;
+this.m_gamma = w * (A + w * S);
+this.m_gamma > 0 && (this.m_gamma = 1 / this.m_gamma);
+this.m_bias = C * w * S * this.m_gamma;
+this.m_springMass = x + this.m_gamma;
+this.m_springMass > 0 && (this.m_springMass = 1 / this.m_springMass);
+}
+} else this.m_springImpulse = 0;
+if (this.m_enableMotor) {
+this.m_motorMass = r + o;
+this.m_motorMass > 0 && (this.m_motorMass = 1 / this.m_motorMass);
+} else {
+this.m_motorMass = 0;
+this.m_motorImpulse = 0;
+}
+if (t.step.warmStarting) {
+this.m_impulse *= t.step.dtRatio;
+this.m_springImpulse *= t.step.dtRatio;
+this.m_motorImpulse *= t.step.dtRatio;
+var T = P.AddVV(P.MulSV(this.m_impulse, this.m_ay, P.s_t0), P.MulSV(this.m_springImpulse, this.m_ax, P.s_t1), i.InitVelocityConstraints_s_P), E = this.m_impulse * this.m_sAy + this.m_springImpulse * this.m_sAx + this.m_motorImpulse, M = this.m_impulse * this.m_sBy + this.m_springImpulse * this.m_sBx + this.m_motorImpulse;
+l.SelfMulSub(this.m_invMassA, T);
+h -= this.m_invIA * E;
+f.SelfMulAdd(this.m_invMassB, T);
+d += this.m_invIB * M;
+} else {
+this.m_impulse = 0;
+this.m_springImpulse = 0;
+this.m_motorImpulse = 0;
+}
+t.velocities[this.m_indexA].w = h;
+t.velocities[this.m_indexB].w = d;
+};
+i.prototype.SolveVelocityConstraints = function(t) {
+var e = this.m_invMassA, n = this.m_invMassB, r = this.m_invIA, s = this.m_invIB, o = t.velocities[this.m_indexA].v, a = t.velocities[this.m_indexA].w, c = t.velocities[this.m_indexB].v, l = t.velocities[this.m_indexB].w, h = P.DotVV(this.m_ax, P.SubVV(c, o, P.s_t0)) + this.m_sBx * l - this.m_sAx * a, u = -this.m_springMass * (h + this.m_bias + this.m_gamma * this.m_springImpulse);
+this.m_springImpulse += u;
+var _ = P.MulSV(u, this.m_ax, i.SolveVelocityConstraints_s_P), f = u * this.m_sAx, d = u * this.m_sBx;
+o.SelfMulSub(e, _);
+a -= r * f;
+c.SelfMulAdd(n, _);
+h = (l += s * d) - a - this.m_motorSpeed, u = -this.m_motorMass * h;
+var m = this.m_motorImpulse, p = t.step.dt * this.m_maxMotorTorque;
+this.m_motorImpulse = C(this.m_motorImpulse + u, -p, p);
+a -= r * (u = this.m_motorImpulse - m);
+l += s * u;
+h = P.DotVV(this.m_ay, P.SubVV(c, o, P.s_t0)) + this.m_sBy * l - this.m_sAy * a,
+u = -this.m_mass * h;
+this.m_impulse += u;
+_ = P.MulSV(u, this.m_ay, i.SolveVelocityConstraints_s_P), f = u * this.m_sAy, d = u * this.m_sBy;
+o.SelfMulSub(e, _);
+a -= r * f;
+c.SelfMulAdd(n, _);
+l += s * d;
+t.velocities[this.m_indexA].w = a;
+t.velocities[this.m_indexB].w = l;
+};
+i.prototype.SolvePositionConstraints = function(t) {
+var e = t.positions[this.m_indexA].c, n = t.positions[this.m_indexA].a, r = t.positions[this.m_indexB].c, s = t.positions[this.m_indexB].a, o = this.m_qA.SetAngle(n), a = this.m_qB.SetAngle(s);
+P.SubVV(this.m_localAnchorA, this.m_localCenterA, this.m_lalcA);
+var l = V.MulRV(o, this.m_lalcA, this.m_rA);
+P.SubVV(this.m_localAnchorB, this.m_localCenterB, this.m_lalcB);
+var h, u = V.MulRV(a, this.m_lalcB, this.m_rB), _ = P.AddVV(P.SubVV(r, e, P.s_t0), P.SubVV(u, l, P.s_t1), i.SolvePositionConstraints_s_d), f = V.MulRV(o, this.m_localYAxisA, this.m_ay), d = P.CrossVV(P.AddVV(_, l, P.s_t0), f), m = P.CrossVV(u, f), p = P.DotVV(_, this.m_ay), v = this.m_invMassA + this.m_invMassB + this.m_invIA * this.m_sAy * this.m_sAy + this.m_invIB * this.m_sBy * this.m_sBy;
+h = 0 !== v ? -p / v : 0;
+var g = P.MulSV(h, f, i.SolvePositionConstraints_s_P), x = h * d, C = h * m;
+e.SelfMulSub(this.m_invMassA, g);
+n -= this.m_invIA * x;
+r.SelfMulAdd(this.m_invMassB, g);
+s += this.m_invIB * C;
+t.positions[this.m_indexA].a = n;
+t.positions[this.m_indexB].a = s;
+return y(p) <= c;
+};
+i.prototype.GetDefinition = function(t) {
+return t;
+};
+i.prototype.GetAnchorA = function(t) {
+return this.m_bodyA.GetWorldPoint(this.m_localAnchorA, t);
+};
+i.prototype.GetAnchorB = function(t) {
+return this.m_bodyB.GetWorldPoint(this.m_localAnchorB, t);
+};
+i.prototype.GetReactionForce = function(t, e) {
+e.x = t * (this.m_impulse * this.m_ay.x + this.m_springImpulse * this.m_ax.x);
+e.y = t * (this.m_impulse * this.m_ay.y + this.m_springImpulse * this.m_ax.y);
+return e;
+};
+i.prototype.GetReactionTorque = function(t) {
+return t * this.m_motorImpulse;
+};
+i.prototype.GetLocalAnchorA = function() {
+return this.m_localAnchorA;
+};
+i.prototype.GetLocalAnchorB = function() {
+return this.m_localAnchorB;
+};
+i.prototype.GetLocalAxisA = function() {
+return this.m_localXAxisA;
+};
+i.prototype.GetJointTranslation = function() {
+return this.GetPrismaticJointTranslation();
+};
+i.prototype.GetJointLinearSpeed = function() {
+return this.GetPrismaticJointSpeed();
+};
+i.prototype.GetJointAngle = function() {
+return this.GetRevoluteJointAngle();
+};
+i.prototype.GetJointAngularSpeed = function() {
+return this.GetRevoluteJointSpeed();
+};
+i.prototype.GetPrismaticJointTranslation = function() {
+var t = this.m_bodyA, e = this.m_bodyB, i = t.GetWorldPoint(this.m_localAnchorA, new P()), n = e.GetWorldPoint(this.m_localAnchorB, new P()), r = P.SubVV(n, i, new P()), s = t.GetWorldVector(this.m_localXAxisA, new P());
+return P.DotVV(r, s);
+};
+i.prototype.GetPrismaticJointSpeed = function() {
+var t = this.m_bodyA, e = this.m_bodyB;
+P.SubVV(this.m_localAnchorA, t.m_sweep.localCenter, this.m_lalcA);
+var i = V.MulRV(t.m_xf.q, this.m_lalcA, this.m_rA);
+P.SubVV(this.m_localAnchorB, e.m_sweep.localCenter, this.m_lalcB);
+var n = V.MulRV(e.m_xf.q, this.m_lalcB, this.m_rB), r = P.AddVV(t.m_sweep.c, i, P.s_t0), s = P.AddVV(e.m_sweep.c, n, P.s_t1), o = P.SubVV(s, r, P.s_t2), a = t.GetWorldVector(this.m_localXAxisA, new P()), c = t.m_linearVelocity, l = e.m_linearVelocity, h = t.m_angularVelocity, u = e.m_angularVelocity;
+return P.DotVV(o, P.CrossSV(h, a, P.s_t0)) + P.DotVV(a, P.SubVV(P.AddVCrossSV(l, u, n, P.s_t0), P.AddVCrossSV(c, h, i, P.s_t1), P.s_t0));
+};
+i.prototype.GetRevoluteJointAngle = function() {
+return this.m_bodyB.m_sweep.a - this.m_bodyA.m_sweep.a;
+};
+i.prototype.GetRevoluteJointSpeed = function() {
+var t = this.m_bodyA.m_angularVelocity;
+return this.m_bodyB.m_angularVelocity - t;
+};
+i.prototype.IsMotorEnabled = function() {
+return this.m_enableMotor;
+};
+i.prototype.EnableMotor = function(t) {
+if (t !== this.m_enableMotor) {
+this.m_bodyA.SetAwake(!0);
+this.m_bodyB.SetAwake(!0);
+this.m_enableMotor = t;
+}
+};
+i.prototype.SetMotorSpeed = function(t) {
+if (t !== this.m_motorSpeed) {
+this.m_bodyA.SetAwake(!0);
+this.m_bodyB.SetAwake(!0);
+this.m_motorSpeed = t;
+}
+};
+i.prototype.SetMaxMotorTorque = function(t) {
+if (t !== this.m_maxMotorTorque) {
+this.m_bodyA.SetAwake(!0);
+this.m_bodyB.SetAwake(!0);
+this.m_maxMotorTorque = t;
+}
+};
+i.prototype.GetMotorTorque = function(t) {
+return t * this.m_motorImpulse;
+};
+i.prototype.Dump = function(t) {
+var e = this.m_bodyA.m_islandIndex, i = this.m_bodyB.m_islandIndex;
+t(" const jd: b2WheelJointDef = new b2WheelJointDef();\n");
+t(" jd.bodyA = bodies[%d];\n", e);
+t(" jd.bodyB = bodies[%d];\n", i);
+t(" jd.collideConnected = %s;\n", this.m_collideConnected ? "true" : "false");
+t(" jd.localAnchorA.Set(%.15f, %.15f);\n", this.m_localAnchorA.x, this.m_localAnchorA.y);
+t(" jd.localAnchorB.Set(%.15f, %.15f);\n", this.m_localAnchorB.x, this.m_localAnchorB.y);
+t(" jd.localAxisA.Set(%.15f, %.15f);\n", this.m_localXAxisA.x, this.m_localXAxisA.y);
+t(" jd.enableMotor = %s;\n", this.m_enableMotor ? "true" : "false");
+t(" jd.motorSpeed = %.15f;\n", this.m_motorSpeed);
+t(" jd.maxMotorTorque = %.15f;\n", this.m_maxMotorTorque);
+t(" jd.frequencyHz = %.15f;\n", this.m_frequencyHz);
+t(" jd.dampingRatio = %.15f;\n", this.m_dampingRatio);
+t(" joints[%d] = this.m_world.CreateJoint(jd);\n", this.m_index);
+};
+i.InitVelocityConstraints_s_d = new P();
+i.InitVelocityConstraints_s_P = new P();
+i.SolveVelocityConstraints_s_P = new P();
+i.SolvePositionConstraints_s_d = new P();
+i.SolvePositionConstraints_s_P = new P();
+return i;
+})(fi);
+function Ni(t, e) {
+return w(t * e);
+}
+function ki(t, e) {
+return t > e ? t : e;
+}
+var zi = (function() {
+return function(t) {
+this.prev = null;
+this.next = null;
+this.contact = t;
+};
+})(), Gi = (function() {
+function t() {
+this.m_islandFlag = !1;
+this.m_touchingFlag = !1;
+this.m_enabledFlag = !1;
+this.m_filterFlag = !1;
+this.m_bulletHitFlag = !1;
+this.m_toiFlag = !1;
+this.m_prev = null;
+this.m_next = null;
+this.m_indexA = 0;
+this.m_indexB = 0;
+this.m_manifold = new Ct();
+this.m_toiCount = 0;
+this.m_toi = 0;
+this.m_friction = 0;
+this.m_restitution = 0;
+this.m_tangentSpeed = 0;
+this.m_oldManifold = new Ct();
+this.m_nodeA = new zi(this);
+this.m_nodeB = new zi(this);
+}
+t.prototype.GetManifold = function() {
+return this.m_manifold;
+};
+t.prototype.GetWorldManifold = function(t) {
+var e = this.m_fixtureA.GetBody(), i = this.m_fixtureB.GetBody(), n = this.m_fixtureA.GetShape(), r = this.m_fixtureB.GetShape();
+t.Initialize(this.m_manifold, e.GetTransform(), n.m_radius, i.GetTransform(), r.m_radius);
+};
+t.prototype.IsTouching = function() {
+return this.m_touchingFlag;
+};
+t.prototype.SetEnabled = function(t) {
+this.m_enabledFlag = t;
+};
+t.prototype.IsEnabled = function() {
+return this.m_enabledFlag;
+};
+t.prototype.GetNext = function() {
+return this.m_next;
+};
+t.prototype.GetFixtureA = function() {
+return this.m_fixtureA;
+};
+t.prototype.GetChildIndexA = function() {
+return this.m_indexA;
+};
+t.prototype.GetFixtureB = function() {
+return this.m_fixtureB;
+};
+t.prototype.GetChildIndexB = function() {
+return this.m_indexB;
+};
+t.prototype.FlagForFiltering = function() {
+this.m_filterFlag = !0;
+};
+t.prototype.SetFriction = function(t) {
+this.m_friction = t;
+};
+t.prototype.GetFriction = function() {
+return this.m_friction;
+};
+t.prototype.ResetFriction = function() {
+this.m_friction = Ni(this.m_fixtureA.m_friction, this.m_fixtureB.m_friction);
+};
+t.prototype.SetRestitution = function(t) {
+this.m_restitution = t;
+};
+t.prototype.GetRestitution = function() {
+return this.m_restitution;
+};
+t.prototype.ResetRestitution = function() {
+this.m_restitution = ki(this.m_fixtureA.m_restitution, this.m_fixtureB.m_restitution);
+};
+t.prototype.SetTangentSpeed = function(t) {
+this.m_tangentSpeed = t;
+};
+t.prototype.GetTangentSpeed = function() {
+return this.m_tangentSpeed;
+};
+t.prototype.Reset = function(t, e, i, n) {
+this.m_islandFlag = !1;
+this.m_touchingFlag = !1;
+this.m_enabledFlag = !0;
+this.m_filterFlag = !1;
+this.m_bulletHitFlag = !1;
+this.m_toiFlag = !1;
+this.m_fixtureA = t;
+this.m_fixtureB = i;
+this.m_indexA = e;
+this.m_indexB = n;
+this.m_manifold.pointCount = 0;
+this.m_prev = null;
+this.m_next = null;
+delete this.m_nodeA.contact;
+this.m_nodeA.prev = null;
+this.m_nodeA.next = null;
+delete this.m_nodeA.other;
+delete this.m_nodeB.contact;
+this.m_nodeB.prev = null;
+this.m_nodeB.next = null;
+delete this.m_nodeB.other;
+this.m_toiCount = 0;
+this.m_friction = Ni(this.m_fixtureA.m_friction, this.m_fixtureB.m_friction);
+this.m_restitution = ki(this.m_fixtureA.m_restitution, this.m_fixtureB.m_restitution);
+};
+t.prototype.Update = function(t) {
+var e = this.m_oldManifold;
+this.m_oldManifold = this.m_manifold;
+this.m_manifold = e;
+this.m_enabledFlag = !0;
+var i = !1, n = this.m_touchingFlag, r = this.m_fixtureA.IsSensor(), s = this.m_fixtureB.IsSensor(), o = r || s, a = this.m_fixtureA.GetBody(), c = this.m_fixtureB.GetBody(), l = a.GetTransform(), h = c.GetTransform();
+if (o) {
+var u = this.m_fixtureA.GetShape(), _ = this.m_fixtureB.GetShape();
+i = Pt(u, this.m_indexA, _, this.m_indexB, l, h);
+this.m_manifold.pointCount = 0;
+} else {
+this.Evaluate(this.m_manifold, l, h);
+i = this.m_manifold.pointCount > 0;
+for (var f = 0; f < this.m_manifold.pointCount; ++f) {
+var d = this.m_manifold.points[f];
+d.normalImpulse = 0;
+d.tangentImpulse = 0;
+for (var m = d.id, p = 0; p < this.m_oldManifold.pointCount; ++p) {
+var v = this.m_oldManifold.points[p];
+if (v.id.key === m.key) {
+d.normalImpulse = v.normalImpulse;
+d.tangentImpulse = v.tangentImpulse;
+break;
+}
+}
+}
+if (i !== n) {
+a.SetAwake(!0);
+c.SetAwake(!0);
+}
+}
+this.m_touchingFlag = i;
+!n && i && t && t.BeginContact(this);
+n && !i && t && t.EndContact(this);
+!o && i && t && t.PreSolve(this, this.m_oldManifold);
+};
+t.prototype.ComputeTOI = function(e, i) {
+var n = t.ComputeTOI_s_input;
+n.proxyA.SetShape(this.m_fixtureA.GetShape(), this.m_indexA);
+n.proxyB.SetShape(this.m_fixtureB.GetShape(), this.m_indexB);
+n.sweepA.Copy(e);
+n.sweepB.Copy(i);
+n.tMax = c;
+var r = t.ComputeTOI_s_output;
+re(r, n);
+return r.t;
+};
+t.ComputeTOI_s_input = new qt();
+t.ComputeTOI_s_output = new Xt();
+return t;
+})(), Ui = (function(t) {
+$e(e, t);
+function e() {
+return t.call(this) || this;
+}
+e.Create = function(t) {
+return new e();
+};
+e.Destroy = function(t, e) {};
+e.prototype.Reset = function(e, i, n, r) {
+t.prototype.Reset.call(this, e, i, n, r);
+};
+e.prototype.Evaluate = function(t, e, i) {
+ae(t, this.m_fixtureA.GetShape(), e, this.m_fixtureB.GetShape(), i);
+};
+return e;
+})(Gi), ji = (function(t) {
+$e(e, t);
+function e() {
+return t.call(this) || this;
+}
+e.Create = function(t) {
+return new e();
+};
+e.Destroy = function(t, e) {};
+e.prototype.Reset = function(e, i, n, r) {
+t.prototype.Reset.call(this, e, i, n, r);
+};
+e.prototype.Evaluate = function(t, e, i) {
+Fe(t, this.m_fixtureA.GetShape(), e, this.m_fixtureB.GetShape(), i);
+};
+return e;
+})(Gi), Wi = (function(t) {
+$e(e, t);
+function e() {
+return t.call(this) || this;
+}
+e.Create = function(t) {
+return new e();
+};
+e.Destroy = function(t, e) {};
+e.prototype.Reset = function(e, i, n, r) {
+t.prototype.Reset.call(this, e, i, n, r);
+};
+e.prototype.Evaluate = function(t, e, i) {
+ue(t, this.m_fixtureA.GetShape(), e, this.m_fixtureB.GetShape(), i);
+};
+return e;
+})(Gi), Hi = (function(t) {
+$e(e, t);
+function e() {
+return t.call(this) || this;
+}
+e.Create = function(t) {
+return new e();
+};
+e.Destroy = function(t, e) {};
+e.prototype.Reset = function(e, i, n, r) {
+t.prototype.Reset.call(this, e, i, n, r);
+};
+e.prototype.Evaluate = function(t, e, i) {
+We(t, this.m_fixtureA.GetShape(), e, this.m_fixtureB.GetShape(), i);
+};
+return e;
+})(Gi), qi = (function(t) {
+$e(e, t);
+function e() {
+return t.call(this) || this;
+}
+e.Create = function(t) {
+return new e();
+};
+e.Destroy = function(t, e) {};
+e.prototype.Reset = function(e, i, n, r) {
+t.prototype.Reset.call(this, e, i, n, r);
+};
+e.prototype.Evaluate = function(t, e, i) {
+Je(t, this.m_fixtureA.GetShape(), e, this.m_fixtureB.GetShape(), i);
+};
+return e;
+})(Gi), Xi = (function(t) {
+$e(e, t);
+function e() {
+return t.call(this) || this;
+}
+e.Create = function(t) {
+return new e();
+};
+e.Destroy = function(t, e) {};
+e.prototype.Reset = function(e, i, n, r) {
+t.prototype.Reset.call(this, e, i, n, r);
+};
+e.prototype.Evaluate = function(t, i, n) {
+var r = this.m_fixtureA.GetShape(), s = this.m_fixtureB.GetShape(), o = r, a = e.Evaluate_s_edge;
+o.GetChildEdge(a, this.m_indexA);
+We(t, a, i, s, n);
+};
+e.Evaluate_s_edge = new ii();
+return e;
+})(Gi), Yi = (function(t) {
+$e(e, t);
+function e() {
+return t.call(this) || this;
+}
+e.Create = function(t) {
+return new e();
+};
+e.Destroy = function(t, e) {};
+e.prototype.Reset = function(e, i, n, r) {
+t.prototype.Reset.call(this, e, i, n, r);
+};
+e.prototype.Evaluate = function(t, i, n) {
+var r = this.m_fixtureA.GetShape(), s = this.m_fixtureB.GetShape(), o = r, a = e.Evaluate_s_edge;
+o.GetChildEdge(a, this.m_indexA);
+Je(t, a, i, s, n);
+};
+e.Evaluate_s_edge = new ii();
+return e;
+})(Gi), Ji = (function() {
+return function() {
+this.createFcn = null;
+this.destroyFcn = null;
+this.primary = !1;
+};
+})(), Zi = (function() {
+function e(t) {
+this.m_allocator = null;
+this.m_allocator = t;
+this.InitializeRegisters();
+}
+e.prototype.AddType = function(t, e, i, n) {
+var r = this, s = d(256, (function(e) {
+return t(r.m_allocator);
+}));
+function o(e) {
+return s.pop() || t(e);
+}
+function a(t, e) {
+s.push(t);
+}
+this.m_registers[i][n].createFcn = o;
+this.m_registers[i][n].destroyFcn = a;
+this.m_registers[i][n].primary = !0;
+if (i !== n) {
+this.m_registers[n][i].createFcn = o;
+this.m_registers[n][i].destroyFcn = a;
+this.m_registers[n][i].primary = !1;
+}
+};
+e.prototype.InitializeRegisters = function() {
+this.m_registers = [];
+for (var e = 0; e < t.b2ShapeType.e_shapeTypeCount; e++) {
+this.m_registers[e] = [];
+for (var i = 0; i < t.b2ShapeType.e_shapeTypeCount; i++) this.m_registers[e][i] = new Ji();
+}
+this.AddType(Ui.Create, Ui.Destroy, t.b2ShapeType.e_circleShape, t.b2ShapeType.e_circleShape);
+this.AddType(Wi.Create, Wi.Destroy, t.b2ShapeType.e_polygonShape, t.b2ShapeType.e_circleShape);
+this.AddType(ji.Create, ji.Destroy, t.b2ShapeType.e_polygonShape, t.b2ShapeType.e_polygonShape);
+this.AddType(Hi.Create, Hi.Destroy, t.b2ShapeType.e_edgeShape, t.b2ShapeType.e_circleShape);
+this.AddType(qi.Create, qi.Destroy, t.b2ShapeType.e_edgeShape, t.b2ShapeType.e_polygonShape);
+this.AddType(Xi.Create, Xi.Destroy, t.b2ShapeType.e_chainShape, t.b2ShapeType.e_circleShape);
+this.AddType(Yi.Create, Yi.Destroy, t.b2ShapeType.e_chainShape, t.b2ShapeType.e_polygonShape);
+};
+e.prototype.Create = function(t, e, i, n) {
+var r = t.GetType(), s = i.GetType(), o = this.m_registers[r][s];
+if (o.createFcn) {
+var a = o.createFcn(this.m_allocator);
+o.primary ? a.Reset(t, e, i, n) : a.Reset(i, n, t, e);
+return a;
+}
+return null;
+};
+e.prototype.Destroy = function(t) {
+var e = t.m_fixtureA, i = t.m_fixtureB;
+if (t.m_manifold.pointCount > 0 && !e.IsSensor() && !i.IsSensor()) {
+e.GetBody().SetAwake(!0);
+i.GetBody().SetAwake(!0);
+}
+var n = e.GetType(), r = i.GetType(), s = this.m_registers[n][r];
+s.destroyFcn && s.destroyFcn(t, this.m_allocator);
+};
+return e;
+})(), Ki = (function() {
+function t() {}
+t.prototype.SayGoodbyeJoint = function(t) {};
+t.prototype.SayGoodbyeFixture = function(t) {};
+t.prototype.SayGoodbyeParticleGroup = function(t) {};
+t.prototype.SayGoodbyeParticle = function(t, e) {};
+return t;
+})(), Qi = (function() {
+function e() {}
+e.prototype.ShouldCollide = function(e, i) {
+var n = e.GetBody(), r = i.GetBody();
+if (r.GetType() === t.b2BodyType.b2_staticBody && n.GetType() === t.b2BodyType.b2_staticBody) return !1;
+if (!r.ShouldCollideConnected(n)) return !1;
+var s = e.GetFilterData(), o = i.GetFilterData();
+return s.groupIndex === o.groupIndex && 0 !== s.groupIndex ? s.groupIndex > 0 : 0 != (s.maskBits & o.categoryBits) && 0 != (s.categoryBits & o.maskBits);
+};
+e.prototype.ShouldCollideFixtureParticle = function(t, e, i) {
+return !0;
+};
+e.prototype.ShouldCollideParticleParticle = function(t, e, i) {
+return !0;
+};
+e.b2_defaultFilter = new e();
+return e;
+})(), $i = (function() {
+return function() {
+this.normalImpulses = m(o);
+this.tangentImpulses = m(o);
+this.count = 0;
+};
+})(), tn = (function() {
+function t() {}
+t.prototype.BeginContact = function(t) {};
+t.prototype.EndContact = function(t) {};
+t.prototype.BeginContactFixtureParticle = function(t, e) {};
+t.prototype.EndContactFixtureParticle = function(t, e) {};
+t.prototype.BeginContactParticleParticle = function(t, e) {};
+t.prototype.EndContactParticleParticle = function(t, e) {};
+t.prototype.PreSolve = function(t, e) {};
+t.prototype.PostSolve = function(t, e) {};
+t.b2_defaultListener = new t();
+return t;
+})(), en = (function() {
+function t() {}
+t.prototype.ReportFixture = function(t) {
+return !0;
+};
+t.prototype.ReportParticle = function(t, e) {
+return !1;
+};
+t.prototype.ShouldQueryParticleSystem = function(t) {
+return !0;
+};
+return t;
+})(), nn = (function() {
+function t() {}
+t.prototype.ReportFixture = function(t, e, i, n) {
+return n;
+};
+t.prototype.ReportParticle = function(t, e, i, n, r) {
+return 0;
+};
+t.prototype.ShouldQueryParticleSystem = function(t) {
+return !0;
+};
+return t;
+})(), rn = (function() {
+function e() {
+this.m_broadPhase = new Vt();
+this.m_contactList = null;
+this.m_contactCount = 0;
+this.m_contactFilter = Qi.b2_defaultFilter;
+this.m_contactListener = tn.b2_defaultListener;
+this.m_allocator = null;
+this.m_contactFactory = new Zi(this.m_allocator);
+}
+e.prototype.AddPair = function(t, e) {
+var i = t.fixture, n = e.fixture, r = t.childIndex, s = e.childIndex, o = i.GetBody(), a = n.GetBody();
+if (o !== a) {
+for (var c = a.GetContactList(); c; ) {
+if (c.other === o) {
+var l = c.contact.GetFixtureA(), h = c.contact.GetFixtureB(), u = c.contact.GetChildIndexA(), _ = c.contact.GetChildIndexB();
+if (l === i && h === n && u === r && _ === s) return;
+if (l === n && h === i && u === s && _ === r) return;
+}
+c = c.next;
+}
+if (!this.m_contactFilter || this.m_contactFilter.ShouldCollide(i, n)) {
+var f = this.m_contactFactory.Create(i, r, n, s);
+if (null !== f) {
+i = f.GetFixtureA();
+n = f.GetFixtureB();
+r = f.GetChildIndexA();
+s = f.GetChildIndexB();
+o = i.m_body;
+a = n.m_body;
+f.m_prev = null;
+f.m_next = this.m_contactList;
+null !== this.m_contactList && (this.m_contactList.m_prev = f);
+this.m_contactList = f;
+f.m_nodeA.contact = f;
+f.m_nodeA.other = a;
+f.m_nodeA.prev = null;
+f.m_nodeA.next = o.m_contactList;
+null !== o.m_contactList && (o.m_contactList.prev = f.m_nodeA);
+o.m_contactList = f.m_nodeA;
+f.m_nodeB.contact = f;
+f.m_nodeB.other = o;
+f.m_nodeB.prev = null;
+f.m_nodeB.next = a.m_contactList;
+null !== a.m_contactList && (a.m_contactList.prev = f.m_nodeB);
+a.m_contactList = f.m_nodeB;
+if (!i.IsSensor() && !n.IsSensor()) {
+o.SetAwake(!0);
+a.SetAwake(!0);
+}
+++this.m_contactCount;
+}
+}
+}
+};
+e.prototype.FindNewContacts = function() {
+var t = this;
+this.m_broadPhase.UpdatePairs((function(e, i) {
+t.AddPair(e, i);
+}));
+};
+e.prototype.Destroy = function(t) {
+var e = t.GetFixtureA(), i = t.GetFixtureB(), n = e.GetBody(), r = i.GetBody();
+this.m_contactListener && t.IsTouching() && this.m_contactListener.EndContact(t);
+t.m_prev && (t.m_prev.m_next = t.m_next);
+t.m_next && (t.m_next.m_prev = t.m_prev);
+t === this.m_contactList && (this.m_contactList = t.m_next);
+t.m_nodeA.prev && (t.m_nodeA.prev.next = t.m_nodeA.next);
+t.m_nodeA.next && (t.m_nodeA.next.prev = t.m_nodeA.prev);
+t.m_nodeA === n.m_contactList && (n.m_contactList = t.m_nodeA.next);
+t.m_nodeB.prev && (t.m_nodeB.prev.next = t.m_nodeB.next);
+t.m_nodeB.next && (t.m_nodeB.next.prev = t.m_nodeB.prev);
+t.m_nodeB === r.m_contactList && (r.m_contactList = t.m_nodeB.next);
+this.m_contactFactory.Destroy(t);
+--this.m_contactCount;
+};
+e.prototype.Collide = function() {
+for (var e = this.m_contactList; e; ) {
+var i = e.GetFixtureA(), n = e.GetFixtureB(), r = e.GetChildIndexA(), s = e.GetChildIndexB(), o = i.GetBody(), a = n.GetBody();
+if (e.m_filterFlag) {
+if (this.m_contactFilter && !this.m_contactFilter.ShouldCollide(i, n)) {
+e = (_ = e).m_next;
+this.Destroy(_);
+continue;
+}
+e.m_filterFlag = !1;
+}
+var c = o.IsAwake() && o.m_type !== t.b2BodyType.b2_staticBody, l = a.IsAwake() && a.m_type !== t.b2BodyType.b2_staticBody;
+if (c || l) {
+var h = i.m_proxies[r].treeNode, u = n.m_proxies[s].treeNode;
+if (Et(h.aabb, u.aabb)) {
+e.Update(this.m_contactListener);
+e = e.m_next;
+} else {
+var _;
+e = (_ = e).m_next;
+this.Destroy(_);
+}
+} else e = e.m_next;
+}
+};
+return e;
+})(), sn = (function() {
+function t() {
+this.step = 0;
+this.collide = 0;
+this.solve = 0;
+this.solveInit = 0;
+this.solveVelocity = 0;
+this.solvePosition = 0;
+this.broadphase = 0;
+this.solveTOI = 0;
+}
+t.prototype.Reset = function() {
+this.step = 0;
+this.collide = 0;
+this.solve = 0;
+this.solveInit = 0;
+this.solveVelocity = 0;
+this.solvePosition = 0;
+this.broadphase = 0;
+this.solveTOI = 0;
+return this;
+};
+return t;
+})(), on = (function() {
+function t() {
+this.dt = 0;
+this.inv_dt = 0;
+this.dtRatio = 0;
+this.velocityIterations = 0;
+this.positionIterations = 0;
+this.particleIterations = 0;
+this.warmStarting = !1;
+}
+t.prototype.Copy = function(t) {
+this.dt = t.dt;
+this.inv_dt = t.inv_dt;
+this.dtRatio = t.dtRatio;
+this.positionIterations = t.positionIterations;
+this.velocityIterations = t.velocityIterations;
+this.particleIterations = t.particleIterations;
+this.warmStarting = t.warmStarting;
+return this;
+};
+return t;
+})(), an = (function() {
+function t() {
+this.c = new P();
+this.a = 0;
+}
+t.MakeArray = function(e) {
+return d(e, (function(e) {
+return new t();
+}));
+};
+return t;
+})(), cn = (function() {
+function t() {
+this.v = new P();
+this.w = 0;
+}
+t.MakeArray = function(e) {
+return d(e, (function(e) {
+return new t();
+}));
+};
+return t;
+})(), ln = (function() {
+return function() {
+this.step = new on();
+};
+})(), hn = (function() {
+function t() {
+this.rA = new P();
+this.rB = new P();
+this.normalImpulse = 0;
+this.tangentImpulse = 0;
+this.normalMass = 0;
+this.tangentMass = 0;
+this.velocityBias = 0;
+}
+t.MakeArray = function(e) {
+return d(e, (function(e) {
+return new t();
+}));
+};
+return t;
+})(), un = (function() {
+function t() {
+this.points = hn.MakeArray(o);
+this.normal = new P();
+this.tangent = new P();
+this.normalMass = new F();
+this.K = new F();
+this.indexA = 0;
+this.indexB = 0;
+this.invMassA = 0;
+this.invMassB = 0;
+this.invIA = 0;
+this.invIB = 0;
+this.friction = 0;
+this.restitution = 0;
+this.tangentSpeed = 0;
+this.pointCount = 0;
+this.contactIndex = 0;
+}
+t.MakeArray = function(e) {
+return d(e, (function(e) {
+return new t();
+}));
+};
+return t;
+})(), _n = (function() {
+function e() {
+this.localPoints = P.MakeArray(o);
+this.localNormal = new P();
+this.localPoint = new P();
+this.indexA = 0;
+this.indexB = 0;
+this.invMassA = 0;
+this.invMassB = 0;
+this.localCenterA = new P();
+this.localCenterB = new P();
+this.invIA = 0;
+this.invIB = 0;
+this.type = t.b2ManifoldType.e_unknown;
+this.radiusA = 0;
+this.radiusB = 0;
+this.pointCount = 0;
+}
+e.MakeArray = function(t) {
+return d(t, (function(t) {
+return new e();
+}));
+};
+return e;
+})(), fn = (function() {
+return function() {
+this.step = new on();
+this.count = 0;
+this.allocator = null;
+};
+})(), dn = (function() {
+function e() {
+this.normal = new P();
+this.point = new P();
+this.separation = 0;
+}
+e.prototype.Initialize = function(i, n, r, s) {
+var o = e.Initialize_s_pointA, a = e.Initialize_s_pointB, c = e.Initialize_s_planePoint, l = e.Initialize_s_clipPoint;
+switch (i.type) {
+case t.b2ManifoldType.e_circles:
+N.MulXV(n, i.localPoint, o);
+N.MulXV(r, i.localPoints[0], a);
+P.SubVV(a, o, this.normal).SelfNormalize();
+P.MidVV(o, a, this.point);
+this.separation = P.DotVV(P.SubVV(a, o, P.s_t0), this.normal) - i.radiusA - i.radiusB;
+break;
+
+case t.b2ManifoldType.e_faceA:
+V.MulRV(n.q, i.localNormal, this.normal);
+N.MulXV(n, i.localPoint, c);
+N.MulXV(r, i.localPoints[s], l);
+this.separation = P.DotVV(P.SubVV(l, c, P.s_t0), this.normal) - i.radiusA - i.radiusB;
+this.point.Copy(l);
+break;
+
+case t.b2ManifoldType.e_faceB:
+V.MulRV(r.q, i.localNormal, this.normal);
+N.MulXV(r, i.localPoint, c);
+N.MulXV(n, i.localPoints[s], l);
+this.separation = P.DotVV(P.SubVV(l, c, P.s_t0), this.normal) - i.radiusA - i.radiusB;
+this.point.Copy(l);
+this.normal.SelfNeg();
+}
+};
+e.Initialize_s_pointA = new P();
+e.Initialize_s_pointB = new P();
+e.Initialize_s_planePoint = new P();
+e.Initialize_s_clipPoint = new P();
+return e;
+})(), mn = (function() {
+function t() {
+this.m_step = new on();
+this.m_allocator = null;
+this.m_positionConstraints = _n.MakeArray(1024);
+this.m_velocityConstraints = un.MakeArray(1024);
+this.m_count = 0;
+}
+t.prototype.Initialize = function(t) {
+this.m_step.Copy(t.step);
+this.m_allocator = t.allocator;
+this.m_count = t.count;
+if (this.m_positionConstraints.length < this.m_count) for (var e = x(2 * this.m_positionConstraints.length, this.m_count); this.m_positionConstraints.length < e; ) this.m_positionConstraints[this.m_positionConstraints.length] = new _n();
+if (this.m_velocityConstraints.length < this.m_count) for (e = x(2 * this.m_velocityConstraints.length, this.m_count); this.m_velocityConstraints.length < e; ) this.m_velocityConstraints[this.m_velocityConstraints.length] = new un();
+this.m_positions = t.positions;
+this.m_velocities = t.velocities;
+this.m_contacts = t.contacts;
+for (var i = 0; i < this.m_count; ++i) {
+var n = this.m_contacts[i], r = n.m_fixtureA, s = n.m_fixtureB, o = r.GetShape(), a = s.GetShape(), c = o.m_radius, l = a.m_radius, h = r.GetBody(), u = s.GetBody(), _ = n.GetManifold(), f = _.pointCount, d = this.m_velocityConstraints[i];
+d.friction = n.m_friction;
+d.restitution = n.m_restitution;
+d.tangentSpeed = n.m_tangentSpeed;
+d.indexA = h.m_islandIndex;
+d.indexB = u.m_islandIndex;
+d.invMassA = h.m_invMass;
+d.invMassB = u.m_invMass;
+d.invIA = h.m_invI;
+d.invIB = u.m_invI;
+d.contactIndex = i;
+d.pointCount = f;
+d.K.SetZero();
+d.normalMass.SetZero();
+var m = this.m_positionConstraints[i];
+m.indexA = h.m_islandIndex;
+m.indexB = u.m_islandIndex;
+m.invMassA = h.m_invMass;
+m.invMassB = u.m_invMass;
+m.localCenterA.Copy(h.m_sweep.localCenter);
+m.localCenterB.Copy(u.m_sweep.localCenter);
+m.invIA = h.m_invI;
+m.invIB = u.m_invI;
+m.localNormal.Copy(_.localNormal);
+m.localPoint.Copy(_.localPoint);
+m.pointCount = f;
+m.radiusA = c;
+m.radiusB = l;
+m.type = _.type;
+for (var p = 0; p < f; ++p) {
+var v = _.points[p], y = d.points[p];
+if (this.m_step.warmStarting) {
+y.normalImpulse = this.m_step.dtRatio * v.normalImpulse;
+y.tangentImpulse = this.m_step.dtRatio * v.tangentImpulse;
+} else {
+y.normalImpulse = 0;
+y.tangentImpulse = 0;
+}
+y.rA.SetZero();
+y.rB.SetZero();
+y.normalMass = 0;
+y.tangentMass = 0;
+y.velocityBias = 0;
+m.localPoints[p].Copy(v.localPoint);
+}
+}
+return this;
+};
+t.prototype.InitializeVelocityConstraints = function() {
+for (var e = t.InitializeVelocityConstraints_s_xfA, i = t.InitializeVelocityConstraints_s_xfB, n = t.InitializeVelocityConstraints_s_worldManifold, r = 0; r < this.m_count; ++r) {
+var s = this.m_velocityConstraints[r], o = this.m_positionConstraints[r], a = o.radiusA, c = o.radiusB, l = this.m_contacts[s.contactIndex].GetManifold(), h = s.indexA, u = s.indexB, _ = s.invMassA, f = s.invMassB, d = s.invIA, m = s.invIB, p = o.localCenterA, v = o.localCenterB, y = this.m_positions[h].c, g = this.m_positions[h].a, x = this.m_velocities[h].v, C = this.m_velocities[h].w, b = this.m_positions[u].c, A = this.m_positions[u].a, S = this.m_velocities[u].v, w = this.m_velocities[u].w;
+e.q.SetAngle(g);
+i.q.SetAngle(A);
+P.SubVV(y, V.MulRV(e.q, p, P.s_t0), e.p);
+P.SubVV(b, V.MulRV(i.q, v, P.s_t0), i.p);
+n.Initialize(l, e, a, i, c);
+s.normal.Copy(n.normal);
+P.CrossVOne(s.normal, s.tangent);
+for (var T = s.pointCount, E = 0; E < T; ++E) {
+var M = s.points[E];
+P.SubVV(n.points[E], y, M.rA);
+P.SubVV(n.points[E], b, M.rB);
+var B = P.CrossVV(M.rA, s.normal), D = P.CrossVV(M.rB, s.normal), I = _ + f + d * B * B + m * D * D;
+M.normalMass = I > 0 ? 1 / I : 0;
+var R = s.tangent, L = P.CrossVV(M.rA, R), F = P.CrossVV(M.rB, R), O = _ + f + d * L * L + m * F * F;
+M.tangentMass = O > 0 ? 1 / O : 0;
+M.velocityBias = 0;
+var N = P.DotVV(s.normal, P.SubVV(P.AddVCrossSV(S, w, M.rB, P.s_t0), P.AddVCrossSV(x, C, M.rA, P.s_t1), P.s_t0));
+N < -1 && (M.velocityBias += -s.restitution * N);
+}
+s.pointCount;
+}
+};
+t.prototype.WarmStart = function() {
+for (var e = t.WarmStart_s_P, i = 0; i < this.m_count; ++i) {
+for (var n = this.m_velocityConstraints[i], r = n.indexA, s = n.indexB, o = n.invMassA, a = n.invIA, c = n.invMassB, l = n.invIB, h = n.pointCount, u = this.m_velocities[r].v, _ = this.m_velocities[r].w, f = this.m_velocities[s].v, d = this.m_velocities[s].w, m = n.normal, p = n.tangent, v = 0; v < h; ++v) {
+var y = n.points[v];
+P.AddVV(P.MulSV(y.normalImpulse, m, P.s_t0), P.MulSV(y.tangentImpulse, p, P.s_t1), e);
+_ -= a * P.CrossVV(y.rA, e);
+u.SelfMulSub(o, e);
+d += l * P.CrossVV(y.rB, e);
+f.SelfMulAdd(c, e);
+}
+this.m_velocities[r].w = _;
+this.m_velocities[s].w = d;
+}
+};
+t.prototype.SolveVelocityConstraints = function() {
+for (var e = t.SolveVelocityConstraints_s_dv, i = (t.SolveVelocityConstraints_s_dv1,
+t.SolveVelocityConstraints_s_dv2, t.SolveVelocityConstraints_s_P), n = (t.SolveVelocityConstraints_s_a,
+t.SolveVelocityConstraints_s_b, t.SolveVelocityConstraints_s_x, t.SolveVelocityConstraints_s_d,
+t.SolveVelocityConstraints_s_P1, t.SolveVelocityConstraints_s_P2, t.SolveVelocityConstraints_s_P1P2,
+0); n < this.m_count; ++n) {
+for (var r = this.m_velocityConstraints[n], s = r.indexA, o = r.indexB, a = r.invMassA, c = r.invIA, l = r.invMassB, h = r.invIB, u = r.pointCount, _ = this.m_velocities[s].v, f = this.m_velocities[s].w, d = this.m_velocities[o].v, m = this.m_velocities[o].w, p = r.normal, v = r.tangent, y = r.friction, g = 0; g < u; ++g) {
+var b = r.points[g];
+P.SubVV(P.AddVCrossSV(d, m, b.rB, P.s_t0), P.AddVCrossSV(_, f, b.rA, P.s_t1), e);
+var A = P.DotVV(e, v) - r.tangentSpeed, S = b.tangentMass * -A, w = y * b.normalImpulse;
+S = (T = C(b.tangentImpulse + S, -w, w)) - b.tangentImpulse;
+b.tangentImpulse = T;
+P.MulSV(S, v, i);
+_.SelfMulSub(a, i);
+f -= c * P.CrossVV(b.rA, i);
+d.SelfMulAdd(l, i);
+m += h * P.CrossVV(b.rB, i);
+}
+r.pointCount;
+for (g = 0; g < u; ++g) {
+b = r.points[g];
+P.SubVV(P.AddVCrossSV(d, m, b.rB, P.s_t0), P.AddVCrossSV(_, f, b.rA, P.s_t1), e);
+var T, E = P.DotVV(e, p);
+S = -b.normalMass * (E - b.velocityBias);
+S = (T = x(b.normalImpulse + S, 0)) - b.normalImpulse;
+b.normalImpulse = T;
+P.MulSV(S, p, i);
+_.SelfMulSub(a, i);
+f -= c * P.CrossVV(b.rA, i);
+d.SelfMulAdd(l, i);
+m += h * P.CrossVV(b.rB, i);
+}
+this.m_velocities[s].w = f;
+this.m_velocities[o].w = m;
+}
+};
+t.prototype.StoreImpulses = function() {
+for (var t = 0; t < this.m_count; ++t) for (var e = this.m_velocityConstraints[t], i = this.m_contacts[e.contactIndex].GetManifold(), n = 0; n < e.pointCount; ++n) {
+i.points[n].normalImpulse = e.points[n].normalImpulse;
+i.points[n].tangentImpulse = e.points[n].tangentImpulse;
+}
+};
+t.prototype.SolvePositionConstraints = function() {
+for (var e = t.SolvePositionConstraints_s_xfA, i = t.SolvePositionConstraints_s_xfB, n = t.SolvePositionConstraints_s_psm, r = t.SolvePositionConstraints_s_rA, s = t.SolvePositionConstraints_s_rB, o = t.SolvePositionConstraints_s_P, a = 0, l = 0; l < this.m_count; ++l) {
+for (var h = this.m_positionConstraints[l], u = h.indexA, _ = h.indexB, f = h.localCenterA, d = h.invMassA, m = h.invIA, p = h.localCenterB, v = h.invMassB, y = h.invIB, x = h.pointCount, b = this.m_positions[u].c, A = this.m_positions[u].a, S = this.m_positions[_].c, w = this.m_positions[_].a, T = 0; T < x; ++T) {
+e.q.SetAngle(A);
+i.q.SetAngle(w);
+P.SubVV(b, V.MulRV(e.q, f, P.s_t0), e.p);
+P.SubVV(S, V.MulRV(i.q, p, P.s_t0), i.p);
+n.Initialize(h, e, i, T);
+var E = n.normal, M = n.point, B = n.separation;
+P.SubVV(M, b, r);
+P.SubVV(M, S, s);
+a = g(a, B);
+var D = C(.2 * (B + c), -.2, 0), I = P.CrossVV(r, E), R = P.CrossVV(s, E), L = d + v + m * I * I + y * R * R, F = L > 0 ? -D / L : 0;
+P.MulSV(F, E, o);
+b.SelfMulSub(d, o);
+A -= m * P.CrossVV(r, o);
+S.SelfMulAdd(v, o);
+w += y * P.CrossVV(s, o);
+}
+this.m_positions[u].a = A;
+this.m_positions[_].a = w;
+}
+return a > -3 * c;
+};
+t.prototype.SolveTOIPositionConstraints = function(e, i) {
+for (var n = t.SolveTOIPositionConstraints_s_xfA, r = t.SolveTOIPositionConstraints_s_xfB, s = t.SolveTOIPositionConstraints_s_psm, o = t.SolveTOIPositionConstraints_s_rA, a = t.SolveTOIPositionConstraints_s_rB, l = t.SolveTOIPositionConstraints_s_P, h = 0, u = 0; u < this.m_count; ++u) {
+var _ = this.m_positionConstraints[u], f = _.indexA, d = _.indexB, m = _.localCenterA, p = _.localCenterB, v = _.pointCount, y = 0, x = 0;
+if (f === e || f === i) {
+y = _.invMassA;
+x = _.invIA;
+}
+var b = 0, A = 0;
+if (d === e || d === i) {
+b = _.invMassB;
+A = _.invIB;
+}
+for (var S = this.m_positions[f].c, w = this.m_positions[f].a, T = this.m_positions[d].c, E = this.m_positions[d].a, M = 0; M < v; ++M) {
+n.q.SetAngle(w);
+r.q.SetAngle(E);
+P.SubVV(S, V.MulRV(n.q, m, P.s_t0), n.p);
+P.SubVV(T, V.MulRV(r.q, p, P.s_t0), r.p);
+s.Initialize(_, n, r, M);
+var B = s.normal, D = s.point, I = s.separation;
+P.SubVV(D, S, o);
+P.SubVV(D, T, a);
+h = g(h, I);
+var R = C(.75 * (I + c), -.2, 0), L = P.CrossVV(o, B), F = P.CrossVV(a, B), O = y + b + x * L * L + A * F * F, N = O > 0 ? -R / O : 0;
+P.MulSV(N, B, l);
+S.SelfMulSub(y, l);
+w -= x * P.CrossVV(o, l);
+T.SelfMulAdd(b, l);
+E += A * P.CrossVV(a, l);
+}
+this.m_positions[f].a = w;
+this.m_positions[d].a = E;
+}
+return h >= -1.5 * c;
+};
+t.InitializeVelocityConstraints_s_xfA = new N();
+t.InitializeVelocityConstraints_s_xfB = new N();
+t.InitializeVelocityConstraints_s_worldManifold = new bt();
+t.WarmStart_s_P = new P();
+t.SolveVelocityConstraints_s_dv = new P();
+t.SolveVelocityConstraints_s_dv1 = new P();
+t.SolveVelocityConstraints_s_dv2 = new P();
+t.SolveVelocityConstraints_s_P = new P();
+t.SolveVelocityConstraints_s_a = new P();
+t.SolveVelocityConstraints_s_b = new P();
+t.SolveVelocityConstraints_s_x = new P();
+t.SolveVelocityConstraints_s_d = new P();
+t.SolveVelocityConstraints_s_P1 = new P();
+t.SolveVelocityConstraints_s_P2 = new P();
+t.SolveVelocityConstraints_s_P1P2 = new P();
+t.SolvePositionConstraints_s_xfA = new N();
+t.SolvePositionConstraints_s_xfB = new N();
+t.SolvePositionConstraints_s_psm = new dn();
+t.SolvePositionConstraints_s_rA = new P();
+t.SolvePositionConstraints_s_rB = new P();
+t.SolvePositionConstraints_s_P = new P();
+t.SolveTOIPositionConstraints_s_xfA = new N();
+t.SolveTOIPositionConstraints_s_xfB = new N();
+t.SolveTOIPositionConstraints_s_psm = new dn();
+t.SolveTOIPositionConstraints_s_rA = new P();
+t.SolveTOIPositionConstraints_s_rB = new P();
+t.SolveTOIPositionConstraints_s_P = new P();
+return t;
+})(), pn = (function() {
+function e() {
+this.m_allocator = null;
+this.m_bodies = [];
+this.m_contacts = [];
+this.m_joints = [];
+this.m_positions = an.MakeArray(1024);
+this.m_velocities = cn.MakeArray(1024);
+this.m_bodyCount = 0;
+this.m_jointCount = 0;
+this.m_contactCount = 0;
+this.m_bodyCapacity = 0;
+this.m_contactCapacity = 0;
+this.m_jointCapacity = 0;
+}
+e.prototype.Initialize = function(t, e, i, n, r) {
+this.m_bodyCapacity = t;
+this.m_contactCapacity = e;
+this.m_jointCapacity = i;
+this.m_bodyCount = 0;
+this.m_contactCount = 0;
+this.m_jointCount = 0;
+this.m_allocator = n;
+this.m_listener = r;
+if (this.m_positions.length < t) for (var s = x(2 * this.m_positions.length, t); this.m_positions.length < s; ) this.m_positions[this.m_positions.length] = new an();
+if (this.m_velocities.length < t) for (s = x(2 * this.m_velocities.length, t); this.m_velocities.length < s; ) this.m_velocities[this.m_velocities.length] = new cn();
+};
+e.prototype.Clear = function() {
+this.m_bodyCount = 0;
+this.m_contactCount = 0;
+this.m_jointCount = 0;
+};
+e.prototype.AddBody = function(t) {
+t.m_islandIndex = this.m_bodyCount;
+this.m_bodies[this.m_bodyCount++] = t;
+};
+e.prototype.AddContact = function(t) {
+this.m_contacts[this.m_contactCount++] = t;
+};
+e.prototype.AddJoint = function(t) {
+this.m_joints[this.m_jointCount++] = t;
+};
+e.prototype.Solve = function(n, r, s, o) {
+for (var a = e.s_timer.Reset(), c = r.dt, l = 0; l < this.m_bodyCount; ++l) {
+var h = this.m_bodies[l];
+this.m_positions[l].c.Copy(h.m_sweep.c);
+var u = h.m_sweep.a, _ = this.m_velocities[l].v.Copy(h.m_linearVelocity), f = h.m_angularVelocity;
+h.m_sweep.c0.Copy(h.m_sweep.c);
+h.m_sweep.a0 = h.m_sweep.a;
+if (h.m_type === t.b2BodyType.b2_dynamicBody) {
+_.x += c * (h.m_gravityScale * s.x + h.m_invMass * h.m_force.x);
+_.y += c * (h.m_gravityScale * s.y + h.m_invMass * h.m_force.y);
+f += c * h.m_invI * h.m_torque;
+_.SelfMul(1 / (1 + c * h.m_linearDamping));
+f *= 1 / (1 + c * h.m_angularDamping);
+}
+this.m_positions[l].a = u;
+this.m_velocities[l].w = f;
+}
+a.Reset();
+var d = e.s_solverData;
+d.step.Copy(r);
+d.positions = this.m_positions;
+d.velocities = this.m_velocities;
+var m = e.s_contactSolverDef;
+m.step.Copy(r);
+m.contacts = this.m_contacts;
+m.count = this.m_contactCount;
+m.positions = this.m_positions;
+m.velocities = this.m_velocities;
+m.allocator = this.m_allocator;
+var p = e.s_contactSolver.Initialize(m);
+p.InitializeVelocityConstraints();
+r.warmStarting && p.WarmStart();
+for (l = 0; l < this.m_jointCount; ++l) this.m_joints[l].InitVelocityConstraints(d);
+n.solveInit = a.GetMilliseconds();
+a.Reset();
+for (l = 0; l < r.velocityIterations; ++l) {
+for (var v = 0; v < this.m_jointCount; ++v) this.m_joints[v].SolveVelocityConstraints(d);
+p.SolveVelocityConstraints();
+}
+p.StoreImpulses();
+n.solveVelocity = a.GetMilliseconds();
+for (l = 0; l < this.m_bodyCount; ++l) {
+var x = this.m_positions[l].c, C = (u = this.m_positions[l].a, _ = this.m_velocities[l].v,
+f = this.m_velocities[l].w, P.MulSV(c, _, e.s_translation));
+if (P.DotVV(C, C) > 4) {
+var b = 2 / C.Length();
+_.SelfMul(b);
+}
+var A = c * f;
+if (A * A > 2.4674011002726646) {
+f *= b = 1.570796326795 / y(A);
+}
+x.x += c * _.x;
+x.y += c * _.y;
+u += c * f;
+this.m_positions[l].a = u;
+this.m_velocities[l].w = f;
+}
+a.Reset();
+var S = !1;
+for (l = 0; l < r.positionIterations; ++l) {
+var w = p.SolvePositionConstraints(), T = !0;
+for (v = 0; v < this.m_jointCount; ++v) {
+var E = this.m_joints[v].SolvePositionConstraints(d);
+T = T && E;
+}
+if (w && T) {
+S = !0;
+break;
+}
+}
+for (l = 0; l < this.m_bodyCount; ++l) {
+var M = this.m_bodies[l];
+M.m_sweep.c.Copy(this.m_positions[l].c);
+M.m_sweep.a = this.m_positions[l].a;
+M.m_linearVelocity.Copy(this.m_velocities[l].v);
+M.m_angularVelocity = this.m_velocities[l].w;
+M.SynchronizeTransform();
+}
+n.solvePosition = a.GetMilliseconds();
+this.Report(p.m_velocityConstraints);
+if (o) {
+var B = i;
+for (l = 0; l < this.m_bodyCount; ++l) {
+if ((h = this.m_bodies[l]).GetType() !== t.b2BodyType.b2_staticBody) if (!h.m_autoSleepFlag || h.m_angularVelocity * h.m_angularVelocity > .0012184696791469947 || P.DotVV(h.m_linearVelocity, h.m_linearVelocity) > 1e-4) {
+h.m_sleepTime = 0;
+B = 0;
+} else {
+h.m_sleepTime += c;
+B = g(B, h.m_sleepTime);
+}
+}
+if (B >= .5 && S) for (l = 0; l < this.m_bodyCount; ++l) {
+(h = this.m_bodies[l]).SetAwake(!1);
+}
+}
+};
+e.prototype.SolveTOI = function(t, i, n) {
+for (var r = 0; r < this.m_bodyCount; ++r) {
+var s = this.m_bodies[r];
+this.m_positions[r].c.Copy(s.m_sweep.c);
+this.m_positions[r].a = s.m_sweep.a;
+this.m_velocities[r].v.Copy(s.m_linearVelocity);
+this.m_velocities[r].w = s.m_angularVelocity;
+}
+var o = e.s_contactSolverDef;
+o.contacts = this.m_contacts;
+o.count = this.m_contactCount;
+o.allocator = this.m_allocator;
+o.step.Copy(t);
+o.positions = this.m_positions;
+o.velocities = this.m_velocities;
+var a = e.s_contactSolver.Initialize(o);
+for (r = 0; r < t.positionIterations; ++r) {
+if (a.SolveTOIPositionConstraints(i, n)) break;
+}
+this.m_bodies[i].m_sweep.c0.Copy(this.m_positions[i].c);
+this.m_bodies[i].m_sweep.a0 = this.m_positions[i].a;
+this.m_bodies[n].m_sweep.c0.Copy(this.m_positions[n].c);
+this.m_bodies[n].m_sweep.a0 = this.m_positions[n].a;
+a.InitializeVelocityConstraints();
+for (r = 0; r < t.velocityIterations; ++r) a.SolveVelocityConstraints();
+var c = t.dt;
+for (r = 0; r < this.m_bodyCount; ++r) {
+var l = this.m_positions[r].c, h = this.m_positions[r].a, u = this.m_velocities[r].v, _ = this.m_velocities[r].w, f = P.MulSV(c, u, e.s_translation);
+if (P.DotVV(f, f) > 4) {
+var d = 2 / f.Length();
+u.SelfMul(d);
+}
+var m = c * _;
+if (m * m > 2.4674011002726646) {
+_ *= d = 1.570796326795 / y(m);
+}
+l.SelfMulAdd(c, u);
+h += c * _;
+this.m_positions[r].a = h;
+this.m_velocities[r].w = _;
+var p = this.m_bodies[r];
+p.m_sweep.c.Copy(l);
+p.m_sweep.a = h;
+p.m_linearVelocity.Copy(u);
+p.m_angularVelocity = _;
+p.SynchronizeTransform();
+}
+this.Report(a.m_velocityConstraints);
+};
+e.prototype.Report = function(t) {
+if (null !== this.m_listener) for (var i = 0; i < this.m_contactCount; ++i) {
+var n = this.m_contacts[i];
+if (n) {
+var r = t[i], s = e.s_impulse;
+s.count = r.pointCount;
+for (var o = 0; o < r.pointCount; ++o) {
+s.normalImpulses[o] = r.points[o].normalImpulse;
+s.tangentImpulses[o] = r.points[o].tangentImpulse;
+}
+this.m_listener.PostSolve(n, s);
+}
+}
+};
+e.s_timer = new U();
+e.s_solverData = new ln();
+e.s_contactSolverDef = new fn();
+e.s_contactSolver = new mn();
+e.s_translation = new P();
+e.s_impulse = new $i();
+return e;
+})();
+(function(t) {
+t[t.b2_waterParticle = 0] = "b2_waterParticle";
+t[t.b2_zombieParticle = 2] = "b2_zombieParticle";
+t[t.b2_wallParticle = 4] = "b2_wallParticle";
+t[t.b2_springParticle = 8] = "b2_springParticle";
+t[t.b2_elasticParticle = 16] = "b2_elasticParticle";
+t[t.b2_viscousParticle = 32] = "b2_viscousParticle";
+t[t.b2_powderParticle = 64] = "b2_powderParticle";
+t[t.b2_tensileParticle = 128] = "b2_tensileParticle";
+t[t.b2_colorMixingParticle = 256] = "b2_colorMixingParticle";
+t[t.b2_destructionListenerParticle = 512] = "b2_destructionListenerParticle";
+t[t.b2_barrierParticle = 1024] = "b2_barrierParticle";
+t[t.b2_staticPressureParticle = 2048] = "b2_staticPressureParticle";
+t[t.b2_reactiveParticle = 4096] = "b2_reactiveParticle";
+t[t.b2_repulsiveParticle = 8192] = "b2_repulsiveParticle";
+t[t.b2_fixtureContactListenerParticle = 16384] = "b2_fixtureContactListenerParticle";
+t[t.b2_particleContactListenerParticle = 32768] = "b2_particleContactListenerParticle";
+t[t.b2_fixtureContactFilterParticle = 65536] = "b2_fixtureContactFilterParticle";
+t[t.b2_particleContactFilterParticle = 131072] = "b2_particleContactFilterParticle";
+})(t.b2ParticleFlag || (t.b2ParticleFlag = {}));
+var vn = (function() {
+return function() {
+this.flags = 0;
+this.position = new P();
+this.velocity = new P();
+this.color = new z(0, 0, 0, 0);
+this.lifetime = 0;
+this.userData = null;
+this.group = null;
+};
+})();
+function yn(t, e, i) {
+return C(Math.ceil(Math.sqrt(t / (.01 * e)) * i), 1, 8);
+}
+var gn = (function() {
+function t() {
+this.m_index = u;
+}
+t.prototype.GetIndex = function() {
+return this.m_index;
+};
+t.prototype.SetIndex = function(t) {
+this.m_index = t;
+};
+return t;
+})();
+(function(t) {
+t[t.b2_solidParticleGroup = 1] = "b2_solidParticleGroup";
+t[t.b2_rigidParticleGroup = 2] = "b2_rigidParticleGroup";
+t[t.b2_particleGroupCanBeEmpty = 4] = "b2_particleGroupCanBeEmpty";
+t[t.b2_particleGroupWillBeDestroyed = 8] = "b2_particleGroupWillBeDestroyed";
+t[t.b2_particleGroupNeedsUpdateDepth = 16] = "b2_particleGroupNeedsUpdateDepth";
+t[t.b2_particleGroupInternalMask = 24] = "b2_particleGroupInternalMask";
+})(t.b2ParticleGroupFlag || (t.b2ParticleGroupFlag = {}));
+var xn = (function() {
+return function() {
+this.flags = 0;
+this.groupFlags = 0;
+this.position = new P();
+this.angle = 0;
+this.linearVelocity = new P();
+this.angularVelocity = 0;
+this.color = new z();
+this.strength = 1;
+this.shapeCount = 0;
+this.stride = 0;
+this.particleCount = 0;
+this.lifetime = 0;
+this.userData = null;
+this.group = null;
+};
+})(), Cn = (function() {
+function e(t) {
+this.m_firstIndex = 0;
+this.m_lastIndex = 0;
+this.m_groupFlags = 0;
+this.m_strength = 1;
+this.m_prev = null;
+this.m_next = null;
+this.m_timestamp = -1;
+this.m_mass = 0;
+this.m_inertia = 0;
+this.m_center = new P();
+this.m_linearVelocity = new P();
+this.m_angularVelocity = 0;
+this.m_transform = new N();
+this.m_userData = null;
+this.m_system = t;
+}
+e.prototype.GetNext = function() {
+return this.m_next;
+};
+e.prototype.GetParticleSystem = function() {
+return this.m_system;
+};
+e.prototype.GetParticleCount = function() {
+return this.m_lastIndex - this.m_firstIndex;
+};
+e.prototype.GetBufferIndex = function() {
+return this.m_firstIndex;
+};
+e.prototype.ContainsParticle = function(t) {
+return this.m_firstIndex <= t && t < this.m_lastIndex;
+};
+e.prototype.GetAllParticleFlags = function() {
+if (!this.m_system.m_flagsBuffer.data) throw new Error();
+for (var t = 0, e = this.m_firstIndex; e < this.m_lastIndex; e++) t |= this.m_system.m_flagsBuffer.data[e];
+return t;
+};
+e.prototype.GetGroupFlags = function() {
+return this.m_groupFlags;
+};
+e.prototype.SetGroupFlags = function(e) {
+e |= this.m_groupFlags & t.b2ParticleGroupFlag.b2_particleGroupInternalMask;
+this.m_system.SetGroupFlags(this, e);
+};
+e.prototype.GetMass = function() {
+this.UpdateStatistics();
+return this.m_mass;
+};
+e.prototype.GetInertia = function() {
+this.UpdateStatistics();
+return this.m_inertia;
+};
+e.prototype.GetCenter = function() {
+this.UpdateStatistics();
+return this.m_center;
+};
+e.prototype.GetLinearVelocity = function() {
+this.UpdateStatistics();
+return this.m_linearVelocity;
+};
+e.prototype.GetAngularVelocity = function() {
+this.UpdateStatistics();
+return this.m_angularVelocity;
+};
+e.prototype.GetTransform = function() {
+return this.m_transform;
+};
+e.prototype.GetPosition = function() {
+return this.m_transform.p;
+};
+e.prototype.GetAngle = function() {
+return this.m_transform.q.GetAngle();
+};
+e.prototype.GetLinearVelocityFromWorldPoint = function(t, i) {
+var n = e.GetLinearVelocityFromWorldPoint_s_t0;
+this.UpdateStatistics();
+return P.AddVCrossSV(this.m_linearVelocity, this.m_angularVelocity, P.SubVV(t, this.m_center, n), i);
+};
+e.prototype.GetUserData = function() {
+return this.m_userData;
+};
+e.prototype.SetUserData = function(t) {
+this.m_userData = t;
+};
+e.prototype.ApplyForce = function(t) {
+this.m_system.ApplyForce(this.m_firstIndex, this.m_lastIndex, t);
+};
+e.prototype.ApplyLinearImpulse = function(t) {
+this.m_system.ApplyLinearImpulse(this.m_firstIndex, this.m_lastIndex, t);
+};
+e.prototype.DestroyParticles = function(t) {
+if (this.m_system.m_world.IsLocked()) throw new Error();
+for (var e = this.m_firstIndex; e < this.m_lastIndex; e++) this.m_system.DestroyParticle(e, t);
+};
+e.prototype.UpdateStatistics = function() {
+if (!this.m_system.m_positionBuffer.data) throw new Error();
+if (!this.m_system.m_velocityBuffer.data) throw new Error();
+var t = new P(), e = new P();
+if (this.m_timestamp !== this.m_system.m_timestamp) {
+var i = this.m_system.GetParticleMass();
+this.m_mass = i * (this.m_lastIndex - this.m_firstIndex);
+this.m_center.SetZero();
+this.m_linearVelocity.SetZero();
+for (var n = this.m_firstIndex; n < this.m_lastIndex; n++) {
+this.m_center.SelfMulAdd(i, this.m_system.m_positionBuffer.data[n]);
+this.m_linearVelocity.SelfMulAdd(i, this.m_system.m_velocityBuffer.data[n]);
+}
+if (this.m_mass > 0) {
+var r = 1 / this.m_mass;
+this.m_center.SelfMul(r);
+this.m_linearVelocity.SelfMul(r);
+}
+this.m_inertia = 0;
+this.m_angularVelocity = 0;
+for (n = this.m_firstIndex; n < this.m_lastIndex; n++) {
+P.SubVV(this.m_system.m_positionBuffer.data[n], this.m_center, t);
+P.SubVV(this.m_system.m_velocityBuffer.data[n], this.m_linearVelocity, e);
+this.m_inertia += i * P.DotVV(t, t);
+this.m_angularVelocity += i * P.CrossVV(t, e);
+}
+this.m_inertia > 0 && (this.m_angularVelocity *= 1 / this.m_inertia);
+this.m_timestamp = this.m_system.m_timestamp;
+}
+};
+e.GetLinearVelocityFromWorldPoint_s_t0 = new P();
+return e;
+})(), bn = (function() {
+function t(t) {
+this.m_front = 0;
+this.m_back = 0;
+this.m_capacity = 0;
+this.m_buffer = d(t, (function(t) {
+return null;
+}));
+this.m_capacity = t;
+}
+t.prototype.Push = function(t) {
+if (this.m_back >= this.m_capacity) {
+for (var e = this.m_front; e < this.m_back; e++) this.m_buffer[e - this.m_front] = this.m_buffer[e];
+this.m_back -= this.m_front;
+this.m_front = 0;
+if (this.m_back >= this.m_capacity) if (this.m_capacity > 0) {
+this.m_buffer.concat(d(this.m_capacity, (function(t) {
+return null;
+})));
+this.m_capacity *= 2;
+} else {
+this.m_buffer.concat(d(1, (function(t) {
+return null;
+})));
+this.m_capacity = 1;
+}
+}
+this.m_buffer[this.m_back] = t;
+this.m_back++;
+};
+t.prototype.Pop = function() {
+this.m_buffer[this.m_front] = null;
+this.m_front++;
+};
+t.prototype.Empty = function() {
+return this.m_front === this.m_back;
+};
+t.prototype.Front = function() {
+var t = this.m_buffer[this.m_front];
+if (!t) throw new Error();
+return t;
+};
+return t;
+})(), An = (function() {
+function t(e) {
+this.m_generatorCapacity = 0;
+this.m_generatorCount = 0;
+this.m_countX = 0;
+this.m_countY = 0;
+this.m_diagram = [];
+this.m_generatorBuffer = d(e, (function(e) {
+return new t.Generator();
+}));
+this.m_generatorCapacity = e;
+}
+t.prototype.AddGenerator = function(t, e, i) {
+var n = this.m_generatorBuffer[this.m_generatorCount++];
+n.center.Copy(t);
+n.tag = e;
+n.necessary = i;
+};
+t.prototype.Generate = function(e, n) {
+for (var r = 1 / e, s = new P(+i, +i), o = new P(-i, -i), a = 0, c = 0; c < this.m_generatorCount; c++) {
+if ((f = this.m_generatorBuffer[c]).necessary) {
+P.MinV(s, f.center, s);
+P.MaxV(o, f.center, o);
+++a;
+}
+}
+if (0 !== a) {
+s.x -= n;
+s.y -= n;
+o.x += n;
+o.y += n;
+this.m_countX = 1 + Math.floor(r * (o.x - s.x));
+this.m_countY = 1 + Math.floor(r * (o.y - s.y));
+this.m_diagram = [];
+var l = new bn(4 * this.m_countX * this.m_countY);
+for (c = 0; c < this.m_generatorCount; c++) {
+(f = this.m_generatorBuffer[c]).center.SelfSub(s).SelfMul(r);
+var h = Math.floor(f.center.x), u = Math.floor(f.center.y);
+h >= 0 && u >= 0 && h < this.m_countX && u < this.m_countY && l.Push(new t.Task(h, u, h + u * this.m_countX, f));
+}
+for (;!l.Empty(); ) {
+h = (d = l.Front()).m_x, u = d.m_y;
+var _ = d.m_i, f = d.m_generator;
+l.Pop();
+if (!this.m_diagram[_]) {
+this.m_diagram[_] = f;
+h > 0 && l.Push(new t.Task(h - 1, u, _ - 1, f));
+u > 0 && l.Push(new t.Task(h, u - 1, _ - this.m_countX, f));
+h < this.m_countX - 1 && l.Push(new t.Task(h + 1, u, _ + 1, f));
+u < this.m_countY - 1 && l.Push(new t.Task(h, u + 1, _ + this.m_countX, f));
+}
+}
+for (u = 0; u < this.m_countY; u++) for (h = 0; h < this.m_countX - 1; h++) {
+_ = h + u * this.m_countX;
+if ((m = this.m_diagram[_]) !== (p = this.m_diagram[_ + 1])) {
+l.Push(new t.Task(h, u, _, p));
+l.Push(new t.Task(h + 1, u, _ + 1, m));
+}
+}
+for (u = 0; u < this.m_countY - 1; u++) for (h = 0; h < this.m_countX; h++) {
+_ = h + u * this.m_countX;
+if ((m = this.m_diagram[_]) !== (p = this.m_diagram[_ + this.m_countX])) {
+l.Push(new t.Task(h, u, _, p));
+l.Push(new t.Task(h, u + 1, _ + this.m_countX, m));
+}
+}
+for (;!l.Empty(); ) {
+var d, m, p;
+h = (d = l.Front()).m_x, u = d.m_y, _ = d.m_i, c = d.m_generator;
+l.Pop();
+if ((m = this.m_diagram[_]) !== (p = c)) {
+var v = m.center.x - h, y = m.center.y - u, g = p.center.x - h, x = p.center.y - u;
+if (v * v + y * y > g * g + x * x) {
+this.m_diagram[_] = p;
+h > 0 && l.Push(new t.Task(h - 1, u, _ - 1, p));
+u > 0 && l.Push(new t.Task(h, u - 1, _ - this.m_countX, p));
+h < this.m_countX - 1 && l.Push(new t.Task(h + 1, u, _ + 1, p));
+u < this.m_countY - 1 && l.Push(new t.Task(h, u + 1, _ + this.m_countX, p));
+}
+}
+}
+} else {
+this.m_countX = 0;
+this.m_countY = 0;
+}
+};
+t.prototype.GetNodes = function(t) {
+for (var e = 0; e < this.m_countY - 1; e++) for (var i = 0; i < this.m_countX - 1; i++) {
+var n = i + e * this.m_countX, r = this.m_diagram[n], s = this.m_diagram[n + 1], o = this.m_diagram[n + this.m_countX], a = this.m_diagram[n + 1 + this.m_countX];
+if (s !== o) {
+r !== s && r !== o && (r.necessary || s.necessary || o.necessary) && t(r.tag, s.tag, o.tag);
+a !== s && a !== o && (r.necessary || s.necessary || o.necessary) && t(s.tag, a.tag, o.tag);
+}
+}
+};
+return t;
+})();
+(function(t) {
+var e = (function() {
+return function() {
+this.center = new P();
+this.tag = 0;
+this.necessary = !1;
+};
+})();
+t.Generator = e;
+var i = (function() {
+return function(t, e, i, n) {
+this.m_x = t;
+this.m_y = e;
+this.m_i = i;
+this.m_generator = n;
+};
+})();
+t.Task = i;
+})(An || (An = {}));
+function Sn(t, e, i) {
+var n = t[e];
+t[e] = t[i];
+t[i] = n;
+}
+function wn(t, e) {
+return t < e;
+}
+function Tn(t, e, i, n) {
+void 0 === e && (e = 0);
+void 0 === i && (i = t.length - e);
+void 0 === n && (n = wn);
+for (var r = e, s = [], o = 0; ;) {
+for (;r + 1 < i; i++) {
+var a = t[r + Math.floor(Math.random() * (i - r))];
+s[o++] = i;
+for (var c = r - 1; ;) {
+for (;n(t[++c], a); ) ;
+for (;n(a, t[--i]); ) ;
+if (c >= i) break;
+Sn(t, c, i);
+}
+}
+if (0 === o) break;
+r = i;
+i = s[--o];
+}
+return t;
+}
+function En(t, e, i, n) {
+void 0 === e && (e = 0);
+void 0 === i && (i = t.length - e);
+void 0 === n && (n = wn);
+return Tn(t, e, i, n);
+}
+function Mn(t, e, i) {
+void 0 === i && (i = t.length);
+for (var n = 0, r = 0; r < i; ++r) e(t[r]) || (r !== n ? Sn(t, n++, r) : ++n);
+return n;
+}
+function Bn(t, e, i, n, r) {
+void 0 === r && (r = wn);
+for (var s = i - e; s > 0; ) {
+var o = Math.floor(s / 2), a = e + o;
+if (r(t[a], n)) {
+e = ++a;
+s -= o + 1;
+} else s = o;
+}
+return e;
+}
+function Dn(t, e, i, n, r) {
+void 0 === r && (r = wn);
+for (var s = i - e; s > 0; ) {
+var o = Math.floor(s / 2), a = e + o;
+if (r(n, t[a])) s = o; else {
+e = ++a;
+s -= o + 1;
+}
+}
+return e;
+}
+function In(t, e, i, n) {
+for (var r = i; e !== r; ) {
+Sn(t, e++, r++);
+r === n ? r = i : e === i && (i = r);
+}
+}
+function Pn(t, e, i, n) {
+if (e === i) return i;
+for (var r = e; ++e !== i; ) n(t[r], t[e]) || Sn(t, ++r, e);
+return ++r;
+}
+var Rn = (function() {
+function t(t) {
+this.data = [];
+this.count = 0;
+this.capacity = 0;
+this.allocator = t;
+}
+t.prototype.Append = function() {
+this.count >= this.capacity && this.Grow();
+return this.count++;
+};
+t.prototype.Reserve = function(t) {
+if (!(this.capacity >= t)) {
+for (var e = this.capacity; e < t; ++e) this.data[e] = this.allocator();
+this.capacity = t;
+}
+};
+t.prototype.Grow = function() {
+var t = this.capacity ? 2 * this.capacity : 256;
+this.Reserve(t);
+};
+t.prototype.Free = function() {
+if (0 !== this.data.length) {
+this.data = [];
+this.capacity = 0;
+this.count = 0;
+}
+};
+t.prototype.Shorten = function(t) {};
+t.prototype.Data = function() {
+return this.data;
+};
+t.prototype.GetCount = function() {
+return this.count;
+};
+t.prototype.SetCount = function(t) {
+this.count = t;
+};
+t.prototype.GetCapacity = function() {
+return this.capacity;
+};
+t.prototype.RemoveIf = function(t) {
+this.count = Mn(this.data, t, this.count);
+};
+t.prototype.Unique = function(t) {
+this.count = Pn(this.data, 0, this.count, t);
+};
+return t;
+})(), Ln = (function(t) {
+$e(e, t);
+function e(e) {
+var i = t.call(this) || this;
+i.m_system = e;
+return i;
+}
+e.prototype.ShouldQueryParticleSystem = function(t) {
+return !1;
+};
+e.prototype.ReportFixture = function(t) {
+if (t.IsSensor()) return !0;
+for (var e = t.GetShape().GetChildCount(), i = 0; i < e; i++) for (var n = t.GetAABB(i), r = this.m_system.GetInsideBoundsEnumerator(n), s = void 0; (s = r.GetNext()) >= 0; ) this.ReportFixtureAndParticle(t, i, s);
+return !0;
+};
+e.prototype.ReportParticle = function(t, e) {
+return !1;
+};
+e.prototype.ReportFixtureAndParticle = function(t, e, i) {};
+return e;
+})(en), Fn = (function() {
+function t() {
+this.indexA = 0;
+this.indexB = 0;
+this.weight = 0;
+this.normal = new P();
+this.flags = 0;
+}
+t.prototype.SetIndices = function(t, e) {
+this.indexA = t;
+this.indexB = e;
+};
+t.prototype.SetWeight = function(t) {
+this.weight = t;
+};
+t.prototype.SetNormal = function(t) {
+this.normal.Copy(t);
+};
+t.prototype.SetFlags = function(t) {
+this.flags = t;
+};
+t.prototype.GetIndexA = function() {
+return this.indexA;
+};
+t.prototype.GetIndexB = function() {
+return this.indexB;
+};
+t.prototype.GetWeight = function() {
+return this.weight;
+};
+t.prototype.GetNormal = function() {
+return this.normal;
+};
+t.prototype.GetFlags = function() {
+return this.flags;
+};
+t.prototype.IsEqual = function(t) {
+return this.indexA === t.indexA && this.indexB === t.indexB && this.flags === t.flags && this.weight === t.weight && this.normal.x === t.normal.x && this.normal.y === t.normal.y;
+};
+t.prototype.IsNotEqual = function(t) {
+return !this.IsEqual(t);
+};
+t.prototype.ApproximatelyEqual = function(t) {
+return this.indexA === t.indexA && this.indexB === t.indexB && this.flags === t.flags && y(this.weight - t.weight) < .01 && P.DistanceSquaredVV(this.normal, t.normal) < 1e-4;
+};
+return t;
+})(), On = (function() {
+return function() {
+this.index = 0;
+this.weight = 0;
+this.normal = new P();
+this.mass = 0;
+};
+})(), Vn = (function() {
+return function() {
+this.indexA = 0;
+this.indexB = 0;
+this.flags = 0;
+this.strength = 0;
+this.distance = 0;
+};
+})(), Nn = (function() {
+return function() {
+this.indexA = 0;
+this.indexB = 0;
+this.indexC = 0;
+this.flags = 0;
+this.strength = 0;
+this.pa = new P(0, 0);
+this.pb = new P(0, 0);
+this.pc = new P(0, 0);
+this.ka = 0;
+this.kb = 0;
+this.kc = 0;
+this.s = 0;
+};
+})(), kn = (function() {
+function t() {
+this.strictContactCheck = !1;
+this.density = 1;
+this.gravityScale = 1;
+this.radius = 1;
+this.maxCount = 0;
+this.pressureStrength = .005;
+this.dampingStrength = 1;
+this.elasticStrength = .25;
+this.springStrength = .25;
+this.viscousStrength = .25;
+this.surfaceTensionPressureStrength = .2;
+this.surfaceTensionNormalStrength = .2;
+this.repulsiveStrength = 1;
+this.powderStrength = .5;
+this.ejectionStrength = .5;
+this.staticPressureStrength = .2;
+this.staticPressureRelaxation = .2;
+this.staticPressureIterations = 8;
+this.colorMixingStrength = .5;
+this.destroyByAge = !0;
+this.lifetimeGranularity = 1 / 60;
+}
+t.prototype.Copy = function(t) {
+this.strictContactCheck = t.strictContactCheck;
+this.density = t.density;
+this.gravityScale = t.gravityScale;
+this.radius = t.radius;
+this.maxCount = t.maxCount;
+this.pressureStrength = t.pressureStrength;
+this.dampingStrength = t.dampingStrength;
+this.elasticStrength = t.elasticStrength;
+this.springStrength = t.springStrength;
+this.viscousStrength = t.viscousStrength;
+this.surfaceTensionPressureStrength = t.surfaceTensionPressureStrength;
+this.surfaceTensionNormalStrength = t.surfaceTensionNormalStrength;
+this.repulsiveStrength = t.repulsiveStrength;
+this.powderStrength = t.powderStrength;
+this.ejectionStrength = t.ejectionStrength;
+this.staticPressureStrength = t.staticPressureStrength;
+this.staticPressureRelaxation = t.staticPressureRelaxation;
+this.staticPressureIterations = t.staticPressureIterations;
+this.colorMixingStrength = t.colorMixingStrength;
+this.destroyByAge = t.destroyByAge;
+this.lifetimeGranularity = t.lifetimeGranularity;
+return this;
+};
+t.prototype.Clone = function() {
+return new t().Copy(this);
+};
+return t;
+})();
+t.b2ParticleSystem = (function() {
+function n(t, e) {
+this.m_paused = !1;
+this.m_timestamp = 0;
+this.m_allParticleFlags = 0;
+this.m_needsUpdateAllParticleFlags = !1;
+this.m_allGroupFlags = 0;
+this.m_needsUpdateAllGroupFlags = !1;
+this.m_hasForce = !1;
+this.m_iterationIndex = 0;
+this.m_inverseDensity = 0;
+this.m_particleDiameter = 0;
+this.m_inverseDiameter = 0;
+this.m_squaredDiameter = 0;
+this.m_count = 0;
+this.m_internalAllocatedCapacity = 0;
+this.m_handleIndexBuffer = new n.UserOverridableBuffer();
+this.m_flagsBuffer = new n.UserOverridableBuffer();
+this.m_positionBuffer = new n.UserOverridableBuffer();
+this.m_velocityBuffer = new n.UserOverridableBuffer();
+this.m_forceBuffer = [];
+this.m_weightBuffer = [];
+this.m_staticPressureBuffer = [];
+this.m_accumulationBuffer = [];
+this.m_accumulation2Buffer = [];
+this.m_depthBuffer = [];
+this.m_colorBuffer = new n.UserOverridableBuffer();
+this.m_groupBuffer = [];
+this.m_userDataBuffer = new n.UserOverridableBuffer();
+this.m_stuckThreshold = 0;
+this.m_lastBodyContactStepBuffer = new n.UserOverridableBuffer();
+this.m_bodyContactCountBuffer = new n.UserOverridableBuffer();
+this.m_consecutiveContactStepsBuffer = new n.UserOverridableBuffer();
+this.m_stuckParticleBuffer = new Rn(function() {
+return 0;
+});
+this.m_proxyBuffer = new Rn(function() {
+return new n.Proxy();
+});
+this.m_contactBuffer = new Rn(function() {
+return new Fn();
+});
+this.m_bodyContactBuffer = new Rn(function() {
+return new On();
+});
+this.m_pairBuffer = new Rn(function() {
+return new Vn();
+});
+this.m_triadBuffer = new Rn(function() {
+return new Nn();
+});
+this.m_expirationTimeBuffer = new n.UserOverridableBuffer();
+this.m_indexByExpirationTimeBuffer = new n.UserOverridableBuffer();
+this.m_timeElapsed = 0;
+this.m_expirationTimeBufferRequiresSorting = !1;
+this.m_groupCount = 0;
+this.m_groupList = null;
+this.m_def = new kn();
+this.m_prev = null;
+this.m_next = null;
+this.SetStrictContactCheck(t.strictContactCheck);
+this.SetDensity(t.density);
+this.SetGravityScale(t.gravityScale);
+this.SetRadius(t.radius);
+this.SetMaxParticleCount(t.maxCount);
+this.m_def = t.Clone();
+this.m_world = e;
+this.SetDestructionByAge(this.m_def.destroyByAge);
+}
+n.computeTag = function(t, e) {
+return (e + n.yOffset >>> 0 << n.yShift) + (n.xScale * t + n.xOffset >>> 0) >>> 0;
+};
+n.computeRelativeTag = function(t, e, i) {
+return t + (i << n.yShift) + (e << n.xShift) >>> 0;
+};
+n.prototype.Drop = function() {
+for (;this.m_groupList; ) this.DestroyParticleGroup(this.m_groupList);
+this.FreeUserOverridableBuffer(this.m_handleIndexBuffer);
+this.FreeUserOverridableBuffer(this.m_flagsBuffer);
+this.FreeUserOverridableBuffer(this.m_lastBodyContactStepBuffer);
+this.FreeUserOverridableBuffer(this.m_bodyContactCountBuffer);
+this.FreeUserOverridableBuffer(this.m_consecutiveContactStepsBuffer);
+this.FreeUserOverridableBuffer(this.m_positionBuffer);
+this.FreeUserOverridableBuffer(this.m_velocityBuffer);
+this.FreeUserOverridableBuffer(this.m_colorBuffer);
+this.FreeUserOverridableBuffer(this.m_userDataBuffer);
+this.FreeUserOverridableBuffer(this.m_expirationTimeBuffer);
+this.FreeUserOverridableBuffer(this.m_indexByExpirationTimeBuffer);
+this.FreeBuffer(this.m_forceBuffer, this.m_internalAllocatedCapacity);
+this.FreeBuffer(this.m_weightBuffer, this.m_internalAllocatedCapacity);
+this.FreeBuffer(this.m_staticPressureBuffer, this.m_internalAllocatedCapacity);
+this.FreeBuffer(this.m_accumulationBuffer, this.m_internalAllocatedCapacity);
+this.FreeBuffer(this.m_accumulation2Buffer, this.m_internalAllocatedCapacity);
+this.FreeBuffer(this.m_depthBuffer, this.m_internalAllocatedCapacity);
+this.FreeBuffer(this.m_groupBuffer, this.m_internalAllocatedCapacity);
+};
+n.prototype.CreateParticle = function(t) {
+if (this.m_world.IsLocked()) throw new Error();
+if (this.m_count >= this.m_internalAllocatedCapacity) {
+var i = this.m_count ? 2 * this.m_count : 256;
+this.ReallocateInternalAllocatedBuffers(i);
+}
+if (this.m_count >= this.m_internalAllocatedCapacity) {
+if (!this.m_def.destroyByAge) return u;
+this.DestroyOldestParticle(0, !1);
+this.SolveZombie();
+}
+var n = this.m_count++;
+if (!this.m_flagsBuffer.data) throw new Error();
+this.m_flagsBuffer.data[n] = 0;
+this.m_lastBodyContactStepBuffer.data && (this.m_lastBodyContactStepBuffer.data[n] = 0);
+this.m_bodyContactCountBuffer.data && (this.m_bodyContactCountBuffer.data[n] = 0);
+this.m_consecutiveContactStepsBuffer.data && (this.m_consecutiveContactStepsBuffer.data[n] = 0);
+if (!this.m_positionBuffer.data) throw new Error();
+if (!this.m_velocityBuffer.data) throw new Error();
+this.m_positionBuffer.data[n] = (this.m_positionBuffer.data[n] || new P()).Copy(e(t.position, P.ZERO));
+this.m_velocityBuffer.data[n] = (this.m_velocityBuffer.data[n] || new P()).Copy(e(t.velocity, P.ZERO));
+this.m_weightBuffer[n] = 0;
+this.m_forceBuffer[n] = (this.m_forceBuffer[n] || new P()).SetZero();
+this.m_staticPressureBuffer && (this.m_staticPressureBuffer[n] = 0);
+this.m_depthBuffer && (this.m_depthBuffer[n] = 0);
+var r = new z().Copy(e(t.color, z.ZERO));
+if (this.m_colorBuffer.data || !r.IsZero()) {
+this.m_colorBuffer.data = this.RequestBuffer(this.m_colorBuffer.data);
+this.m_colorBuffer.data[n] = (this.m_colorBuffer.data[n] || new z()).Copy(r);
+}
+if (this.m_userDataBuffer.data || t.userData) {
+this.m_userDataBuffer.data = this.RequestBuffer(this.m_userDataBuffer.data);
+this.m_userDataBuffer.data[n] = t.userData;
+}
+this.m_handleIndexBuffer.data && (this.m_handleIndexBuffer.data[n] = null);
+var s = this.m_proxyBuffer.data[this.m_proxyBuffer.Append()], o = e(t.lifetime, 0), a = o > 0;
+if (this.m_expirationTimeBuffer.data || a) {
+this.SetParticleLifetime(n, a ? o : this.ExpirationTimeToLifetime(-this.GetQuantizedTimeElapsed()));
+if (!this.m_indexByExpirationTimeBuffer.data) throw new Error();
+this.m_indexByExpirationTimeBuffer.data[n] = n;
+}
+s.index = n;
+var c = e(t.group, null);
+this.m_groupBuffer[n] = c;
+if (c) if (c.m_firstIndex < c.m_lastIndex) {
+this.RotateBuffer(c.m_firstIndex, c.m_lastIndex, n);
+c.m_lastIndex = n + 1;
+} else {
+c.m_firstIndex = n;
+c.m_lastIndex = n + 1;
+}
+this.SetParticleFlags(n, e(t.flags, 0));
+return n;
+};
+n.prototype.GetParticleHandleFromIndex = function(t) {
+this.m_handleIndexBuffer.data = this.RequestBuffer(this.m_handleIndexBuffer.data);
+var e = this.m_handleIndexBuffer.data[t];
+if (e) return e;
+(e = new gn()).SetIndex(t);
+this.m_handleIndexBuffer.data[t] = e;
+return e;
+};
+n.prototype.DestroyParticle = function(e, i) {
+void 0 === i && (i = !1);
+if (!this.m_flagsBuffer.data) throw new Error();
+var n = t.b2ParticleFlag.b2_zombieParticle;
+i && (n |= t.b2ParticleFlag.b2_destructionListenerParticle);
+this.SetParticleFlags(e, this.m_flagsBuffer.data[e] | n);
+};
+n.prototype.DestroyOldestParticle = function(t, e) {
+void 0 === e && (e = !1);
+var i = this.GetParticleCount();
+if (!this.m_indexByExpirationTimeBuffer.data) throw new Error();
+if (!this.m_expirationTimeBuffer.data) throw new Error();
+var n = this.m_indexByExpirationTimeBuffer.data[i - (t + 1)], r = this.m_indexByExpirationTimeBuffer.data[t];
+this.DestroyParticle(this.m_expirationTimeBuffer.data[n] > 0 ? n : r, e);
+};
+n.prototype.DestroyParticlesInShape = function(t, e, i) {
+void 0 === i && (i = !1);
+var r = n.DestroyParticlesInShape_s_aabb;
+if (this.m_world.IsLocked()) throw new Error();
+var s = new n.DestroyParticlesInShapeCallback(this, t, e, i), o = r;
+t.ComputeAABB(o, e, 0);
+this.m_world.QueryAABB(s, o);
+return s.Destroyed();
+};
+n.prototype.CreateParticleGroup = function(t) {
+var i = n.CreateParticleGroup_s_transform;
+if (this.m_world.IsLocked()) throw new Error();
+var r = i;
+r.SetPositionAngle(e(t.position, P.ZERO), e(t.angle, 0));
+var s = this.m_count;
+t.shape && this.CreateParticlesWithShapeForGroup(t.shape, t, r);
+t.shapes && this.CreateParticlesWithShapesForGroup(t.shapes, e(t.shapeCount, t.shapes.length), t, r);
+if (t.positionData) for (var o = e(t.particleCount, t.positionData.length), a = 0; a < o; a++) {
+var c = t.positionData[a];
+this.CreateParticleForGroup(t, r, c);
+}
+var l = this.m_count, h = new Cn(this);
+h.m_firstIndex = s;
+h.m_lastIndex = l;
+h.m_strength = e(t.strength, 1);
+h.m_userData = t.userData;
+h.m_transform.Copy(r);
+h.m_prev = null;
+h.m_next = this.m_groupList;
+this.m_groupList && (this.m_groupList.m_prev = h);
+this.m_groupList = h;
+++this.m_groupCount;
+for (a = s; a < l; a++) this.m_groupBuffer[a] = h;
+this.SetGroupFlags(h, e(t.groupFlags, 0));
+var u = new n.ConnectionFilter();
+this.UpdateContacts(!0);
+this.UpdatePairsAndTriads(s, l, u);
+if (t.group) {
+this.JoinParticleGroups(t.group, h);
+h = t.group;
+}
+return h;
+};
+n.prototype.JoinParticleGroups = function(t, e) {
+if (this.m_world.IsLocked()) throw new Error();
+this.RotateBuffer(e.m_firstIndex, e.m_lastIndex, this.m_count);
+this.RotateBuffer(t.m_firstIndex, t.m_lastIndex, e.m_firstIndex);
+var i = new n.JoinParticleGroupsFilter(e.m_firstIndex);
+this.UpdateContacts(!0);
+this.UpdatePairsAndTriads(t.m_firstIndex, e.m_lastIndex, i);
+for (var r = e.m_firstIndex; r < e.m_lastIndex; r++) this.m_groupBuffer[r] = t;
+var s = t.m_groupFlags | e.m_groupFlags;
+this.SetGroupFlags(t, s);
+t.m_lastIndex = e.m_lastIndex;
+e.m_firstIndex = e.m_lastIndex;
+this.DestroyParticleGroup(e);
+};
+n.prototype.SplitParticleGroup = function(t) {
+this.UpdateContacts(!0);
+var e = d(t.GetParticleCount(), (function(t) {
+return new n.ParticleListNode();
+}));
+n.InitializeParticleLists(t, e);
+this.MergeParticleListsInContact(t, e);
+var i = n.FindLongestParticleList(t, e);
+this.MergeZombieParticleListNodes(t, e, i);
+this.CreateParticleGroupsFromParticleList(t, e, i);
+this.UpdatePairsAndTriadsWithParticleList(t, e);
+};
+n.prototype.GetParticleGroupList = function() {
+return this.m_groupList;
+};
+n.prototype.GetParticleGroupCount = function() {
+return this.m_groupCount;
+};
+n.prototype.GetParticleCount = function() {
+return this.m_count;
+};
+n.prototype.GetMaxParticleCount = function() {
+return this.m_def.maxCount;
+};
+n.prototype.SetMaxParticleCount = function(t) {
+this.m_def.maxCount = t;
+};
+n.prototype.GetAllParticleFlags = function() {
+return this.m_allParticleFlags;
+};
+n.prototype.GetAllGroupFlags = function() {
+return this.m_allGroupFlags;
+};
+n.prototype.SetPaused = function(t) {
+this.m_paused = t;
+};
+n.prototype.GetPaused = function() {
+return this.m_paused;
+};
+n.prototype.SetDensity = function(t) {
+this.m_def.density = t;
+this.m_inverseDensity = 1 / this.m_def.density;
+};
+n.prototype.GetDensity = function() {
+return this.m_def.density;
+};
+n.prototype.SetGravityScale = function(t) {
+this.m_def.gravityScale = t;
+};
+n.prototype.GetGravityScale = function() {
+return this.m_def.gravityScale;
+};
+n.prototype.SetDamping = function(t) {
+this.m_def.dampingStrength = t;
+};
+n.prototype.GetDamping = function() {
+return this.m_def.dampingStrength;
+};
+n.prototype.SetStaticPressureIterations = function(t) {
+this.m_def.staticPressureIterations = t;
+};
+n.prototype.GetStaticPressureIterations = function() {
+return this.m_def.staticPressureIterations;
+};
+n.prototype.SetRadius = function(t) {
+this.m_particleDiameter = 2 * t;
+this.m_squaredDiameter = this.m_particleDiameter * this.m_particleDiameter;
+this.m_inverseDiameter = 1 / this.m_particleDiameter;
+};
+n.prototype.GetRadius = function() {
+return this.m_particleDiameter / 2;
+};
+n.prototype.GetPositionBuffer = function() {
+if (!this.m_positionBuffer.data) throw new Error();
+return this.m_positionBuffer.data;
+};
+n.prototype.GetVelocityBuffer = function() {
+if (!this.m_velocityBuffer.data) throw new Error();
+return this.m_velocityBuffer.data;
+};
+n.prototype.GetColorBuffer = function() {
+this.m_colorBuffer.data = this.RequestBuffer(this.m_colorBuffer.data);
+return this.m_colorBuffer.data;
+};
+n.prototype.GetGroupBuffer = function() {
+return this.m_groupBuffer;
+};
+n.prototype.GetWeightBuffer = function() {
+return this.m_weightBuffer;
+};
+n.prototype.GetUserDataBuffer = function() {
+this.m_userDataBuffer.data = this.RequestBuffer(this.m_userDataBuffer.data);
+return this.m_userDataBuffer.data;
+};
+n.prototype.GetFlagsBuffer = function() {
+if (!this.m_flagsBuffer.data) throw new Error();
+return this.m_flagsBuffer.data;
+};
+n.prototype.SetParticleFlags = function(e, i) {
+if (!this.m_flagsBuffer.data) throw new Error();
+this.m_flagsBuffer.data[e] & ~i && (this.m_needsUpdateAllParticleFlags = !0);
+if (~this.m_allParticleFlags & i) {
+i & t.b2ParticleFlag.b2_tensileParticle && (this.m_accumulation2Buffer = this.RequestBuffer(this.m_accumulation2Buffer));
+i & t.b2ParticleFlag.b2_colorMixingParticle && (this.m_colorBuffer.data = this.RequestBuffer(this.m_colorBuffer.data));
+this.m_allParticleFlags |= i;
+}
+this.m_flagsBuffer.data[e] = i;
+};
+n.prototype.GetParticleFlags = function(t) {
+if (!this.m_flagsBuffer.data) throw new Error();
+return this.m_flagsBuffer.data[t];
+};
+n.prototype.SetFlagsBuffer = function(t, e) {
+this.SetUserOverridableBuffer(this.m_flagsBuffer, t, e);
+};
+n.prototype.SetPositionBuffer = function(t, e) {
+this.SetUserOverridableBuffer(this.m_positionBuffer, t, e);
+};
+n.prototype.SetVelocityBuffer = function(t, e) {
+this.SetUserOverridableBuffer(this.m_velocityBuffer, t, e);
+};
+n.prototype.SetColorBuffer = function(t, e) {
+this.SetUserOverridableBuffer(this.m_colorBuffer, t, e);
+};
+n.prototype.SetUserDataBuffer = function(t, e) {
+this.SetUserOverridableBuffer(this.m_userDataBuffer, t, e);
+};
+n.prototype.GetContacts = function() {
+return this.m_contactBuffer.data;
+};
+n.prototype.GetContactCount = function() {
+return this.m_contactBuffer.count;
+};
+n.prototype.GetBodyContacts = function() {
+return this.m_bodyContactBuffer.data;
+};
+n.prototype.GetBodyContactCount = function() {
+return this.m_bodyContactBuffer.count;
+};
+n.prototype.GetPairs = function() {
+return this.m_pairBuffer.data;
+};
+n.prototype.GetPairCount = function() {
+return this.m_pairBuffer.count;
+};
+n.prototype.GetTriads = function() {
+return this.m_triadBuffer.data;
+};
+n.prototype.GetTriadCount = function() {
+return this.m_triadBuffer.count;
+};
+n.prototype.SetStuckThreshold = function(t) {
+this.m_stuckThreshold = t;
+if (t > 0) {
+this.m_lastBodyContactStepBuffer.data = this.RequestBuffer(this.m_lastBodyContactStepBuffer.data);
+this.m_bodyContactCountBuffer.data = this.RequestBuffer(this.m_bodyContactCountBuffer.data);
+this.m_consecutiveContactStepsBuffer.data = this.RequestBuffer(this.m_consecutiveContactStepsBuffer.data);
+}
+};
+n.prototype.GetStuckCandidates = function() {
+return this.m_stuckParticleBuffer.Data();
+};
+n.prototype.GetStuckCandidateCount = function() {
+return this.m_stuckParticleBuffer.GetCount();
+};
+n.prototype.ComputeCollisionEnergy = function() {
+if (!this.m_velocityBuffer.data) throw new Error();
+for (var t = n.ComputeCollisionEnergy_s_v, e = this.m_velocityBuffer.data, i = 0, r = 0; r < this.m_contactBuffer.count; r++) {
+var s = this.m_contactBuffer.data[r], o = s.indexA, a = s.indexB, c = s.normal, l = P.SubVV(e[a], e[o], t), h = P.DotVV(l, c);
+h < 0 && (i += h * h);
+}
+return .5 * this.GetParticleMass() * i;
+};
+n.prototype.SetStrictContactCheck = function(t) {
+this.m_def.strictContactCheck = t;
+};
+n.prototype.GetStrictContactCheck = function() {
+return this.m_def.strictContactCheck;
+};
+n.prototype.SetParticleLifetime = function(t, e) {
+var i = null === this.m_indexByExpirationTimeBuffer.data;
+this.m_expirationTimeBuffer.data = this.RequestBuffer(this.m_expirationTimeBuffer.data);
+this.m_indexByExpirationTimeBuffer.data = this.RequestBuffer(this.m_indexByExpirationTimeBuffer.data);
+if (i) for (var n = this.GetParticleCount(), r = 0; r < n; ++r) this.m_indexByExpirationTimeBuffer.data[r] = r;
+var s = e / this.m_def.lifetimeGranularity, o = s > 0 ? this.GetQuantizedTimeElapsed() + s : s;
+if (o !== this.m_expirationTimeBuffer.data[t]) {
+this.m_expirationTimeBuffer.data[t] = o;
+this.m_expirationTimeBufferRequiresSorting = !0;
+}
+};
+n.prototype.GetParticleLifetime = function(t) {
+return this.ExpirationTimeToLifetime(this.GetExpirationTimeBuffer()[t]);
+};
+n.prototype.SetDestructionByAge = function(t) {
+t && this.GetExpirationTimeBuffer();
+this.m_def.destroyByAge = t;
+};
+n.prototype.GetDestructionByAge = function() {
+return this.m_def.destroyByAge;
+};
+n.prototype.GetExpirationTimeBuffer = function() {
+this.m_expirationTimeBuffer.data = this.RequestBuffer(this.m_expirationTimeBuffer.data);
+return this.m_expirationTimeBuffer.data;
+};
+n.prototype.ExpirationTimeToLifetime = function(t) {
+return (t > 0 ? t - this.GetQuantizedTimeElapsed() : t) * this.m_def.lifetimeGranularity;
+};
+n.prototype.GetIndexByExpirationTimeBuffer = function() {
+this.GetParticleCount() ? this.SetParticleLifetime(0, this.GetParticleLifetime(0)) : this.m_indexByExpirationTimeBuffer.data = this.RequestBuffer(this.m_indexByExpirationTimeBuffer.data);
+if (!this.m_indexByExpirationTimeBuffer.data) throw new Error();
+return this.m_indexByExpirationTimeBuffer.data;
+};
+n.prototype.ParticleApplyLinearImpulse = function(t, e) {
+this.ApplyLinearImpulse(t, t + 1, e);
+};
+n.prototype.ApplyLinearImpulse = function(t, e, i) {
+if (!this.m_velocityBuffer.data) throw new Error();
+for (var n = this.m_velocityBuffer.data, r = (e - t) * this.GetParticleMass(), s = new P().Copy(i).SelfMul(1 / r), o = t; o < e; o++) n[o].SelfAdd(s);
+};
+n.IsSignificantForce = function(t) {
+return 0 !== t.x || 0 !== t.y;
+};
+n.prototype.ParticleApplyForce = function(t, e) {
+if (!this.m_flagsBuffer.data) throw new Error();
+if (n.IsSignificantForce(e) && this.ForceCanBeApplied(this.m_flagsBuffer.data[t])) {
+this.PrepareForceBuffer();
+this.m_forceBuffer[t].SelfAdd(e);
+}
+};
+n.prototype.ApplyForce = function(t, e, i) {
+var r = new P().Copy(i).SelfMul(1 / (e - t));
+if (n.IsSignificantForce(r)) {
+this.PrepareForceBuffer();
+for (var s = t; s < e; s++) this.m_forceBuffer[s].SelfAdd(r);
+}
+};
+n.prototype.GetNext = function() {
+return this.m_next;
+};
+n.prototype.QueryAABB = function(t, e) {
+if (0 !== this.m_proxyBuffer.count) {
+var i = this.m_proxyBuffer.count, r = Bn(this.m_proxyBuffer.data, 0, i, n.computeTag(this.m_inverseDiameter * e.lowerBound.x, this.m_inverseDiameter * e.lowerBound.y), n.Proxy.CompareProxyTag), s = Dn(this.m_proxyBuffer.data, r, i, n.computeTag(this.m_inverseDiameter * e.upperBound.x, this.m_inverseDiameter * e.upperBound.y), n.Proxy.CompareTagProxy);
+if (!this.m_positionBuffer.data) throw new Error();
+for (var o = this.m_positionBuffer.data, a = r; a < s; ++a) {
+var c = this.m_proxyBuffer.data[a].index, l = o[c];
+if (e.lowerBound.x < l.x && l.x < e.upperBound.x && e.lowerBound.y < l.y && l.y < e.upperBound.y && !t.ReportParticle(this, c)) break;
+}
+}
+};
+n.prototype.QueryShapeAABB = function(t, e, i, r) {
+void 0 === r && (r = 0);
+var s = n.QueryShapeAABB_s_aabb;
+e.ComputeAABB(s, i, r);
+this.QueryAABB(t, s);
+};
+n.prototype.QueryPointAABB = function(t, e, i) {
+void 0 === i && (i = c);
+var r = n.QueryPointAABB_s_aabb;
+r.lowerBound.Set(e.x - i, e.y - i);
+r.upperBound.Set(e.x + i, e.y + i);
+this.QueryAABB(t, r);
+};
+n.prototype.RayCast = function(t, e, i) {
+var r = n.RayCast_s_aabb, s = n.RayCast_s_p, o = n.RayCast_s_v, a = n.RayCast_s_n, c = n.RayCast_s_point;
+if (0 !== this.m_proxyBuffer.count) {
+if (!this.m_positionBuffer.data) throw new Error();
+var l = this.m_positionBuffer.data, h = r;
+P.MinV(e, i, h.lowerBound);
+P.MaxV(e, i, h.upperBound);
+for (var u, _ = 1, f = P.SubVV(i, e, o), d = P.DotVV(f, f), m = this.GetInsideBoundsEnumerator(h); (u = m.GetNext()) >= 0; ) {
+var p = P.SubVV(e, l[u], s), v = P.DotVV(p, f), y = v * v - d * (P.DotVV(p, p) - this.m_squaredDiameter);
+if (y >= 0) {
+var x = w(y), C = (-v - x) / d;
+if (C > _) continue;
+if (C < 0 && ((C = (-v + x) / d) < 0 || C > _)) continue;
+var b = P.AddVMulSV(p, C, f, a);
+b.Normalize();
+var A = t.ReportParticle(this, u, P.AddVMulSV(e, C, f, c), b, C);
+if ((_ = g(_, A)) <= 0) break;
+}
+}
+}
+};
+n.prototype.ComputeAABB = function(t) {
+var e = this.GetParticleCount();
+t.lowerBound.x = +i;
+t.lowerBound.y = +i;
+t.upperBound.x = -i;
+t.upperBound.y = -i;
+if (!this.m_positionBuffer.data) throw new Error();
+for (var n = this.m_positionBuffer.data, r = 0; r < e; r++) {
+var s = n[r];
+P.MinV(t.lowerBound, s, t.lowerBound);
+P.MaxV(t.upperBound, s, t.upperBound);
+}
+t.lowerBound.x -= this.m_particleDiameter;
+t.lowerBound.y -= this.m_particleDiameter;
+t.upperBound.x += this.m_particleDiameter;
+t.upperBound.y += this.m_particleDiameter;
+};
+n.prototype.FreeBuffer = function(t, e) {
+null !== t && (t.length = 0);
+};
+n.prototype.FreeUserOverridableBuffer = function(t) {
+0 === t.userSuppliedCapacity && this.FreeBuffer(t.data, this.m_internalAllocatedCapacity);
+};
+n.prototype.ReallocateBuffer3 = function(t, e, i) {
+if (i <= e) throw new Error();
+var n = t ? t.slice() : [];
+n.length = i;
+return n;
+};
+n.prototype.ReallocateBuffer5 = function(t, e, i, n, r) {
+if (n <= i) throw new Error();
+if (e && !(n <= e)) throw new Error();
+r && !t || e || (t = this.ReallocateBuffer3(t, i, n));
+return t;
+};
+n.prototype.ReallocateBuffer4 = function(t, e, i, n) {
+return this.ReallocateBuffer5(t.data, t.userSuppliedCapacity, e, i, n);
+};
+n.prototype.RequestBuffer = function(t) {
+if (!t) {
+0 === this.m_internalAllocatedCapacity && this.ReallocateInternalAllocatedBuffers(256);
+(t = []).length = this.m_internalAllocatedCapacity;
+}
+return t;
+};
+n.prototype.ReallocateHandleBuffers = function(t) {
+this.m_handleIndexBuffer.data = this.ReallocateBuffer4(this.m_handleIndexBuffer, this.m_internalAllocatedCapacity, t, !0);
+};
+n.prototype.ReallocateInternalAllocatedBuffers = function(t) {
+function e(t, e) {
+return e && t > e ? e : t;
+}
+t = e(t = e(t = e(t = e(t = e(t = e(t, this.m_def.maxCount), this.m_flagsBuffer.userSuppliedCapacity), this.m_positionBuffer.userSuppliedCapacity), this.m_velocityBuffer.userSuppliedCapacity), this.m_colorBuffer.userSuppliedCapacity), this.m_userDataBuffer.userSuppliedCapacity);
+if (this.m_internalAllocatedCapacity < t) {
+this.ReallocateHandleBuffers(t);
+this.m_flagsBuffer.data = this.ReallocateBuffer4(this.m_flagsBuffer, this.m_internalAllocatedCapacity, t, !1);
+var i = this.m_stuckThreshold > 0;
+this.m_lastBodyContactStepBuffer.data = this.ReallocateBuffer4(this.m_lastBodyContactStepBuffer, this.m_internalAllocatedCapacity, t, i);
+this.m_bodyContactCountBuffer.data = this.ReallocateBuffer4(this.m_bodyContactCountBuffer, this.m_internalAllocatedCapacity, t, i);
+this.m_consecutiveContactStepsBuffer.data = this.ReallocateBuffer4(this.m_consecutiveContactStepsBuffer, this.m_internalAllocatedCapacity, t, i);
+this.m_positionBuffer.data = this.ReallocateBuffer4(this.m_positionBuffer, this.m_internalAllocatedCapacity, t, !1);
+this.m_velocityBuffer.data = this.ReallocateBuffer4(this.m_velocityBuffer, this.m_internalAllocatedCapacity, t, !1);
+this.m_forceBuffer = this.ReallocateBuffer5(this.m_forceBuffer, 0, this.m_internalAllocatedCapacity, t, !1);
+this.m_weightBuffer = this.ReallocateBuffer5(this.m_weightBuffer, 0, this.m_internalAllocatedCapacity, t, !1);
+this.m_staticPressureBuffer = this.ReallocateBuffer5(this.m_staticPressureBuffer, 0, this.m_internalAllocatedCapacity, t, !0);
+this.m_accumulationBuffer = this.ReallocateBuffer5(this.m_accumulationBuffer, 0, this.m_internalAllocatedCapacity, t, !1);
+this.m_accumulation2Buffer = this.ReallocateBuffer5(this.m_accumulation2Buffer, 0, this.m_internalAllocatedCapacity, t, !0);
+this.m_depthBuffer = this.ReallocateBuffer5(this.m_depthBuffer, 0, this.m_internalAllocatedCapacity, t, !0);
+this.m_colorBuffer.data = this.ReallocateBuffer4(this.m_colorBuffer, this.m_internalAllocatedCapacity, t, !0);
+this.m_groupBuffer = this.ReallocateBuffer5(this.m_groupBuffer, 0, this.m_internalAllocatedCapacity, t, !1);
+this.m_userDataBuffer.data = this.ReallocateBuffer4(this.m_userDataBuffer, this.m_internalAllocatedCapacity, t, !0);
+this.m_expirationTimeBuffer.data = this.ReallocateBuffer4(this.m_expirationTimeBuffer, this.m_internalAllocatedCapacity, t, !0);
+this.m_indexByExpirationTimeBuffer.data = this.ReallocateBuffer4(this.m_indexByExpirationTimeBuffer, this.m_internalAllocatedCapacity, t, !1);
+this.m_internalAllocatedCapacity = t;
+}
+};
+n.prototype.CreateParticleForGroup = function(t, i, n) {
+var r = new vn();
+r.flags = e(t.flags, 0);
+N.MulXV(i, n, r.position);
+P.AddVV(e(t.linearVelocity, P.ZERO), P.CrossSV(e(t.angularVelocity, 0), P.SubVV(r.position, e(t.position, P.ZERO), P.s_t0), P.s_t0), r.velocity);
+r.color.Copy(e(t.color, z.ZERO));
+r.lifetime = e(t.lifetime, 0);
+r.userData = t.userData;
+this.CreateParticle(r);
+};
+n.prototype.CreateParticlesStrokeShapeForGroup = function(i, r, s) {
+var o = n.CreateParticlesStrokeShapeForGroup_s_edge, a = n.CreateParticlesStrokeShapeForGroup_s_d, c = n.CreateParticlesStrokeShapeForGroup_s_p, l = e(r.stride, 0);
+0 === l && (l = this.GetParticleStride());
+for (var h = 0, u = i.GetChildCount(), _ = 0; _ < u; _++) {
+var f = null;
+if (i.GetType() === t.b2ShapeType.e_edgeShape) f = i; else {
+f = o;
+i.GetChildEdge(f, _);
+}
+for (var d = P.SubVV(f.m_vertex2, f.m_vertex1, a), m = d.Length(); h < m; ) {
+var p = P.AddVMulSV(f.m_vertex1, h / m, d, c);
+this.CreateParticleForGroup(r, s, p);
+h += l;
+}
+h -= m;
+}
+};
+n.prototype.CreateParticlesFillShapeForGroup = function(t, i, r) {
+var s = n.CreateParticlesFillShapeForGroup_s_aabb, o = n.CreateParticlesFillShapeForGroup_s_p, a = e(i.stride, 0);
+0 === a && (a = this.GetParticleStride());
+var c = N.IDENTITY, l = s;
+t.ComputeAABB(l, c, 0);
+for (var h = Math.floor(l.lowerBound.y / a) * a; h < l.upperBound.y; h += a) for (var u = Math.floor(l.lowerBound.x / a) * a; u < l.upperBound.x; u += a) {
+var _ = o.Set(u, h);
+t.TestPoint(c, _) && this.CreateParticleForGroup(i, r, _);
+}
+};
+n.prototype.CreateParticlesWithShapeForGroup = function(e, i, n) {
+switch (e.GetType()) {
+case t.b2ShapeType.e_edgeShape:
+case t.b2ShapeType.e_chainShape:
+this.CreateParticlesStrokeShapeForGroup(e, i, n);
+break;
+
+case t.b2ShapeType.e_polygonShape:
+case t.b2ShapeType.e_circleShape:
+this.CreateParticlesFillShapeForGroup(e, i, n);
+}
+};
+n.prototype.CreateParticlesWithShapesForGroup = function(t, e, i, r) {
+var s = new n.CompositeShape(t, e);
+this.CreateParticlesFillShapeForGroup(s, i, r);
+};
+n.prototype.CloneParticle = function(t, e) {
+var i = new vn();
+if (!this.m_flagsBuffer.data) throw new Error();
+if (!this.m_positionBuffer.data) throw new Error();
+if (!this.m_velocityBuffer.data) throw new Error();
+i.flags = this.m_flagsBuffer.data[t];
+i.position.Copy(this.m_positionBuffer.data[t]);
+i.velocity.Copy(this.m_velocityBuffer.data[t]);
+this.m_colorBuffer.data && i.color.Copy(this.m_colorBuffer.data[t]);
+this.m_userDataBuffer.data && (i.userData = this.m_userDataBuffer.data[t]);
+i.group = e;
+var n = this.CreateParticle(i);
+if (this.m_handleIndexBuffer.data) {
+var r = this.m_handleIndexBuffer.data[t];
+r && r.SetIndex(n);
+this.m_handleIndexBuffer.data[n] = r;
+this.m_handleIndexBuffer.data[t] = null;
+}
+this.m_lastBodyContactStepBuffer.data && (this.m_lastBodyContactStepBuffer.data[n] = this.m_lastBodyContactStepBuffer.data[t]);
+this.m_bodyContactCountBuffer.data && (this.m_bodyContactCountBuffer.data[n] = this.m_bodyContactCountBuffer.data[t]);
+this.m_consecutiveContactStepsBuffer.data && (this.m_consecutiveContactStepsBuffer.data[n] = this.m_consecutiveContactStepsBuffer.data[t]);
+this.m_hasForce && this.m_forceBuffer[n].Copy(this.m_forceBuffer[t]);
+this.m_staticPressureBuffer && (this.m_staticPressureBuffer[n] = this.m_staticPressureBuffer[t]);
+this.m_depthBuffer && (this.m_depthBuffer[n] = this.m_depthBuffer[t]);
+this.m_expirationTimeBuffer.data && (this.m_expirationTimeBuffer.data[n] = this.m_expirationTimeBuffer.data[t]);
+return n;
+};
+n.prototype.DestroyParticlesInGroup = function(t, e) {
+void 0 === e && (e = !1);
+for (var i = t.m_firstIndex; i < t.m_lastIndex; i++) this.DestroyParticle(i, e);
+};
+n.prototype.DestroyParticleGroup = function(t) {
+this.m_world.m_destructionListener && this.m_world.m_destructionListener.SayGoodbyeParticleGroup(t);
+this.SetGroupFlags(t, 0);
+for (var e = t.m_firstIndex; e < t.m_lastIndex; e++) this.m_groupBuffer[e] = null;
+t.m_prev && (t.m_prev.m_next = t.m_next);
+t.m_next && (t.m_next.m_prev = t.m_prev);
+t === this.m_groupList && (this.m_groupList = t.m_next);
+--this.m_groupCount;
+};
+n.ParticleCanBeConnected = function(e, i) {
+return 0 != (e & (t.b2ParticleFlag.b2_wallParticle | t.b2ParticleFlag.b2_springParticle | t.b2ParticleFlag.b2_elasticParticle)) || null !== i && 0 != (i.GetGroupFlags() & t.b2ParticleGroupFlag.b2_rigidParticleGroup);
+};
+n.prototype.UpdatePairsAndTriads = function(e, i, r) {
+var s = n.UpdatePairsAndTriads_s_dab, o = n.UpdatePairsAndTriads_s_dbc, a = n.UpdatePairsAndTriads_s_dca;
+if (!this.m_flagsBuffer.data) throw new Error();
+if (!this.m_positionBuffer.data) throw new Error();
+if (!this.m_velocityBuffer.data) throw new Error();
+for (var c = this.m_positionBuffer.data, l = 0, h = e; h < i; h++) l |= this.m_flagsBuffer.data[h];
+if (l & n.k_pairFlags) for (var u = 0; u < this.m_contactBuffer.count; u++) {
+var _ = this.m_contactBuffer.data[u], f = _.indexA, d = _.indexB, m = this.m_flagsBuffer.data[f], p = this.m_flagsBuffer.data[d], v = this.m_groupBuffer[f], y = this.m_groupBuffer[d];
+if (f >= e && f < i && d >= e && d < i && !((m | p) & t.b2ParticleFlag.b2_zombieParticle) && (m | p) & n.k_pairFlags && (r.IsNecessary(f) || r.IsNecessary(d)) && n.ParticleCanBeConnected(m, v) && n.ParticleCanBeConnected(p, y) && r.ShouldCreatePair(f, d)) {
+var x = this.m_pairBuffer.data[this.m_pairBuffer.Append()];
+x.indexA = f;
+x.indexB = d;
+x.flags = _.flags;
+x.strength = g(v ? v.m_strength : 1, y ? y.m_strength : 1);
+x.distance = P.DistanceVV(c[f], c[d]);
+}
+En(this.m_pairBuffer.data, 0, this.m_pairBuffer.count, n.ComparePairIndices);
+this.m_pairBuffer.Unique(n.MatchPairIndices);
+}
+if (l & n.k_triadFlags) {
+var C = new An(i - e);
+for (h = e; h < i; h++) {
+var b = this.m_flagsBuffer.data[h], A = this.m_groupBuffer[h];
+b & t.b2ParticleFlag.b2_zombieParticle || !n.ParticleCanBeConnected(b, A) || C.AddGenerator(c[h], h, r.IsNecessary(h));
+}
+var S = this.GetParticleStride();
+C.Generate(S / 2, 2 * S);
+var w = this;
+C.GetNodes((function(t, e, i) {
+if (!w.m_flagsBuffer.data) throw new Error();
+var l = w.m_flagsBuffer.data[t], h = w.m_flagsBuffer.data[e], u = w.m_flagsBuffer.data[i];
+if ((l | h | u) & n.k_triadFlags && r.ShouldCreateTriad(t, e, i)) {
+var _ = c[t], f = c[e], d = c[i], m = P.SubVV(_, f, s), p = P.SubVV(f, d, o), v = P.SubVV(d, _, a), y = 4 * w.m_squaredDiameter;
+if (P.DotVV(m, m) > y || P.DotVV(p, p) > y || P.DotVV(v, v) > y) return;
+var x = w.m_groupBuffer[t], C = w.m_groupBuffer[e], b = w.m_groupBuffer[i], A = w.m_triadBuffer.data[w.m_triadBuffer.Append()];
+A.indexA = t;
+A.indexB = e;
+A.indexC = i;
+A.flags = l | h | u;
+A.strength = g(g(x ? x.m_strength : 1, C ? C.m_strength : 1), b ? b.m_strength : 1);
+var S = (_.x + f.x + d.x) / 3, T = (_.y + f.y + d.y) / 3;
+A.pa.x = _.x - S;
+A.pa.y = _.y - T;
+A.pb.x = f.x - S;
+A.pb.y = f.y - T;
+A.pc.x = d.x - S;
+A.pc.y = d.y - T;
+A.ka = -P.DotVV(v, m);
+A.kb = -P.DotVV(m, p);
+A.kc = -P.DotVV(p, v);
+A.s = P.CrossVV(_, f) + P.CrossVV(f, d) + P.CrossVV(d, _);
+}
+}));
+En(this.m_triadBuffer.data, 0, this.m_triadBuffer.count, n.CompareTriadIndices);
+this.m_triadBuffer.Unique(n.MatchTriadIndices);
+}
+};
+n.prototype.UpdatePairsAndTriadsWithReactiveParticles = function() {
+var e = new n.ReactiveFilter(this.m_flagsBuffer);
+this.UpdatePairsAndTriads(0, this.m_count, e);
+if (!this.m_flagsBuffer.data) throw new Error();
+for (var i = 0; i < this.m_count; i++) this.m_flagsBuffer.data[i] &= ~t.b2ParticleFlag.b2_reactiveParticle;
+this.m_allParticleFlags &= ~t.b2ParticleFlag.b2_reactiveParticle;
+};
+n.ComparePairIndices = function(t, e) {
+var i = t.indexA - e.indexA;
+return 0 !== i ? i < 0 : t.indexB < e.indexB;
+};
+n.MatchPairIndices = function(t, e) {
+return t.indexA === e.indexA && t.indexB === e.indexB;
+};
+n.CompareTriadIndices = function(t, e) {
+var i = t.indexA - e.indexA;
+if (0 !== i) return i < 0;
+var n = t.indexB - e.indexB;
+return 0 !== n ? n < 0 : t.indexC < e.indexC;
+};
+n.MatchTriadIndices = function(t, e) {
+return t.indexA === e.indexA && t.indexB === e.indexB && t.indexC === e.indexC;
+};
+n.InitializeParticleLists = function(t, e) {
+for (var i = t.GetBufferIndex(), n = t.GetParticleCount(), r = 0; r < n; r++) {
+var s = e[r];
+s.list = s;
+s.next = null;
+s.count = 1;
+s.index = r + i;
+}
+};
+n.prototype.MergeParticleListsInContact = function(t, e) {
+for (var i = t.GetBufferIndex(), r = 0; r < this.m_contactBuffer.count; r++) {
+var s = this.m_contactBuffer.data[r], o = s.indexA, a = s.indexB;
+if (t.ContainsParticle(o) && t.ContainsParticle(a)) {
+var c = e[o - i].list, l = e[a - i].list;
+if (c !== l) {
+if (c.count < l.count) {
+var h = c;
+c = l;
+l = h;
+}
+n.MergeParticleLists(c, l);
+}
+}
+}
+};
+n.MergeParticleLists = function(t, e) {
+for (var i = e; ;) {
+i.list = t;
+var n = i.next;
+if (!n) {
+i.next = t.next;
+break;
+}
+i = n;
+}
+t.next = e;
+t.count += e.count;
+e.count = 0;
+};
+n.FindLongestParticleList = function(t, e) {
+for (var i = t.GetParticleCount(), n = e[0], r = 0; r < i; r++) {
+var s = e[r];
+n.count < s.count && (n = s);
+}
+return n;
+};
+n.prototype.MergeZombieParticleListNodes = function(e, i, r) {
+if (!this.m_flagsBuffer.data) throw new Error();
+for (var s = e.GetParticleCount(), o = 0; o < s; o++) {
+var a = i[o];
+a !== r && this.m_flagsBuffer.data[a.index] & t.b2ParticleFlag.b2_zombieParticle && n.MergeParticleListAndNode(r, a);
+}
+};
+n.MergeParticleListAndNode = function(t, e) {
+e.list = t;
+e.next = t.next;
+t.next = e;
+t.count++;
+e.count = 0;
+};
+n.prototype.CreateParticleGroupsFromParticleList = function(e, i, n) {
+if (!this.m_flagsBuffer.data) throw new Error();
+var r = e.GetParticleCount(), s = new xn();
+s.groupFlags = e.GetGroupFlags();
+s.userData = e.GetUserData();
+for (var o = 0; o < r; o++) {
+var a = i[o];
+if (a.count && a !== n) for (var c = this.CreateParticleGroup(s), l = a; l; l = l.next) {
+var h = l.index, u = this.CloneParticle(h, c);
+this.m_flagsBuffer.data[h] |= t.b2ParticleFlag.b2_zombieParticle;
+l.index = u;
+}
+}
+};
+n.prototype.UpdatePairsAndTriadsWithParticleList = function(t, e) {
+for (var i = t.GetBufferIndex(), n = 0; n < this.m_pairBuffer.count; n++) {
+var r = this.m_pairBuffer.data[n], s = r.indexA, o = r.indexB;
+t.ContainsParticle(s) && (r.indexA = e[s - i].index);
+t.ContainsParticle(o) && (r.indexB = e[o - i].index);
+}
+for (n = 0; n < this.m_triadBuffer.count; n++) {
+var a = this.m_triadBuffer.data[n], c = (s = a.indexA, o = a.indexB, a.indexC);
+t.ContainsParticle(s) && (a.indexA = e[s - i].index);
+t.ContainsParticle(o) && (a.indexB = e[o - i].index);
+t.ContainsParticle(c) && (a.indexC = e[c - i].index);
+}
+};
+n.prototype.ComputeDepth = function() {
+for (var e = [], n = 0, r = 0; r < this.m_contactBuffer.count; r++) {
+var s = (y = this.m_contactBuffer.data[r]).indexA, o = y.indexB, a = this.m_groupBuffer[s], c = this.m_groupBuffer[o];
+a && a === c && a.m_groupFlags & t.b2ParticleGroupFlag.b2_particleGroupNeedsUpdateDepth && (e[n++] = y);
+}
+for (var l = [], h = 0, u = this.m_groupList; u; u = u.GetNext()) if (u.m_groupFlags & t.b2ParticleGroupFlag.b2_particleGroupNeedsUpdateDepth) {
+l[h++] = u;
+this.SetGroupFlags(u, u.m_groupFlags & ~t.b2ParticleGroupFlag.b2_particleGroupNeedsUpdateDepth);
+for (var _ = u.m_firstIndex; _ < u.m_lastIndex; _++) this.m_accumulationBuffer[_] = 0;
+}
+for (r = 0; r < n; r++) {
+s = (y = e[r]).indexA, o = y.indexB;
+var f = y.weight;
+this.m_accumulationBuffer[s] += f;
+this.m_accumulationBuffer[o] += f;
+}
+for (_ = 0; _ < h; _++) for (var d = (u = l[_]).m_firstIndex; d < u.m_lastIndex; d++) {
+f = this.m_accumulationBuffer[d];
+this.m_depthBuffer[d] = f < .8 ? 0 : i;
+}
+for (var m = w(this.m_count) >> 0, p = 0; p < m; p++) {
+var v = !1;
+for (r = 0; r < n; r++) {
+s = (y = e[r]).indexA, o = y.indexB;
+var y, g = 1 - y.weight, x = this.m_depthBuffer[s], C = this.m_depthBuffer[o], b = C + g, A = x + g;
+if (x > b) {
+this.m_depthBuffer[s] = b;
+v = !0;
+}
+if (C > A) {
+this.m_depthBuffer[o] = A;
+v = !0;
+}
+}
+if (!v) break;
+}
+for (_ = 0; _ < h; _++) for (var S = (u = l[_]).m_firstIndex; S < u.m_lastIndex; S++) this.m_depthBuffer[S] < i ? this.m_depthBuffer[S] *= this.m_particleDiameter : this.m_depthBuffer[S] = 0;
+};
+n.prototype.GetInsideBoundsEnumerator = function(t) {
+var e = n.computeTag(this.m_inverseDiameter * t.lowerBound.x - 1, this.m_inverseDiameter * t.lowerBound.y - 1), i = n.computeTag(this.m_inverseDiameter * t.upperBound.x + 1, this.m_inverseDiameter * t.upperBound.y + 1), r = this.m_proxyBuffer.count, s = Bn(this.m_proxyBuffer.data, 0, r, e, n.Proxy.CompareProxyTag), o = Dn(this.m_proxyBuffer.data, 0, r, i, n.Proxy.CompareTagProxy);
+return new n.InsideBoundsEnumerator(this, e, i, s, o);
+};
+n.prototype.UpdateAllParticleFlags = function() {
+if (!this.m_flagsBuffer.data) throw new Error();
+this.m_allParticleFlags = 0;
+for (var t = 0; t < this.m_count; t++) this.m_allParticleFlags |= this.m_flagsBuffer.data[t];
+this.m_needsUpdateAllParticleFlags = !1;
+};
+n.prototype.UpdateAllGroupFlags = function() {
+this.m_allGroupFlags = 0;
+for (var t = this.m_groupList; t; t = t.GetNext()) this.m_allGroupFlags |= t.m_groupFlags;
+this.m_needsUpdateAllGroupFlags = !1;
+};
+n.prototype.AddContact = function(t, e, i) {
+if (!this.m_flagsBuffer.data) throw new Error();
+if (!this.m_positionBuffer.data) throw new Error();
+var r = n.AddContact_s_d, s = this.m_positionBuffer.data, o = P.SubVV(s[e], s[t], r), a = P.DotVV(o, o);
+if (a < this.m_squaredDiameter) {
+var c = S(a);
+isFinite(c) || (c = 198177537e11);
+var l = this.m_contactBuffer.data[this.m_contactBuffer.Append()];
+l.indexA = t;
+l.indexB = e;
+l.flags = this.m_flagsBuffer.data[t] | this.m_flagsBuffer.data[e];
+l.weight = 1 - a * c * this.m_inverseDiameter;
+P.MulSV(c, o, l.normal);
+}
+};
+n.prototype.FindContacts_Reference = function(t) {
+var e = this.m_proxyBuffer.count;
+this.m_contactBuffer.count = 0;
+for (var i = 0, r = 0; i < e; i++) {
+for (var s = n.computeRelativeTag(this.m_proxyBuffer.data[i].tag, 1, 0), o = i + 1; o < e && !(s < this.m_proxyBuffer.data[o].tag); o++) this.AddContact(this.m_proxyBuffer.data[i].index, this.m_proxyBuffer.data[o].index, this.m_contactBuffer);
+for (var a = n.computeRelativeTag(this.m_proxyBuffer.data[i].tag, -1, 1); r < e && !(a <= this.m_proxyBuffer.data[r].tag); r++) ;
+var c = n.computeRelativeTag(this.m_proxyBuffer.data[i].tag, 1, 1);
+for (o = r; o < e && !(c < this.m_proxyBuffer.data[o].tag); o++) this.AddContact(this.m_proxyBuffer.data[i].index, this.m_proxyBuffer.data[o].index, this.m_contactBuffer);
+}
+};
+n.prototype.FindContacts = function(t) {
+this.FindContacts_Reference(t);
+};
+n.prototype.UpdateProxies_Reference = function(t) {
+if (!this.m_positionBuffer.data) throw new Error();
+for (var e = this.m_positionBuffer.data, i = this.m_inverseDiameter, r = 0; r < this.m_proxyBuffer.count; ++r) {
+var s = this.m_proxyBuffer.data[r], o = e[s.index];
+s.tag = n.computeTag(i * o.x, i * o.y);
+}
+};
+n.prototype.UpdateProxies = function(t) {
+this.UpdateProxies_Reference(t);
+};
+n.prototype.SortProxies = function(t) {
+Tn(this.m_proxyBuffer.data, 0, this.m_proxyBuffer.count, n.Proxy.CompareProxyProxy);
+};
+n.prototype.FilterContacts = function(e) {
+var i = this.GetParticleContactFilter();
+if (null !== i) {
+var n = this;
+this.m_contactBuffer.RemoveIf((function(e) {
+return 0 != (e.flags & t.b2ParticleFlag.b2_particleContactFilterParticle) && !i.ShouldCollideParticleParticle(n, e.indexA, e.indexB);
+}));
+}
+};
+n.prototype.NotifyContactListenerPreContact = function(t) {
+if (null !== this.GetParticleContactListener()) {
+t.Initialize(this.m_contactBuffer, this.m_flagsBuffer);
+throw new Error();
+}
+};
+n.prototype.NotifyContactListenerPostContact = function(t) {
+var e = this.GetParticleContactListener();
+if (null !== e) {
+for (var i = 0; i < this.m_contactBuffer.count; ++i) {
+var n = this.m_contactBuffer.data[i];
+e.BeginContactParticleParticle(this, n);
+}
+throw new Error();
+}
+};
+n.b2ParticleContactIsZombie = function(e) {
+return (e.flags & t.b2ParticleFlag.b2_zombieParticle) === t.b2ParticleFlag.b2_zombieParticle;
+};
+n.prototype.UpdateContacts = function(t) {
+this.UpdateProxies(this.m_proxyBuffer);
+this.SortProxies(this.m_proxyBuffer);
+var e = new n.b2ParticlePairSet();
+this.NotifyContactListenerPreContact(e);
+this.FindContacts(this.m_contactBuffer);
+this.FilterContacts(this.m_contactBuffer);
+this.NotifyContactListenerPostContact(e);
+t && this.m_contactBuffer.RemoveIf(n.b2ParticleContactIsZombie);
+};
+n.prototype.NotifyBodyContactListenerPreContact = function(t) {
+if (null !== this.GetFixtureContactListener()) {
+t.Initialize(this.m_bodyContactBuffer, this.m_flagsBuffer);
+throw new Error();
+}
+};
+n.prototype.NotifyBodyContactListenerPostContact = function(t) {
+var e = this.GetFixtureContactListener();
+if (null !== e) {
+for (var i = 0; i < this.m_bodyContactBuffer.count; i++) {
+var n = this.m_bodyContactBuffer.data[i];
+e.BeginContactFixtureParticle(this, n);
+}
+throw new Error();
+}
+};
+n.prototype.UpdateBodyContacts = function() {
+var t = n.UpdateBodyContacts_s_aabb, e = new n.FixtureParticleSet();
+this.NotifyBodyContactListenerPreContact(e);
+if (this.m_stuckThreshold > 0) {
+if (!this.m_bodyContactCountBuffer.data) throw new Error();
+if (!this.m_lastBodyContactStepBuffer.data) throw new Error();
+if (!this.m_consecutiveContactStepsBuffer.data) throw new Error();
+for (var i = this.GetParticleCount(), r = 0; r < i; r++) {
+this.m_bodyContactCountBuffer.data[r] = 0;
+this.m_timestamp > this.m_lastBodyContactStepBuffer.data[r] + 1 && (this.m_consecutiveContactStepsBuffer.data[r] = 0);
+}
+}
+this.m_bodyContactBuffer.SetCount(0);
+this.m_stuckParticleBuffer.SetCount(0);
+var s = t;
+this.ComputeAABB(s);
+var o = new n.UpdateBodyContactsCallback(this, this.GetFixtureContactFilter());
+this.m_world.QueryAABB(o, s);
+this.m_def.strictContactCheck && this.RemoveSpuriousBodyContacts();
+this.NotifyBodyContactListenerPostContact(e);
+};
+n.prototype.Solve = function(e) {
+var i = n.Solve_s_subStep;
+if (0 !== this.m_count) {
+this.m_expirationTimeBuffer.data && this.SolveLifetimes(e);
+this.m_allParticleFlags & t.b2ParticleFlag.b2_zombieParticle && this.SolveZombie();
+this.m_needsUpdateAllParticleFlags && this.UpdateAllParticleFlags();
+this.m_needsUpdateAllGroupFlags && this.UpdateAllGroupFlags();
+if (!this.m_paused) for (this.m_iterationIndex = 0; this.m_iterationIndex < e.particleIterations; this.m_iterationIndex++) {
+++this.m_timestamp;
+var r = i.Copy(e);
+r.dt /= e.particleIterations;
+r.inv_dt *= e.particleIterations;
+this.UpdateContacts(!1);
+this.UpdateBodyContacts();
+this.ComputeWeight();
+this.m_allGroupFlags & t.b2ParticleGroupFlag.b2_particleGroupNeedsUpdateDepth && this.ComputeDepth();
+this.m_allParticleFlags & t.b2ParticleFlag.b2_reactiveParticle && this.UpdatePairsAndTriadsWithReactiveParticles();
+this.m_hasForce && this.SolveForce(r);
+this.m_allParticleFlags & t.b2ParticleFlag.b2_viscousParticle && this.SolveViscous();
+this.m_allParticleFlags & t.b2ParticleFlag.b2_repulsiveParticle && this.SolveRepulsive(r);
+this.m_allParticleFlags & t.b2ParticleFlag.b2_powderParticle && this.SolvePowder(r);
+this.m_allParticleFlags & t.b2ParticleFlag.b2_tensileParticle && this.SolveTensile(r);
+this.m_allGroupFlags & t.b2ParticleGroupFlag.b2_solidParticleGroup && this.SolveSolid(r);
+this.m_allParticleFlags & t.b2ParticleFlag.b2_colorMixingParticle && this.SolveColorMixing();
+this.SolveGravity(r);
+this.m_allParticleFlags & t.b2ParticleFlag.b2_staticPressureParticle && this.SolveStaticPressure(r);
+this.SolvePressure(r);
+this.SolveDamping(r);
+this.m_allParticleFlags & n.k_extraDampingFlags && this.SolveExtraDamping();
+this.m_allParticleFlags & t.b2ParticleFlag.b2_elasticParticle && this.SolveElastic(r);
+this.m_allParticleFlags & t.b2ParticleFlag.b2_springParticle && this.SolveSpring(r);
+this.LimitVelocity(r);
+this.m_allGroupFlags & t.b2ParticleGroupFlag.b2_rigidParticleGroup && this.SolveRigidDamping();
+this.m_allParticleFlags & t.b2ParticleFlag.b2_barrierParticle && this.SolveBarrier(r);
+this.SolveCollision(r);
+this.m_allGroupFlags & t.b2ParticleGroupFlag.b2_rigidParticleGroup && this.SolveRigid(r);
+this.m_allParticleFlags & t.b2ParticleFlag.b2_wallParticle && this.SolveWall();
+if (!this.m_positionBuffer.data) throw new Error();
+if (!this.m_velocityBuffer.data) throw new Error();
+for (var s = 0; s < this.m_count; s++) this.m_positionBuffer.data[s].SelfMulAdd(r.dt, this.m_velocityBuffer.data[s]);
+}
+}
+};
+n.prototype.SolveCollision = function(t) {
+var e = n.SolveCollision_s_aabb;
+if (!this.m_positionBuffer.data) throw new Error();
+if (!this.m_velocityBuffer.data) throw new Error();
+var r = this.m_positionBuffer.data, s = this.m_velocityBuffer.data, o = e;
+o.lowerBound.x = +i;
+o.lowerBound.y = +i;
+o.upperBound.x = -i;
+o.upperBound.y = -i;
+for (var a = 0; a < this.m_count; a++) {
+var c = s[a], l = r[a], h = l.x + t.dt * c.x, u = l.y + t.dt * c.y;
+o.lowerBound.x = g(o.lowerBound.x, g(l.x, h));
+o.lowerBound.y = g(o.lowerBound.y, g(l.y, u));
+o.upperBound.x = x(o.upperBound.x, x(l.x, h));
+o.upperBound.y = x(o.upperBound.y, x(l.y, u));
+}
+var _ = new n.SolveCollisionCallback(this, t);
+this.m_world.QueryAABB(_, o);
+};
+n.prototype.LimitVelocity = function(t) {
+if (!this.m_velocityBuffer.data) throw new Error();
+for (var e = this.m_velocityBuffer.data, i = this.GetCriticalVelocitySquared(t), n = 0; n < this.m_count; n++) {
+var r = e[n], s = P.DotVV(r, r);
+s > i && r.SelfMul(w(i / s));
+}
+};
+n.prototype.SolveGravity = function(t) {
+if (!this.m_velocityBuffer.data) throw new Error();
+for (var e = n.SolveGravity_s_gravity, i = this.m_velocityBuffer.data, r = P.MulSV(t.dt * this.m_def.gravityScale, this.m_world.GetGravity(), e), s = 0; s < this.m_count; s++) i[s].SelfAdd(r);
+};
+n.prototype.SolveBarrier = function(e) {
+var i = n.SolveBarrier_s_aabb, r = n.SolveBarrier_s_va, s = n.SolveBarrier_s_vb, o = n.SolveBarrier_s_pba, a = n.SolveBarrier_s_vba, c = n.SolveBarrier_s_vc, l = n.SolveBarrier_s_pca, h = n.SolveBarrier_s_vca, u = n.SolveBarrier_s_qba, _ = n.SolveBarrier_s_qca, f = n.SolveBarrier_s_dv, d = n.SolveBarrier_s_f;
+if (!this.m_flagsBuffer.data) throw new Error();
+if (!this.m_positionBuffer.data) throw new Error();
+if (!this.m_velocityBuffer.data) throw new Error();
+for (var m = this.m_positionBuffer.data, p = this.m_velocityBuffer.data, v = 0; v < this.m_count; v++) {
+0 != (this.m_flagsBuffer.data[v] & n.k_barrierWallFlags) && p[v].SetZero();
+}
+for (var y = 2.5 * e.dt, g = this.GetParticleMass(), x = 0; x < this.m_pairBuffer.count; x++) {
+var C = this.m_pairBuffer.data[x];
+if (C.flags & t.b2ParticleFlag.b2_barrierParticle) {
+var b = C.indexA, A = C.indexB, S = m[b], T = m[A], E = i;
+P.MinV(S, T, E.lowerBound);
+P.MaxV(S, T, E.upperBound);
+for (var M = this.m_groupBuffer[b], B = this.m_groupBuffer[A], D = this.GetLinearVelocity(M, b, S, r), I = this.GetLinearVelocity(B, A, T, s), R = P.SubVV(T, S, o), L = P.SubVV(I, D, a), F = this.GetInsideBoundsEnumerator(E), O = void 0; (O = F.GetNext()) >= 0; ) {
+var V = m[O], N = this.m_groupBuffer[O];
+if (M !== N && B !== N) {
+var k = this.GetLinearVelocity(N, O, V, c), z = P.SubVV(V, S, l), G = P.SubVV(k, D, h), U = P.CrossVV(L, G), j = P.CrossVV(R, G) - P.CrossVV(z, L), W = P.CrossVV(R, z), H = void 0, q = void 0, X = u, Y = _;
+if (0 === U) {
+if (0 === j) continue;
+if (!((q = -W / j) >= 0 && q < y)) continue;
+P.AddVMulSV(R, q, L, X);
+P.AddVMulSV(z, q, G, Y);
+if (!((H = P.DotVV(X, Y) / P.DotVV(X, X)) >= 0 && H <= 1)) continue;
+} else {
+var J = j * j - 4 * W * U;
+if (J < 0) continue;
+var Z = w(J), K = (-j - Z) / (2 * U), Q = (-j + Z) / (2 * U);
+if (K > Q) {
+var $ = K;
+K = Q;
+Q = $;
+}
+q = K;
+P.AddVMulSV(R, q, L, X);
+P.AddVMulSV(z, q, G, Y);
+H = P.DotVV(X, Y) / P.DotVV(X, X);
+if (!(q >= 0 && q < y && H >= 0 && H <= 1)) {
+if (!((q = Q) >= 0 && q < y)) continue;
+P.AddVMulSV(R, q, L, X);
+P.AddVMulSV(z, q, G, Y);
+if (!((H = P.DotVV(X, Y) / P.DotVV(X, X)) >= 0 && H <= 1)) continue;
+}
+}
+var tt = f;
+tt.x = D.x + H * L.x - k.x;
+tt.y = D.y + H * L.y - k.y;
+var et = P.MulSV(g, tt, d);
+if (N && this.IsRigidGroup(N)) {
+var it = N.GetMass(), nt = N.GetInertia();
+it > 0 && N.m_linearVelocity.SelfMulAdd(1 / it, et);
+nt > 0 && (N.m_angularVelocity += P.CrossVV(P.SubVV(V, N.GetCenter(), P.s_t0), et) / nt);
+} else p[O].SelfAdd(tt);
+this.ParticleApplyForce(O, et.SelfMul(-e.inv_dt));
+}
+}
+}
+}
+};
+n.prototype.SolveStaticPressure = function(e) {
+if (!this.m_flagsBuffer.data) throw new Error();
+this.m_staticPressureBuffer = this.RequestBuffer(this.m_staticPressureBuffer);
+for (var i = this.GetCriticalPressure(e), n = this.m_def.staticPressureStrength * i, r = .25 * i, s = this.m_def.staticPressureRelaxation, o = 0; o < this.m_def.staticPressureIterations; o++) {
+for (var a = 0; a < this.m_count; a++) this.m_accumulationBuffer[a] = 0;
+for (var c = 0; c < this.m_contactBuffer.count; c++) {
+var l = this.m_contactBuffer.data[c];
+if (l.flags & t.b2ParticleFlag.b2_staticPressureParticle) {
+var h = l.indexA, u = l.indexB, _ = l.weight;
+this.m_accumulationBuffer[h] += _ * this.m_staticPressureBuffer[u];
+this.m_accumulationBuffer[u] += _ * this.m_staticPressureBuffer[h];
+}
+}
+for (a = 0; a < this.m_count; a++) {
+_ = this.m_weightBuffer[a];
+if (this.m_flagsBuffer.data[a] & t.b2ParticleFlag.b2_staticPressureParticle) {
+var f = (this.m_accumulationBuffer[a] + n * (_ - 1)) / (_ + s);
+this.m_staticPressureBuffer[a] = C(f, 0, r);
+} else this.m_staticPressureBuffer[a] = 0;
+}
+}
+};
+n.prototype.ComputeWeight = function() {
+for (var t = 0; t < this.m_count; t++) this.m_weightBuffer[t] = 0;
+for (t = 0; t < this.m_bodyContactBuffer.count; t++) {
+var e = (n = this.m_bodyContactBuffer.data[t]).index, i = n.weight;
+this.m_weightBuffer[e] += i;
+}
+for (t = 0; t < this.m_contactBuffer.count; t++) {
+e = (n = this.m_contactBuffer.data[t]).indexA;
+var n, r = n.indexB;
+i = n.weight;
+this.m_weightBuffer[e] += i;
+this.m_weightBuffer[r] += i;
+}
+};
+n.prototype.SolvePressure = function(e) {
+var i = n.SolvePressure_s_f;
+if (!this.m_flagsBuffer.data) throw new Error();
+if (!this.m_positionBuffer.data) throw new Error();
+if (!this.m_velocityBuffer.data) throw new Error();
+for (var r = this.m_positionBuffer.data, s = this.m_velocityBuffer.data, o = this.GetCriticalPressure(e), a = this.m_def.pressureStrength * o, c = .25 * o, l = 0; l < this.m_count; l++) {
+var h = this.m_weightBuffer[l], u = a * x(0, h - 1);
+this.m_accumulationBuffer[l] = g(u, c);
+}
+if (this.m_allParticleFlags & n.k_noPressureFlags) for (l = 0; l < this.m_count; l++) this.m_flagsBuffer.data[l] & n.k_noPressureFlags && (this.m_accumulationBuffer[l] = 0);
+if (this.m_allParticleFlags & t.b2ParticleFlag.b2_staticPressureParticle) for (l = 0; l < this.m_count; l++) this.m_flagsBuffer.data[l] & t.b2ParticleFlag.b2_staticPressureParticle && (this.m_accumulationBuffer[l] += this.m_staticPressureBuffer[l]);
+for (var _ = e.dt / (this.m_def.density * this.m_particleDiameter), f = this.GetParticleInvMass(), d = 0; d < this.m_bodyContactBuffer.count; d++) {
+var m = (A = this.m_bodyContactBuffer.data[d]).index, p = A.body, v = (h = A.weight,
+A.mass), y = A.normal, C = r[m], b = (u = this.m_accumulationBuffer[m] + a * h,
+P.MulSV(_ * h * v * u, y, i));
+s[m].SelfMulSub(f, b);
+p.ApplyLinearImpulse(b, C, !0);
+}
+for (d = 0; d < this.m_contactBuffer.count; d++) {
+var A;
+m = (A = this.m_contactBuffer.data[d]).indexA, p = A.indexB, h = A.weight, y = A.normal,
+u = this.m_accumulationBuffer[m] + this.m_accumulationBuffer[p], b = P.MulSV(_ * h * u, y, i);
+s[m].SelfSub(b);
+s[p].SelfAdd(b);
+}
+};
+n.prototype.SolveDamping = function(t) {
+var e = n.SolveDamping_s_v, i = n.SolveDamping_s_f;
+if (!this.m_positionBuffer.data) throw new Error();
+if (!this.m_velocityBuffer.data) throw new Error();
+for (var r = this.m_positionBuffer.data, s = this.m_velocityBuffer.data, o = this.m_def.dampingStrength, a = 1 / this.GetCriticalVelocity(t), c = this.GetParticleInvMass(), l = 0; l < this.m_bodyContactBuffer.count; l++) {
+var h = (C = this.m_bodyContactBuffer.data[l]).index, u = C.body, _ = C.weight, f = C.mass, d = C.normal, m = r[h], p = P.SubVV(u.GetLinearVelocityFromWorldPoint(m, P.s_t0), s[h], e);
+if ((b = P.DotVV(p, d)) < 0) {
+var v = x(o * _, g(-a * b, .5)), y = P.MulSV(v * f * b, d, i);
+s[h].SelfMulAdd(c, y);
+u.ApplyLinearImpulse(y.SelfNeg(), m, !0);
+}
+}
+for (l = 0; l < this.m_contactBuffer.count; l++) {
+var C, b;
+h = (C = this.m_contactBuffer.data[l]).indexA, u = C.indexB, _ = C.weight, d = C.normal,
+p = P.SubVV(s[u], s[h], e);
+if ((b = P.DotVV(p, d)) < 0) {
+v = x(o * _, g(-a * b, .5)), y = P.MulSV(v * b, d, i);
+s[h].SelfAdd(y);
+s[u].SelfSub(y);
+}
+}
+};
+n.prototype.SolveRigidDamping = function() {
+var t = n.SolveRigidDamping_s_t0, e = n.SolveRigidDamping_s_t1, i = n.SolveRigidDamping_s_p, r = n.SolveRigidDamping_s_v, s = [ 0 ], o = [ 0 ], a = [ 0 ], c = [ 0 ], l = [ 0 ], h = [ 0 ];
+if (!this.m_positionBuffer.data) throw new Error();
+for (var u = this.m_positionBuffer.data, _ = this.m_def.dampingStrength, f = 0; f < this.m_bodyContactBuffer.count; f++) {
+var d = (b = this.m_bodyContactBuffer.data[f]).index;
+if ((A = this.m_groupBuffer[d]) && this.IsRigidGroup(A)) {
+var m = b.body, p = b.normal, v = b.weight, y = u[d], x = P.SubVV(m.GetLinearVelocityFromWorldPoint(y, t), A.GetLinearVelocityFromWorldPoint(y, e), r);
+if ((E = P.DotVV(x, p)) < 0) {
+this.InitDampingParameterWithRigidGroupOrParticle(s, o, a, !0, A, d, y, p);
+this.InitDampingParameter(c, l, h, m.GetMass(), m.GetInertia() - m.GetMass() * m.GetLocalCenter().LengthSquared(), m.GetWorldCenter(), y, p);
+var C = _ * g(v, 1) * this.ComputeDampingImpulse(s[0], o[0], a[0], c[0], l[0], h[0], E);
+this.ApplyDamping(s[0], o[0], a[0], !0, A, d, C, p);
+m.ApplyLinearImpulse(P.MulSV(-C, p, P.s_t0), y, !0);
+}
+}
+}
+for (f = 0; f < this.m_contactBuffer.count; f++) {
+d = (b = this.m_contactBuffer.data[f]).indexA, m = b.indexB, p = b.normal, v = b.weight;
+var b, A = this.m_groupBuffer[d], S = this.m_groupBuffer[m], w = this.IsRigidGroup(A), T = this.IsRigidGroup(S);
+if (A !== S && (w || T)) {
+var E;
+y = P.MidVV(u[d], u[m], i), x = P.SubVV(this.GetLinearVelocity(S, m, y, t), this.GetLinearVelocity(A, d, y, e), r);
+if ((E = P.DotVV(x, p)) < 0) {
+this.InitDampingParameterWithRigidGroupOrParticle(s, o, a, w, A, d, y, p);
+this.InitDampingParameterWithRigidGroupOrParticle(c, l, h, T, S, m, y, p);
+C = _ * v * this.ComputeDampingImpulse(s[0], o[0], a[0], c[0], l[0], h[0], E);
+this.ApplyDamping(s[0], o[0], a[0], w, A, d, C, p);
+this.ApplyDamping(c[0], l[0], h[0], T, S, m, -C, p);
+}
+}
+}
+};
+n.prototype.SolveExtraDamping = function() {
+var t = n.SolveExtraDamping_s_v, e = n.SolveExtraDamping_s_f;
+if (!this.m_flagsBuffer.data) throw new Error();
+if (!this.m_positionBuffer.data) throw new Error();
+if (!this.m_velocityBuffer.data) throw new Error();
+for (var i = this.m_velocityBuffer.data, r = this.m_positionBuffer.data, s = this.GetParticleInvMass(), o = 0; o < this.m_bodyContactBuffer.count; o++) {
+var a = this.m_bodyContactBuffer.data[o], c = a.index;
+if (this.m_flagsBuffer.data[c] & n.k_extraDampingFlags) {
+var l = a.body, h = a.mass, u = a.normal, _ = r[c], f = P.SubVV(l.GetLinearVelocityFromWorldPoint(_, P.s_t0), i[c], t), d = P.DotVV(f, u);
+if (d < 0) {
+var m = P.MulSV(.5 * h * d, u, e);
+i[c].SelfMulAdd(s, m);
+l.ApplyLinearImpulse(m.SelfNeg(), _, !0);
+}
+}
+}
+};
+n.prototype.SolveWall = function() {
+if (!this.m_flagsBuffer.data) throw new Error();
+if (!this.m_velocityBuffer.data) throw new Error();
+for (var e = this.m_velocityBuffer.data, i = 0; i < this.m_count; i++) this.m_flagsBuffer.data[i] & t.b2ParticleFlag.b2_wallParticle && e[i].SetZero();
+};
+n.prototype.SolveRigid = function(e) {
+var i = n.SolveRigid_s_position, r = n.SolveRigid_s_rotation, s = n.SolveRigid_s_transform, o = n.SolveRigid_s_velocityTransform;
+if (!this.m_positionBuffer.data) throw new Error();
+if (!this.m_velocityBuffer.data) throw new Error();
+for (var a = this.m_positionBuffer.data, c = this.m_velocityBuffer.data, l = this.m_groupList; l; l = l.GetNext()) if (l.m_groupFlags & t.b2ParticleGroupFlag.b2_rigidParticleGroup) {
+l.UpdateStatistics();
+var h = r;
+h.SetAngle(e.dt * l.m_angularVelocity);
+var u = P.AddVV(l.m_center, P.SubVV(P.MulSV(e.dt, l.m_linearVelocity, P.s_t0), V.MulRV(h, l.m_center, P.s_t1), P.s_t0), i), _ = s;
+_.SetPositionRotation(u, h);
+N.MulXX(_, l.m_transform, l.m_transform);
+var f = o;
+f.p.x = e.inv_dt * _.p.x;
+f.p.y = e.inv_dt * _.p.y;
+f.q.s = e.inv_dt * _.q.s;
+f.q.c = e.inv_dt * (_.q.c - 1);
+for (var d = l.m_firstIndex; d < l.m_lastIndex; d++) N.MulXV(f, a[d], c[d]);
+}
+};
+n.prototype.SolveElastic = function(e) {
+var i = n.SolveElastic_s_pa, r = n.SolveElastic_s_pb, s = n.SolveElastic_s_pc, o = n.SolveElastic_s_r, a = n.SolveElastic_s_t0;
+if (!this.m_positionBuffer.data) throw new Error();
+if (!this.m_velocityBuffer.data) throw new Error();
+for (var c = this.m_positionBuffer.data, l = this.m_velocityBuffer.data, h = e.inv_dt * this.m_def.elasticStrength, u = 0; u < this.m_triadBuffer.count; u++) {
+var _ = this.m_triadBuffer.data[u];
+if (_.flags & t.b2ParticleFlag.b2_elasticParticle) {
+var f = _.indexA, d = _.indexB, m = _.indexC, p = _.pa, v = _.pb, y = _.pc, g = i.Copy(c[f]), x = r.Copy(c[d]), C = s.Copy(c[m]), b = l[f], A = l[d], w = l[m];
+g.SelfMulAdd(e.dt, b);
+x.SelfMulAdd(e.dt, A);
+C.SelfMulAdd(e.dt, w);
+var T = (g.x + x.x + C.x) / 3, E = (g.y + x.y + C.y) / 3;
+g.x -= T;
+g.y -= E;
+x.x -= T;
+x.y -= E;
+C.x -= T;
+C.y -= E;
+var M = o;
+M.s = P.CrossVV(p, g) + P.CrossVV(v, x) + P.CrossVV(y, C);
+M.c = P.DotVV(p, g) + P.DotVV(v, x) + P.DotVV(y, C);
+var B = S(M.s * M.s + M.c * M.c);
+isFinite(B) || (B = 198177537e11);
+M.s *= B;
+M.c *= B;
+var D = h * _.strength;
+V.MulRV(M, p, a);
+P.SubVV(a, g, a);
+P.MulSV(D, a, a);
+b.SelfAdd(a);
+V.MulRV(M, v, a);
+P.SubVV(a, x, a);
+P.MulSV(D, a, a);
+A.SelfAdd(a);
+V.MulRV(M, y, a);
+P.SubVV(a, C, a);
+P.MulSV(D, a, a);
+w.SelfAdd(a);
+}
+}
+};
+n.prototype.SolveSpring = function(e) {
+var i = n.SolveSpring_s_pa, r = n.SolveSpring_s_pb, s = n.SolveSpring_s_d, o = n.SolveSpring_s_f;
+if (!this.m_positionBuffer.data) throw new Error();
+if (!this.m_velocityBuffer.data) throw new Error();
+for (var a = this.m_positionBuffer.data, c = this.m_velocityBuffer.data, l = e.inv_dt * this.m_def.springStrength, h = 0; h < this.m_pairBuffer.count; h++) {
+var u = this.m_pairBuffer.data[h];
+if (u.flags & t.b2ParticleFlag.b2_springParticle) {
+var _ = u.indexA, f = u.indexB, d = i.Copy(a[_]), m = r.Copy(a[f]), p = c[_], v = c[f];
+d.SelfMulAdd(e.dt, p);
+m.SelfMulAdd(e.dt, v);
+var y = P.SubVV(m, d, s), g = u.distance, x = y.Length(), C = l * u.strength, b = P.MulSV(C * (g - x) / x, y, o);
+p.SelfSub(b);
+v.SelfAdd(b);
+}
+}
+};
+n.prototype.SolveTensile = function(e) {
+var i = n.SolveTensile_s_weightedNormal, r = n.SolveTensile_s_s, s = n.SolveTensile_s_f;
+if (!this.m_velocityBuffer.data) throw new Error();
+for (var o = this.m_velocityBuffer.data, a = 0; a < this.m_count; a++) {
+this.m_accumulation2Buffer[a] = new P();
+this.m_accumulation2Buffer[a].SetZero();
+}
+for (var c = 0; c < this.m_contactBuffer.count; c++) {
+if ((y = this.m_contactBuffer.data[c]).flags & t.b2ParticleFlag.b2_tensileParticle) {
+var l = y.indexA, h = y.indexB, u = y.weight, _ = y.normal, f = P.MulSV((1 - u) * u, _, i);
+this.m_accumulation2Buffer[l].SelfSub(f);
+this.m_accumulation2Buffer[h].SelfAdd(f);
+}
+}
+var d = this.GetCriticalVelocity(e), m = this.m_def.surfaceTensionPressureStrength * d, p = this.m_def.surfaceTensionNormalStrength * d, v = .5 * d;
+for (c = 0; c < this.m_contactBuffer.count; c++) {
+var y;
+if ((y = this.m_contactBuffer.data[c]).flags & t.b2ParticleFlag.b2_tensileParticle) {
+l = y.indexA, h = y.indexB, u = y.weight, _ = y.normal;
+var x = this.m_weightBuffer[l] + this.m_weightBuffer[h], C = P.SubVV(this.m_accumulation2Buffer[h], this.m_accumulation2Buffer[l], r), b = g(m * (x - 2) + p * P.DotVV(C, _), v) * u, A = P.MulSV(b, _, s);
+o[l].SelfSub(A);
+o[h].SelfAdd(A);
+}
+}
+};
+n.prototype.SolveViscous = function() {
+var e = n.SolveViscous_s_v, i = n.SolveViscous_s_f;
+if (!this.m_flagsBuffer.data) throw new Error();
+if (!this.m_positionBuffer.data) throw new Error();
+if (!this.m_velocityBuffer.data) throw new Error();
+for (var r = this.m_positionBuffer.data, s = this.m_velocityBuffer.data, o = this.m_def.viscousStrength, a = this.GetParticleInvMass(), c = 0; c < this.m_bodyContactBuffer.count; c++) {
+var l = (p = this.m_bodyContactBuffer.data[c]).index;
+if (this.m_flagsBuffer.data[l] & t.b2ParticleFlag.b2_viscousParticle) {
+var h = p.body, u = p.weight, _ = p.mass, f = r[l], d = P.SubVV(h.GetLinearVelocityFromWorldPoint(f, P.s_t0), s[l], e), m = P.MulSV(o * _ * u, d, i);
+s[l].SelfMulAdd(a, m);
+h.ApplyLinearImpulse(m.SelfNeg(), f, !0);
+}
+}
+for (c = 0; c < this.m_contactBuffer.count; c++) {
+var p;
+if ((p = this.m_contactBuffer.data[c]).flags & t.b2ParticleFlag.b2_viscousParticle) {
+l = p.indexA, h = p.indexB, u = p.weight, d = P.SubVV(s[h], s[l], e), m = P.MulSV(o * u, d, i);
+s[l].SelfAdd(m);
+s[h].SelfSub(m);
+}
+}
+};
+n.prototype.SolveRepulsive = function(e) {
+var i = n.SolveRepulsive_s_f;
+if (!this.m_velocityBuffer.data) throw new Error();
+for (var r = this.m_velocityBuffer.data, s = this.m_def.repulsiveStrength * this.GetCriticalVelocity(e), o = 0; o < this.m_contactBuffer.count; o++) {
+var a = this.m_contactBuffer.data[o];
+if (a.flags & t.b2ParticleFlag.b2_repulsiveParticle) {
+var c = a.indexA, l = a.indexB;
+if (this.m_groupBuffer[c] !== this.m_groupBuffer[l]) {
+var h = a.weight, u = a.normal, _ = P.MulSV(s * h, u, i);
+r[c].SelfSub(_);
+r[l].SelfAdd(_);
+}
+}
+}
+};
+n.prototype.SolvePowder = function(e) {
+var i = n.SolvePowder_s_f;
+if (!this.m_flagsBuffer.data) throw new Error();
+if (!this.m_positionBuffer.data) throw new Error();
+if (!this.m_velocityBuffer.data) throw new Error();
+for (var r = this.m_positionBuffer.data, s = this.m_velocityBuffer.data, o = this.m_def.powderStrength * this.GetCriticalVelocity(e), a = this.GetParticleInvMass(), c = 0; c < this.m_bodyContactBuffer.count; c++) {
+var l = (m = this.m_bodyContactBuffer.data[c]).index;
+if (this.m_flagsBuffer.data[l] & t.b2ParticleFlag.b2_powderParticle) {
+if ((p = m.weight) > .25) {
+var h = m.body, u = m.mass, _ = r[l], f = m.normal, d = P.MulSV(o * u * (p - .25), f, i);
+s[l].SelfMulSub(a, d);
+h.ApplyLinearImpulse(d, _, !0);
+}
+}
+}
+for (c = 0; c < this.m_contactBuffer.count; c++) {
+var m;
+if ((m = this.m_contactBuffer.data[c]).flags & t.b2ParticleFlag.b2_powderParticle) {
+var p;
+if ((p = m.weight) > .25) {
+l = m.indexA, h = m.indexB, f = m.normal, d = P.MulSV(o * (p - .25), f, i);
+s[l].SelfSub(d);
+s[h].SelfAdd(d);
+}
+}
+}
+};
+n.prototype.SolveSolid = function(t) {
+var e = n.SolveSolid_s_f;
+if (!this.m_velocityBuffer.data) throw new Error();
+var i = this.m_velocityBuffer.data;
+this.m_depthBuffer = this.RequestBuffer(this.m_depthBuffer);
+for (var r = t.inv_dt * this.m_def.ejectionStrength, s = 0; s < this.m_contactBuffer.count; s++) {
+var o = this.m_contactBuffer.data[s], a = o.indexA, c = o.indexB;
+if (this.m_groupBuffer[a] !== this.m_groupBuffer[c]) {
+var l = o.weight, h = o.normal, u = this.m_depthBuffer[a] + this.m_depthBuffer[c], _ = P.MulSV(r * u * l, h, e);
+i[a].SelfSub(_);
+i[c].SelfAdd(_);
+}
+}
+};
+n.prototype.SolveForce = function(t) {
+if (!this.m_velocityBuffer.data) throw new Error();
+for (var e = this.m_velocityBuffer.data, i = t.dt * this.GetParticleInvMass(), n = 0; n < this.m_count; n++) e[n].SelfMulAdd(i, this.m_forceBuffer[n]);
+this.m_hasForce = !1;
+};
+n.prototype.SolveColorMixing = function() {
+if (!this.m_flagsBuffer.data) throw new Error();
+if (!this.m_colorBuffer.data) throw new Error();
+var e = .5 * this.m_def.colorMixingStrength;
+if (e) for (var i = 0; i < this.m_contactBuffer.count; i++) {
+var n = this.m_contactBuffer.data[i], r = n.indexA, s = n.indexB;
+if (this.m_flagsBuffer.data[r] & this.m_flagsBuffer.data[s] & t.b2ParticleFlag.b2_colorMixingParticle) {
+var o = this.m_colorBuffer.data[r], a = this.m_colorBuffer.data[s];
+z.MixColors(o, a, e);
+}
+}
+};
+n.prototype.SolveZombie = function() {
+if (!this.m_flagsBuffer.data) throw new Error();
+if (!this.m_positionBuffer.data) throw new Error();
+if (!this.m_velocityBuffer.data) throw new Error();
+for (var e = 0, i = [], n = 0; n < this.m_count; n++) i[n] = u;
+var r = 0;
+for (n = 0; n < this.m_count; n++) {
+var s = this.m_flagsBuffer.data[n];
+if (s & t.b2ParticleFlag.b2_zombieParticle) {
+var o = this.m_world.m_destructionListener;
+s & t.b2ParticleFlag.b2_destructionListenerParticle && o && o.SayGoodbyeParticle(this, n);
+if (this.m_handleIndexBuffer.data) {
+if (a = this.m_handleIndexBuffer.data[n]) {
+a.SetIndex(u);
+this.m_handleIndexBuffer.data[n] = null;
+}
+}
+i[n] = u;
+} else {
+i[n] = e;
+if (n !== e) {
+if (this.m_handleIndexBuffer.data) {
+var a;
+(a = this.m_handleIndexBuffer.data[n]) && a.SetIndex(e);
+this.m_handleIndexBuffer.data[e] = a;
+}
+this.m_flagsBuffer.data[e] = this.m_flagsBuffer.data[n];
+this.m_lastBodyContactStepBuffer.data && (this.m_lastBodyContactStepBuffer.data[e] = this.m_lastBodyContactStepBuffer.data[n]);
+this.m_bodyContactCountBuffer.data && (this.m_bodyContactCountBuffer.data[e] = this.m_bodyContactCountBuffer.data[n]);
+this.m_consecutiveContactStepsBuffer.data && (this.m_consecutiveContactStepsBuffer.data[e] = this.m_consecutiveContactStepsBuffer.data[n]);
+this.m_positionBuffer.data[e].Copy(this.m_positionBuffer.data[n]);
+this.m_velocityBuffer.data[e].Copy(this.m_velocityBuffer.data[n]);
+this.m_groupBuffer[e] = this.m_groupBuffer[n];
+this.m_hasForce && this.m_forceBuffer[e].Copy(this.m_forceBuffer[n]);
+this.m_staticPressureBuffer && (this.m_staticPressureBuffer[e] = this.m_staticPressureBuffer[n]);
+this.m_depthBuffer && (this.m_depthBuffer[e] = this.m_depthBuffer[n]);
+this.m_colorBuffer.data && this.m_colorBuffer.data[e].Copy(this.m_colorBuffer.data[n]);
+this.m_userDataBuffer.data && (this.m_userDataBuffer.data[e] = this.m_userDataBuffer.data[n]);
+this.m_expirationTimeBuffer.data && (this.m_expirationTimeBuffer.data[e] = this.m_expirationTimeBuffer.data[n]);
+}
+e++;
+r |= s;
+}
+}
+for (var c = function(t) {
+return t.index < 0;
+}, l = function(t) {
+return t.indexA < 0 || t.indexB < 0;
+}, h = function(t) {
+return t.index < 0;
+}, _ = function(t) {
+return t.indexA < 0 || t.indexB < 0;
+}, f = function(t) {
+return t.indexA < 0 || t.indexB < 0 || t.indexC < 0;
+}, d = 0; d < this.m_proxyBuffer.count; d++) {
+var m = this.m_proxyBuffer.data[d];
+m.index = i[m.index];
+}
+this.m_proxyBuffer.RemoveIf(c);
+for (d = 0; d < this.m_contactBuffer.count; d++) {
+(p = this.m_contactBuffer.data[d]).indexA = i[p.indexA];
+p.indexB = i[p.indexB];
+}
+this.m_contactBuffer.RemoveIf(l);
+for (d = 0; d < this.m_bodyContactBuffer.count; d++) {
+var p;
+(p = this.m_bodyContactBuffer.data[d]).index = i[p.index];
+}
+this.m_bodyContactBuffer.RemoveIf(h);
+for (d = 0; d < this.m_pairBuffer.count; d++) {
+var v = this.m_pairBuffer.data[d];
+v.indexA = i[v.indexA];
+v.indexB = i[v.indexB];
+}
+this.m_pairBuffer.RemoveIf(_);
+for (d = 0; d < this.m_triadBuffer.count; d++) {
+var y = this.m_triadBuffer.data[d];
+y.indexA = i[y.indexA];
+y.indexB = i[y.indexB];
+y.indexC = i[y.indexC];
+}
+this.m_triadBuffer.RemoveIf(f);
+if (this.m_indexByExpirationTimeBuffer.data) for (var C = 0, b = 0; b < this.m_count; b++) {
+var A = i[this.m_indexByExpirationTimeBuffer.data[b]];
+A !== u && (this.m_indexByExpirationTimeBuffer.data[C++] = A);
+}
+for (var S = this.m_groupList; S; S = S.GetNext()) {
+var w = e, T = 0, E = !1;
+for (n = S.m_firstIndex; n < S.m_lastIndex; n++) {
+var M = i[n];
+if (M >= 0) {
+w = g(w, M);
+T = x(T, M + 1);
+} else E = !0;
+}
+if (w < T) {
+S.m_firstIndex = w;
+S.m_lastIndex = T;
+E && S.m_groupFlags & t.b2ParticleGroupFlag.b2_solidParticleGroup && this.SetGroupFlags(S, S.m_groupFlags | t.b2ParticleGroupFlag.b2_particleGroupNeedsUpdateDepth);
+} else {
+S.m_firstIndex = 0;
+S.m_lastIndex = 0;
+S.m_groupFlags & t.b2ParticleGroupFlag.b2_particleGroupCanBeEmpty || this.SetGroupFlags(S, S.m_groupFlags | t.b2ParticleGroupFlag.b2_particleGroupWillBeDestroyed);
+}
+}
+this.m_count = e;
+this.m_allParticleFlags = r;
+this.m_needsUpdateAllParticleFlags = !1;
+for (S = this.m_groupList; S; ) {
+var B = S.GetNext();
+S.m_groupFlags & t.b2ParticleGroupFlag.b2_particleGroupWillBeDestroyed && this.DestroyParticleGroup(S);
+S = B;
+}
+};
+n.prototype.SolveLifetimes = function(t) {
+if (!this.m_expirationTimeBuffer.data) throw new Error();
+if (!this.m_indexByExpirationTimeBuffer.data) throw new Error();
+this.m_timeElapsed = this.LifetimeToExpirationTime(t.dt);
+var e = this.GetQuantizedTimeElapsed(), i = this.m_expirationTimeBuffer.data, n = this.m_indexByExpirationTimeBuffer.data, r = this.GetParticleCount();
+if (this.m_expirationTimeBufferRequiresSorting) {
+Tn(n, 0, r, (function(t, e) {
+var n = i[t], r = i[e], s = n <= 0;
+return s === r <= 0 ? n > r : s;
+}));
+this.m_expirationTimeBufferRequiresSorting = !1;
+}
+for (var s = r - 1; s >= 0; --s) {
+var o = n[s], a = i[o];
+if (e < a || a <= 0) break;
+this.DestroyParticle(o);
+}
+};
+n.prototype.RotateBuffer = function(t, e, i) {
+if (t !== e && e !== i) {
+if (!this.m_flagsBuffer.data) throw new Error();
+if (!this.m_positionBuffer.data) throw new Error();
+if (!this.m_velocityBuffer.data) throw new Error();
+In(this.m_flagsBuffer.data, t, e, i);
+this.m_lastBodyContactStepBuffer.data && In(this.m_lastBodyContactStepBuffer.data, t, e, i);
+this.m_bodyContactCountBuffer.data && In(this.m_bodyContactCountBuffer.data, t, e, i);
+this.m_consecutiveContactStepsBuffer.data && In(this.m_consecutiveContactStepsBuffer.data, t, e, i);
+In(this.m_positionBuffer.data, t, e, i);
+In(this.m_velocityBuffer.data, t, e, i);
+In(this.m_groupBuffer, t, e, i);
+this.m_hasForce && In(this.m_forceBuffer, t, e, i);
+this.m_staticPressureBuffer && In(this.m_staticPressureBuffer, t, e, i);
+this.m_depthBuffer && In(this.m_depthBuffer, t, e, i);
+this.m_colorBuffer.data && In(this.m_colorBuffer.data, t, e, i);
+this.m_userDataBuffer.data && In(this.m_userDataBuffer.data, t, e, i);
+if (this.m_handleIndexBuffer.data) {
+In(this.m_handleIndexBuffer.data, t, e, i);
+for (var n = t; n < i; ++n) {
+var r = this.m_handleIndexBuffer.data[n];
+r && r.SetIndex(f(r.GetIndex()));
+}
+}
+if (this.m_expirationTimeBuffer.data) {
+In(this.m_expirationTimeBuffer.data, t, e, i);
+var s = this.GetParticleCount();
+if (!this.m_indexByExpirationTimeBuffer.data) throw new Error();
+var o = this.m_indexByExpirationTimeBuffer.data;
+for (n = 0; n < s; ++n) o[n] = f(o[n]);
+}
+for (var a = 0; a < this.m_proxyBuffer.count; a++) {
+var c = this.m_proxyBuffer.data[a];
+c.index = f(c.index);
+}
+for (a = 0; a < this.m_contactBuffer.count; a++) {
+(l = this.m_contactBuffer.data[a]).indexA = f(l.indexA);
+l.indexB = f(l.indexB);
+}
+for (a = 0; a < this.m_bodyContactBuffer.count; a++) {
+var l;
+(l = this.m_bodyContactBuffer.data[a]).index = f(l.index);
+}
+for (a = 0; a < this.m_pairBuffer.count; a++) {
+var h = this.m_pairBuffer.data[a];
+h.indexA = f(h.indexA);
+h.indexB = f(h.indexB);
+}
+for (a = 0; a < this.m_triadBuffer.count; a++) {
+var u = this.m_triadBuffer.data[a];
+u.indexA = f(u.indexA);
+u.indexB = f(u.indexB);
+u.indexC = f(u.indexC);
+}
+for (var _ = this.m_groupList; _; _ = _.GetNext()) {
+_.m_firstIndex = f(_.m_firstIndex);
+_.m_lastIndex = f(_.m_lastIndex - 1) + 1;
+}
+}
+function f(n) {
+return n < t ? n : n < e ? n + i - e : n < i ? n + t - e : n;
+}
+};
+n.prototype.GetCriticalVelocity = function(t) {
+return this.m_particleDiameter * t.inv_dt;
+};
+n.prototype.GetCriticalVelocitySquared = function(t) {
+var e = this.GetCriticalVelocity(t);
+return e * e;
+};
+n.prototype.GetCriticalPressure = function(t) {
+return this.m_def.density * this.GetCriticalVelocitySquared(t);
+};
+n.prototype.GetParticleStride = function() {
+return .75 * this.m_particleDiameter;
+};
+n.prototype.GetParticleMass = function() {
+var t = this.GetParticleStride();
+return this.m_def.density * t * t;
+};
+n.prototype.GetParticleInvMass = function() {
+var t = this.m_inverseDiameter * (1 / .75);
+return this.m_inverseDensity * t * t;
+};
+n.prototype.GetFixtureContactFilter = function() {
+return this.m_allParticleFlags & t.b2ParticleFlag.b2_fixtureContactFilterParticle ? this.m_world.m_contactManager.m_contactFilter : null;
+};
+n.prototype.GetParticleContactFilter = function() {
+return this.m_allParticleFlags & t.b2ParticleFlag.b2_particleContactFilterParticle ? this.m_world.m_contactManager.m_contactFilter : null;
+};
+n.prototype.GetFixtureContactListener = function() {
+return this.m_allParticleFlags & t.b2ParticleFlag.b2_fixtureContactListenerParticle ? this.m_world.m_contactManager.m_contactListener : null;
+};
+n.prototype.GetParticleContactListener = function() {
+return this.m_allParticleFlags & t.b2ParticleFlag.b2_particleContactListenerParticle ? this.m_world.m_contactManager.m_contactListener : null;
+};
+n.prototype.SetUserOverridableBuffer = function(t, e, i) {
+t.data = e;
+t.userSuppliedCapacity = i;
+};
+n.prototype.SetGroupFlags = function(e, i) {
+var n = e.m_groupFlags;
+(n ^ i) & t.b2ParticleGroupFlag.b2_solidParticleGroup && (i |= t.b2ParticleGroupFlag.b2_particleGroupNeedsUpdateDepth);
+n & ~i && (this.m_needsUpdateAllGroupFlags = !0);
+if (~this.m_allGroupFlags & i) {
+i & t.b2ParticleGroupFlag.b2_solidParticleGroup && (this.m_depthBuffer = this.RequestBuffer(this.m_depthBuffer));
+this.m_allGroupFlags |= i;
+}
+e.m_groupFlags = i;
+};
+n.BodyContactCompare = function(t, e) {
+return t.index === e.index ? t.weight > e.weight : t.index < e.index;
+};
+n.prototype.RemoveSpuriousBodyContacts = function() {
+Tn(this.m_bodyContactBuffer.data, 0, this.m_bodyContactBuffer.count, n.BodyContactCompare);
+var t = n.RemoveSpuriousBodyContacts_s_n, e = n.RemoveSpuriousBodyContacts_s_pos, i = n.RemoveSpuriousBodyContacts_s_normal, r = this, s = -1, o = 0;
+this.m_bodyContactBuffer.count = Mn(this.m_bodyContactBuffer.data, (function(n) {
+if (n.index !== s) {
+o = 0;
+s = n.index;
+}
+if (o++ > 3) return !0;
+var a = t.Copy(n.normal);
+a.SelfMul(r.m_particleDiameter * (1 - n.weight));
+if (!r.m_positionBuffer.data) throw new Error();
+var l = P.AddVV(r.m_positionBuffer.data[n.index], a, e);
+if (!n.fixture.TestPoint(l)) {
+for (var h = n.fixture.GetShape().GetChildCount(), u = 0; u < h; u++) {
+var _ = i;
+if (n.fixture.ComputeDistance(l, _, u) < c) return !1;
+}
+return !0;
+}
+return !1;
+}), this.m_bodyContactBuffer.count);
+};
+n.prototype.DetectStuckParticle = function(t) {
+if (!(this.m_stuckThreshold <= 0)) {
+if (!this.m_bodyContactCountBuffer.data) throw new Error();
+if (!this.m_consecutiveContactStepsBuffer.data) throw new Error();
+if (!this.m_lastBodyContactStepBuffer.data) throw new Error();
+++this.m_bodyContactCountBuffer.data[t];
+if (2 === this.m_bodyContactCountBuffer.data[t]) {
+++this.m_consecutiveContactStepsBuffer.data[t];
+this.m_consecutiveContactStepsBuffer.data[t] > this.m_stuckThreshold && (this.m_stuckParticleBuffer.data[this.m_stuckParticleBuffer.Append()] = t);
+}
+this.m_lastBodyContactStepBuffer.data[t] = this.m_timestamp;
+}
+};
+n.prototype.ValidateParticleIndex = function(t) {
+return t >= 0 && t < this.GetParticleCount() && t !== u;
+};
+n.prototype.GetQuantizedTimeElapsed = function() {
+return Math.floor(this.m_timeElapsed / 4294967296);
+};
+n.prototype.LifetimeToExpirationTime = function(t) {
+return this.m_timeElapsed + Math.floor(t / this.m_def.lifetimeGranularity * 4294967296);
+};
+n.prototype.ForceCanBeApplied = function(e) {
+return !(e & t.b2ParticleFlag.b2_wallParticle);
+};
+n.prototype.PrepareForceBuffer = function() {
+if (!this.m_hasForce) {
+for (var t = 0; t < this.m_count; t++) this.m_forceBuffer[t].SetZero();
+this.m_hasForce = !0;
+}
+};
+n.prototype.IsRigidGroup = function(e) {
+return null !== e && 0 != (e.m_groupFlags & t.b2ParticleGroupFlag.b2_rigidParticleGroup);
+};
+n.prototype.GetLinearVelocity = function(t, e, i, n) {
+if (t && this.IsRigidGroup(t)) return t.GetLinearVelocityFromWorldPoint(i, n);
+if (!this.m_velocityBuffer.data) throw new Error();
+return n.Copy(this.m_velocityBuffer.data[e]);
+};
+n.prototype.InitDampingParameter = function(t, e, i, n, r, s, o, a) {
+t[0] = n > 0 ? 1 / n : 0;
+e[0] = r > 0 ? 1 / r : 0;
+i[0] = P.CrossVV(P.SubVV(o, s, P.s_t0), a);
+};
+n.prototype.InitDampingParameterWithRigidGroupOrParticle = function(e, i, n, r, s, o, a, c) {
+if (s && r) this.InitDampingParameter(e, i, n, s.GetMass(), s.GetInertia(), s.GetCenter(), a, c); else {
+if (!this.m_flagsBuffer.data) throw new Error();
+var l = this.m_flagsBuffer.data[o];
+this.InitDampingParameter(e, i, n, l & t.b2ParticleFlag.b2_wallParticle ? 0 : this.GetParticleMass(), 0, a, a, c);
+}
+};
+n.prototype.ComputeDampingImpulse = function(t, e, i, n, r, s, o) {
+var a = t + e * i * i + n + r * s * s;
+return a > 0 ? o / a : 0;
+};
+n.prototype.ApplyDamping = function(t, e, i, n, r, s, o, a) {
+if (r && n) {
+r.m_linearVelocity.SelfMulAdd(o * t, a);
+r.m_angularVelocity += o * i * e;
+} else {
+if (!this.m_velocityBuffer.data) throw new Error();
+this.m_velocityBuffer.data[s].SelfMulAdd(o * t, a);
+}
+};
+n.xTruncBits = 12;
+n.yTruncBits = 12;
+n.tagBits = 32;
+n.yOffset = 1 << n.yTruncBits - 1;
+n.yShift = n.tagBits - n.yTruncBits;
+n.xShift = n.tagBits - n.yTruncBits - n.xTruncBits;
+n.xScale = 1 << n.xShift;
+n.xOffset = n.xScale * (1 << n.xTruncBits - 1);
+n.yMask = (1 << n.yTruncBits) - 1 << n.yShift;
+n.xMask = ~n.yMask;
+n.DestroyParticlesInShape_s_aabb = new Tt();
+n.CreateParticleGroup_s_transform = new N();
+n.ComputeCollisionEnergy_s_v = new P();
+n.QueryShapeAABB_s_aabb = new Tt();
+n.QueryPointAABB_s_aabb = new Tt();
+n.RayCast_s_aabb = new Tt();
+n.RayCast_s_p = new P();
+n.RayCast_s_v = new P();
+n.RayCast_s_n = new P();
+n.RayCast_s_point = new P();
+n.k_pairFlags = t.b2ParticleFlag.b2_springParticle;
+n.k_triadFlags = t.b2ParticleFlag.b2_elasticParticle;
+n.k_noPressureFlags = t.b2ParticleFlag.b2_powderParticle | t.b2ParticleFlag.b2_tensileParticle;
+n.k_extraDampingFlags = t.b2ParticleFlag.b2_staticPressureParticle;
+n.k_barrierWallFlags = t.b2ParticleFlag.b2_barrierParticle | t.b2ParticleFlag.b2_wallParticle;
+n.CreateParticlesStrokeShapeForGroup_s_edge = new ii();
+n.CreateParticlesStrokeShapeForGroup_s_d = new P();
+n.CreateParticlesStrokeShapeForGroup_s_p = new P();
+n.CreateParticlesFillShapeForGroup_s_aabb = new Tt();
+n.CreateParticlesFillShapeForGroup_s_p = new P();
+n.UpdatePairsAndTriads_s_dab = new P();
+n.UpdatePairsAndTriads_s_dbc = new P();
+n.UpdatePairsAndTriads_s_dca = new P();
+n.AddContact_s_d = new P();
+n.UpdateBodyContacts_s_aabb = new Tt();
+n.Solve_s_subStep = new on();
+n.SolveCollision_s_aabb = new Tt();
+n.SolveGravity_s_gravity = new P();
+n.SolveBarrier_s_aabb = new Tt();
+n.SolveBarrier_s_va = new P();
+n.SolveBarrier_s_vb = new P();
+n.SolveBarrier_s_pba = new P();
+n.SolveBarrier_s_vba = new P();
+n.SolveBarrier_s_vc = new P();
+n.SolveBarrier_s_pca = new P();
+n.SolveBarrier_s_vca = new P();
+n.SolveBarrier_s_qba = new P();
+n.SolveBarrier_s_qca = new P();
+n.SolveBarrier_s_dv = new P();
+n.SolveBarrier_s_f = new P();
+n.SolvePressure_s_f = new P();
+n.SolveDamping_s_v = new P();
+n.SolveDamping_s_f = new P();
+n.SolveRigidDamping_s_t0 = new P();
+n.SolveRigidDamping_s_t1 = new P();
+n.SolveRigidDamping_s_p = new P();
+n.SolveRigidDamping_s_v = new P();
+n.SolveExtraDamping_s_v = new P();
+n.SolveExtraDamping_s_f = new P();
+n.SolveRigid_s_position = new P();
+n.SolveRigid_s_rotation = new V();
+n.SolveRigid_s_transform = new N();
+n.SolveRigid_s_velocityTransform = new N();
+n.SolveElastic_s_pa = new P();
+n.SolveElastic_s_pb = new P();
+n.SolveElastic_s_pc = new P();
+n.SolveElastic_s_r = new V();
+n.SolveElastic_s_t0 = new P();
+n.SolveSpring_s_pa = new P();
+n.SolveSpring_s_pb = new P();
+n.SolveSpring_s_d = new P();
+n.SolveSpring_s_f = new P();
+n.SolveTensile_s_weightedNormal = new P();
+n.SolveTensile_s_s = new P();
+n.SolveTensile_s_f = new P();
+n.SolveViscous_s_v = new P();
+n.SolveViscous_s_f = new P();
+n.SolveRepulsive_s_f = new P();
+n.SolvePowder_s_f = new P();
+n.SolveSolid_s_f = new P();
+n.RemoveSpuriousBodyContacts_s_n = new P();
+n.RemoveSpuriousBodyContacts_s_pos = new P();
+n.RemoveSpuriousBodyContacts_s_normal = new P();
+return n;
+})();
+(function(e) {
+var n = (function() {
+return function() {
+this.data = null;
+this.userSuppliedCapacity = 0;
+};
+})();
+e.UserOverridableBuffer = n;
+var r = (function() {
+function t() {
+this.index = u;
+this.tag = 0;
+}
+t.CompareProxyProxy = function(t, e) {
+return t.tag < e.tag;
+};
+t.CompareTagProxy = function(t, e) {
+return t < e.tag;
+};
+t.CompareProxyTag = function(t, e) {
+return t.tag < e;
+};
+return t;
+})();
+e.Proxy = r;
+var s = (function() {
+function t(t, i, n, r, s) {
+this.m_system = t;
+this.m_xLower = (i & e.xMask) >>> 0;
+this.m_xUpper = (n & e.xMask) >>> 0;
+this.m_yLower = (i & e.yMask) >>> 0;
+this.m_yUpper = (n & e.yMask) >>> 0;
+this.m_first = r;
+this.m_last = s;
+}
+t.prototype.GetNext = function() {
+for (;this.m_first < this.m_last; ) {
+var t = (this.m_system.m_proxyBuffer.data[this.m_first].tag & e.xMask) >>> 0;
+if (t >= this.m_xLower && t <= this.m_xUpper) return this.m_system.m_proxyBuffer.data[this.m_first++].index;
+this.m_first++;
+}
+return u;
+};
+return t;
+})();
+e.InsideBoundsEnumerator = s;
+var o = (function() {
+return function() {
+this.next = null;
+this.count = 0;
+this.index = 0;
+};
+})();
+e.ParticleListNode = o;
+var a = (function() {
+function t() {}
+t.prototype.Allocate = function(t, e) {
+return e;
+};
+t.prototype.Clear = function() {};
+t.prototype.GetCount = function() {
+return 0;
+};
+t.prototype.Invalidate = function(t) {};
+t.prototype.GetValidBuffer = function() {
+return [];
+};
+t.prototype.GetBuffer = function() {
+return [];
+};
+t.prototype.SetCount = function(t) {};
+return t;
+})();
+e.FixedSetAllocator = a;
+var l = (function() {
+return function(t, e) {
+this.second = u;
+this.first = t;
+this.second = e;
+};
+})();
+e.FixtureParticle = l;
+var h = (function(t) {
+$e(e, t);
+function e() {
+return null !== t && t.apply(this, arguments) || this;
+}
+e.prototype.Initialize = function(t, e) {};
+e.prototype.Find = function(t) {
+return u;
+};
+return e;
+})(e.FixedSetAllocator);
+e.FixtureParticleSet = h;
+var _ = (function() {
+return function(t, e) {
+this.first = u;
+this.second = u;
+this.first = t;
+this.second = e;
+};
+})();
+e.ParticlePair = _;
+var f = (function(t) {
+$e(e, t);
+function e() {
+return null !== t && t.apply(this, arguments) || this;
+}
+e.prototype.Initialize = function(t, e) {};
+e.prototype.Find = function(t) {
+return u;
+};
+return e;
+})(e.FixedSetAllocator);
+e.b2ParticlePairSet = f;
+var d = (function() {
+function t() {}
+t.prototype.IsNecessary = function(t) {
+return !0;
+};
+t.prototype.ShouldCreatePair = function(t, e) {
+return !0;
+};
+t.prototype.ShouldCreateTriad = function(t, e, i) {
+return !0;
+};
+return t;
+})();
+e.ConnectionFilter = d;
+var m = (function(t) {
+$e(e, t);
+function e(e, i, n, r) {
+var s = t.call(this) || this;
+s.m_callDestructionListener = !1;
+s.m_destroyed = 0;
+s.m_system = e;
+s.m_shape = i;
+s.m_xf = n;
+s.m_callDestructionListener = r;
+s.m_destroyed = 0;
+return s;
+}
+e.prototype.ReportFixture = function(t) {
+return !1;
+};
+e.prototype.ReportParticle = function(t, e) {
+if (t !== this.m_system) return !1;
+if (!this.m_system.m_positionBuffer.data) throw new Error();
+if (this.m_shape.TestPoint(this.m_xf, this.m_system.m_positionBuffer.data[e])) {
+this.m_system.DestroyParticle(e, this.m_callDestructionListener);
+this.m_destroyed++;
+}
+return !0;
+};
+e.prototype.Destroyed = function() {
+return this.m_destroyed;
+};
+return e;
+})(en);
+e.DestroyParticlesInShapeCallback = m;
+var p = (function(t) {
+$e(e, t);
+function e(e) {
+var i = t.call(this) || this;
+i.m_threshold = 0;
+i.m_threshold = e;
+return i;
+}
+e.prototype.ShouldCreatePair = function(t, e) {
+return t < this.m_threshold && this.m_threshold <= e || e < this.m_threshold && this.m_threshold <= t;
+};
+e.prototype.ShouldCreateTriad = function(t, e, i) {
+return (t < this.m_threshold || e < this.m_threshold || i < this.m_threshold) && (this.m_threshold <= t || this.m_threshold <= e || this.m_threshold <= i);
+};
+return e;
+})(e.ConnectionFilter);
+e.JoinParticleGroupsFilter = p;
+var v = (function(e) {
+$e(n, e);
+function n(i, n) {
+void 0 === n && (n = i.length);
+var r = e.call(this, t.b2ShapeType.e_unknown, 0) || this;
+r.m_shapeCount = 0;
+r.m_shapes = i;
+r.m_shapeCount = n;
+return r;
+}
+n.prototype.Clone = function() {
+throw new Error();
+};
+n.prototype.GetChildCount = function() {
+return 1;
+};
+n.prototype.TestPoint = function(t, e) {
+for (var i = 0; i < this.m_shapeCount; i++) if (this.m_shapes[i].TestPoint(t, e)) return !0;
+return !1;
+};
+n.prototype.ComputeDistance = function(t, e, i, n) {
+return 0;
+};
+n.prototype.RayCast = function(t, e, i, n) {
+return !1;
+};
+n.prototype.ComputeAABB = function(t, e, n) {
+var r = new Tt();
+t.lowerBound.x = +i;
+t.lowerBound.y = +i;
+t.upperBound.x = -i;
+t.upperBound.y = -i;
+for (var s = 0; s < this.m_shapeCount; s++) for (var o = this.m_shapes[s].GetChildCount(), a = 0; a < o; a++) {
+var c = r;
+this.m_shapes[s].ComputeAABB(c, e, a);
+t.Combine1(c);
+}
+};
+n.prototype.ComputeMass = function(t, e) {};
+n.prototype.SetupDistanceProxy = function(t, e) {};
+n.prototype.ComputeSubmergedArea = function(t, e, i, n) {
+return 0;
+};
+n.prototype.Dump = function(t) {};
+return n;
+})(Ke);
+e.CompositeShape = v;
+var y = (function(e) {
+$e(i, e);
+function i(t) {
+var i = e.call(this) || this;
+i.m_flagsBuffer = t;
+return i;
+}
+i.prototype.IsNecessary = function(e) {
+if (!this.m_flagsBuffer.data) throw new Error();
+return 0 != (this.m_flagsBuffer.data[e] & t.b2ParticleFlag.b2_reactiveParticle);
+};
+return i;
+})(e.ConnectionFilter);
+e.ReactiveFilter = y;
+var g = (function(i) {
+$e(n, i);
+function n(t, e) {
+var n = i.call(this, t) || this;
+n.m_contactFilter = e;
+return n;
+}
+n.prototype.ShouldCollideFixtureParticle = function(e, i, n) {
+if (this.m_contactFilter) {
+if (this.m_system.GetFlagsBuffer()[n] & t.b2ParticleFlag.b2_fixtureContactFilterParticle) return this.m_contactFilter.ShouldCollideFixtureParticle(e, this.m_system, n);
+}
+return !0;
+};
+n.prototype.ReportFixtureAndParticle = function(i, n, r) {
+var s = e.UpdateBodyContactsCallback.ReportFixtureAndParticle_s_n, o = e.UpdateBodyContactsCallback.ReportFixtureAndParticle_s_rp;
+if (!this.m_system.m_flagsBuffer.data) throw new Error();
+if (!this.m_system.m_positionBuffer.data) throw new Error();
+var a = this.m_system.m_positionBuffer.data[r], c = s, l = i.ComputeDistance(a, c, n);
+if (l < this.m_system.m_particleDiameter && this.ShouldCollideFixtureParticle(i, this.m_system, r)) {
+var h = i.GetBody(), u = h.GetWorldCenter(), _ = h.GetMass(), f = h.GetInertia() - _ * h.GetLocalCenter().LengthSquared(), d = _ > 0 ? 1 / _ : 0, m = f > 0 ? 1 / f : 0, p = this.m_system.m_flagsBuffer.data[r] & t.b2ParticleFlag.b2_wallParticle ? 0 : this.m_system.GetParticleInvMass(), v = P.SubVV(a, u, o), y = P.CrossVV(v, c), g = p + d + m * y * y, x = this.m_system.m_bodyContactBuffer.data[this.m_system.m_bodyContactBuffer.Append()];
+x.index = r;
+x.body = h;
+x.fixture = i;
+x.weight = 1 - l * this.m_system.m_inverseDiameter;
+x.normal.Copy(c.SelfNeg());
+x.mass = g > 0 ? 1 / g : 0;
+this.m_system.DetectStuckParticle(r);
+}
+};
+n.ReportFixtureAndParticle_s_n = new P();
+n.ReportFixtureAndParticle_s_rp = new P();
+return n;
+})(Ln);
+e.UpdateBodyContactsCallback = g;
+var x = (function(i) {
+$e(n, i);
+function n(t, e) {
+var n = i.call(this, t) || this;
+n.m_step = e;
+return n;
+}
+n.prototype.ReportFixtureAndParticle = function(i, n, r) {
+var s = e.SolveCollisionCallback.ReportFixtureAndParticle_s_p1, o = e.SolveCollisionCallback.ReportFixtureAndParticle_s_output, a = e.SolveCollisionCallback.ReportFixtureAndParticle_s_input, l = e.SolveCollisionCallback.ReportFixtureAndParticle_s_p, h = e.SolveCollisionCallback.ReportFixtureAndParticle_s_v, u = e.SolveCollisionCallback.ReportFixtureAndParticle_s_f, _ = i.GetBody();
+if (!this.m_system.m_positionBuffer.data) throw new Error();
+if (!this.m_system.m_velocityBuffer.data) throw new Error();
+var f = this.m_system.m_positionBuffer.data[r], d = this.m_system.m_velocityBuffer.data[r], m = o, p = a;
+if (0 === this.m_system.m_iterationIndex) {
+var v = N.MulTXV(_.m_xf0, f, s);
+if (i.GetShape().GetType() === t.b2ShapeType.e_circleShape) {
+v.SelfSub(_.GetLocalCenter());
+V.MulRV(_.m_xf0.q, v, v);
+V.MulTRV(_.m_xf.q, v, v);
+v.SelfAdd(_.GetLocalCenter());
+}
+N.MulXV(_.m_xf, v, p.p1);
+} else p.p1.Copy(f);
+P.AddVMulSV(f, this.m_step.dt, d, p.p2);
+p.maxFraction = 1;
+if (i.RayCast(m, p, n)) {
+var y = m.normal, g = l;
+g.x = (1 - m.fraction) * p.p1.x + m.fraction * p.p2.x + c * y.x;
+g.y = (1 - m.fraction) * p.p1.y + m.fraction * p.p2.y + c * y.y;
+var x = h;
+x.x = this.m_step.inv_dt * (g.x - f.x);
+x.y = this.m_step.inv_dt * (g.y - f.y);
+this.m_system.m_velocityBuffer.data[r].Copy(x);
+var C = u;
+C.x = this.m_step.inv_dt * this.m_system.GetParticleMass() * (d.x - x.x);
+C.y = this.m_step.inv_dt * this.m_system.GetParticleMass() * (d.y - x.y);
+this.m_system.ParticleApplyForce(r, C);
+}
+};
+n.prototype.ReportParticle = function(t, e) {
+return !1;
+};
+n.ReportFixtureAndParticle_s_p1 = new P();
+n.ReportFixtureAndParticle_s_output = new wt();
+n.ReportFixtureAndParticle_s_input = new St();
+n.ReportFixtureAndParticle_s_p = new P();
+n.ReportFixtureAndParticle_s_v = new P();
+n.ReportFixtureAndParticle_s_f = new P();
+return n;
+})(Ln);
+e.SolveCollisionCallback = x;
+})(t.b2ParticleSystem || (t.b2ParticleSystem = {}));
+var zn = (function() {
+function e(t) {
+this.m_newFixture = !1;
+this.m_locked = !1;
+this.m_clearForces = !0;
+this.m_contactManager = new rn();
+this.m_bodyList = null;
+this.m_jointList = null;
+this.m_particleSystemList = null;
+this.m_bodyCount = 0;
+this.m_jointCount = 0;
+this.m_gravity = new P();
+this.m_allowSleep = !0;
+this.m_destructionListener = null;
+this.m_debugDraw = null;
+this.m_inv_dt0 = 0;
+this.m_warmStarting = !0;
+this.m_continuousPhysics = !0;
+this.m_subStepping = !1;
+this.m_stepComplete = !0;
+this.m_profile = new sn();
+this.m_island = new pn();
+this.s_stack = [];
+this.m_controllerList = null;
+this.m_controllerCount = 0;
+this.m_gravity.Copy(t);
+}
+e.prototype.SetDestructionListener = function(t) {
+this.m_destructionListener = t;
+};
+e.prototype.SetContactFilter = function(t) {
+this.m_contactManager.m_contactFilter = t;
+};
+e.prototype.SetContactListener = function(t) {
+this.m_contactManager.m_contactListener = t;
+};
+e.prototype.SetDebugDraw = function(t) {
+this.m_debugDraw = t;
+};
+e.prototype.CreateBody = function(t) {
+void 0 === t && (t = {});
+if (this.IsLocked()) throw new Error();
+var e = new li(t, this);
+e.m_prev = null;
+e.m_next = this.m_bodyList;
+this.m_bodyList && (this.m_bodyList.m_prev = e);
+this.m_bodyList = e;
+++this.m_bodyCount;
+return e;
+};
+e.prototype.DestroyBody = function(t) {
+if (this.IsLocked()) throw new Error();
+for (var e = t.m_jointList; e; ) {
+var i = e;
+e = e.next;
+this.m_destructionListener && this.m_destructionListener.SayGoodbyeJoint(i.joint);
+this.DestroyJoint(i.joint);
+t.m_jointList = e;
+}
+t.m_jointList = null;
+for (var n = t.m_controllerList; n; ) {
+var r = n;
+n = n.nextController;
+r.controller.RemoveBody(t);
+}
+for (var s = t.m_contactList; s; ) {
+var o = s;
+s = s.next;
+this.m_contactManager.Destroy(o.contact);
+}
+t.m_contactList = null;
+for (var a = t.m_fixtureList; a; ) {
+var c = a;
+a = a.m_next;
+this.m_destructionListener && this.m_destructionListener.SayGoodbyeFixture(c);
+c.DestroyProxies();
+c.Destroy();
+t.m_fixtureList = a;
+t.m_fixtureCount -= 1;
+}
+t.m_fixtureList = null;
+t.m_fixtureCount = 0;
+t.m_prev && (t.m_prev.m_next = t.m_next);
+t.m_next && (t.m_next.m_prev = t.m_prev);
+t === this.m_bodyList && (this.m_bodyList = t.m_next);
+--this.m_bodyCount;
+};
+e._Joint_Create = function(e, i) {
+switch (e.type) {
+case t.b2JointType.e_distanceJoint:
+return new mi(e);
+
+case t.b2JointType.e_mouseJoint:
+return new wi(e);
+
+case t.b2JointType.e_prismaticJoint:
+return new Ei(e);
+
+case t.b2JointType.e_revoluteJoint:
+return new Ii(e);
+
+case t.b2JointType.e_pulleyJoint:
+return new Bi(e);
+
+case t.b2JointType.e_gearJoint:
+return new Ci(e);
+
+case t.b2JointType.e_wheelJoint:
+return new Vi(e);
+
+case t.b2JointType.e_weldJoint:
+return new Fi(e);
+
+case t.b2JointType.e_frictionJoint:
+return new gi(e);
+
+case t.b2JointType.e_ropeJoint:
+return new Ri(e);
+
+case t.b2JointType.e_motorJoint:
+return new Ai(e);
+
+case t.b2JointType.e_areaJoint:
+return new vi(e);
+}
+throw new Error();
+};
+e._Joint_Destroy = function(t, e) {};
+e.prototype.CreateJoint = function(t) {
+if (this.IsLocked()) throw new Error();
+var i = e._Joint_Create(t, null);
+i.m_prev = null;
+i.m_next = this.m_jointList;
+this.m_jointList && (this.m_jointList.m_prev = i);
+this.m_jointList = i;
+++this.m_jointCount;
+i.m_edgeA.prev = null;
+i.m_edgeA.next = i.m_bodyA.m_jointList;
+i.m_bodyA.m_jointList && (i.m_bodyA.m_jointList.prev = i.m_edgeA);
+i.m_bodyA.m_jointList = i.m_edgeA;
+i.m_edgeB.prev = null;
+i.m_edgeB.next = i.m_bodyB.m_jointList;
+i.m_bodyB.m_jointList && (i.m_bodyB.m_jointList.prev = i.m_edgeB);
+i.m_bodyB.m_jointList = i.m_edgeB;
+var n = t.bodyA, r = t.bodyB;
+if (!t.collideConnected) for (var s = r.GetContactList(); s; ) {
+s.other === n && s.contact.FlagForFiltering();
+s = s.next;
+}
+return i;
+};
+e.prototype.DestroyJoint = function(t) {
+if (this.IsLocked()) throw new Error();
+var i = t.m_collideConnected;
+t.m_prev && (t.m_prev.m_next = t.m_next);
+t.m_next && (t.m_next.m_prev = t.m_prev);
+t === this.m_jointList && (this.m_jointList = t.m_next);
+var n = t.m_bodyA, r = t.m_bodyB;
+n.SetAwake(!0);
+r.SetAwake(!0);
+t.m_edgeA.prev && (t.m_edgeA.prev.next = t.m_edgeA.next);
+t.m_edgeA.next && (t.m_edgeA.next.prev = t.m_edgeA.prev);
+t.m_edgeA === n.m_jointList && (n.m_jointList = t.m_edgeA.next);
+t.m_edgeA.prev = null;
+t.m_edgeA.next = null;
+t.m_edgeB.prev && (t.m_edgeB.prev.next = t.m_edgeB.next);
+t.m_edgeB.next && (t.m_edgeB.next.prev = t.m_edgeB.prev);
+t.m_edgeB === r.m_jointList && (r.m_jointList = t.m_edgeB.next);
+t.m_edgeB.prev = null;
+t.m_edgeB.next = null;
+e._Joint_Destroy(t, null);
+--this.m_jointCount;
+if (!i) for (var s = r.GetContactList(); s; ) {
+s.other === n && s.contact.FlagForFiltering();
+s = s.next;
+}
+};
+e.prototype.CreateParticleSystem = function(e) {
+if (this.IsLocked()) throw new Error();
+var i = new t.b2ParticleSystem(e, this);
+i.m_prev = null;
+i.m_next = this.m_particleSystemList;
+this.m_particleSystemList && (this.m_particleSystemList.m_prev = i);
+this.m_particleSystemList = i;
+return i;
+};
+e.prototype.DestroyParticleSystem = function(t) {
+if (this.IsLocked()) throw new Error();
+t.m_prev && (t.m_prev.m_next = t.m_next);
+t.m_next && (t.m_next.m_prev = t.m_prev);
+t === this.m_particleSystemList && (this.m_particleSystemList = t.m_next);
+};
+e.prototype.CalculateReasonableParticleIterations = function(t) {
+if (null === this.m_particleSystemList) return 1;
+return yn(this.m_gravity.Length(), (function(t) {
+for (var e = i, n = t.GetParticleSystemList(); null !== n; n = n.m_next) e = g(e, n.GetRadius());
+return e;
+})(this), t);
+};
+e.prototype.Step = function(t, i, n, r) {
+void 0 === r && (r = this.CalculateReasonableParticleIterations(t));
+var s = e.Step_s_stepTimer.Reset();
+if (this.m_newFixture) {
+this.m_contactManager.FindNewContacts();
+this.m_newFixture = !1;
+}
+this.m_locked = !0;
+var o = e.Step_s_step;
+o.dt = t;
+o.velocityIterations = i;
+o.positionIterations = n;
+o.particleIterations = r;
+o.inv_dt = t > 0 ? 1 / t : 0;
+o.dtRatio = this.m_inv_dt0 * t;
+o.warmStarting = this.m_warmStarting;
+var a = e.Step_s_timer.Reset();
+this.m_contactManager.Collide();
+this.m_profile.collide = a.GetMilliseconds();
+if (this.m_stepComplete && o.dt > 0) {
+for (var c = e.Step_s_timer.Reset(), l = this.m_particleSystemList; l; l = l.m_next) l.Solve(o);
+this.Solve(o);
+this.m_profile.solve = c.GetMilliseconds();
+}
+if (this.m_continuousPhysics && o.dt > 0) {
+var h = e.Step_s_timer.Reset();
+this.SolveTOI(o);
+this.m_profile.solveTOI = h.GetMilliseconds();
+}
+o.dt > 0 && (this.m_inv_dt0 = o.inv_dt);
+this.m_clearForces && this.ClearForces();
+this.m_locked = !1;
+this.m_profile.step = s.GetMilliseconds();
+};
+e.prototype.ClearForces = function() {
+for (var t = this.m_bodyList; t; t = t.m_next) {
+t.m_force.SetZero();
+t.m_torque = 0;
+}
+};
+e.prototype.DrawParticleSystem = function(t) {
+if (null !== this.m_debugDraw) {
+var e = t.GetParticleCount();
+if (e) {
+var i = t.GetRadius(), n = t.GetPositionBuffer();
+if (t.m_colorBuffer.data) {
+var r = t.GetColorBuffer();
+this.m_debugDraw.DrawParticles(n, i, r, e);
+} else this.m_debugDraw.DrawParticles(n, i, null, e);
+}
+}
+};
+e.prototype.DrawDebugData = function() {
+if (null !== this.m_debugDraw) {
+var i = this.m_debugDraw.GetFlags(), n = e.DrawDebugData_s_color.SetRGB(0, 0, 0);
+if (i & t.b2DrawFlags.e_shapeBit) for (var r = this.m_bodyList; r; r = r.m_next) {
+var s = r.m_xf;
+this.m_debugDraw.PushTransform(s);
+for (var o = r.GetFixtureList(); o; o = o.m_next) if (r.IsActive()) if (r.GetType() === t.b2BodyType.b2_staticBody) {
+n.SetRGB(.5, .9, .5);
+this.DrawShape(o, n);
+} else if (r.GetType() === t.b2BodyType.b2_kinematicBody) {
+n.SetRGB(.5, .5, .9);
+this.DrawShape(o, n);
+} else if (r.IsAwake()) {
+n.SetRGB(.9, .7, .7);
+this.DrawShape(o, n);
+} else {
+n.SetRGB(.6, .6, .6);
+this.DrawShape(o, n);
+} else {
+n.SetRGB(.5, .5, .3);
+this.DrawShape(o, n);
+}
+this.m_debugDraw.PopTransform(s);
+}
+if (i & t.b2DrawFlags.e_particleBit) for (var a = this.m_particleSystemList; a; a = a.m_next) this.DrawParticleSystem(a);
+if (i & t.b2DrawFlags.e_jointBit) for (var c = this.m_jointList; c; c = c.m_next) this.DrawJoint(c);
+if (i & t.b2DrawFlags.e_aabbBit) {
+n.SetRGB(.9, .3, .9);
+var l = e.DrawDebugData_s_vs;
+for (r = this.m_bodyList; r; r = r.m_next) if (r.IsActive()) for (o = r.GetFixtureList(); o; o = o.m_next) for (var h = 0; h < o.m_proxyCount; ++h) {
+var u = o.m_proxies[h].treeNode.aabb;
+l[0].Set(u.lowerBound.x, u.lowerBound.y);
+l[1].Set(u.upperBound.x, u.lowerBound.y);
+l[2].Set(u.upperBound.x, u.upperBound.y);
+l[3].Set(u.lowerBound.x, u.upperBound.y);
+this.m_debugDraw.DrawPolygon(l, 4, n);
+}
+}
+if (i & t.b2DrawFlags.e_centerOfMassBit) for (r = this.m_bodyList; r; r = r.m_next) {
+(s = e.DrawDebugData_s_xf).q.Copy(r.m_xf.q);
+s.p.Copy(r.GetWorldCenter());
+this.m_debugDraw.DrawTransform(s);
+}
+if (i & t.b2DrawFlags.e_controllerBit) for (var _ = this.m_controllerList; _; _ = _.m_next) _.Draw(this.m_debugDraw);
+}
+};
+e.prototype.QueryAABB = function(t, e, i) {
+this.m_contactManager.m_broadPhase.Query(e, (function(e) {
+var n = e.userData.fixture;
+return t ? t.ReportFixture(n) : !i || i(n);
+}));
+if (t instanceof en) for (var n = this.m_particleSystemList; n; n = n.m_next) t.ShouldQueryParticleSystem(n) && n.QueryAABB(t, e);
+};
+e.prototype.QueryAllAABB = function(t, e) {
+void 0 === e && (e = []);
+this.QueryAABB(null, t, (function(t) {
+e.push(t);
+return !0;
+}));
+return e;
+};
+e.prototype.QueryPointAABB = function(t, e, i) {
+this.m_contactManager.m_broadPhase.QueryPoint(e, (function(e) {
+var n = e.userData.fixture;
+return t ? t.ReportFixture(n) : !i || i(n);
+}));
+if (t instanceof en) for (var n = this.m_particleSystemList; n; n = n.m_next) t.ShouldQueryParticleSystem(n) && n.QueryPointAABB(t, e);
+};
+e.prototype.QueryAllPointAABB = function(t, e) {
+void 0 === e && (e = []);
+this.QueryPointAABB(null, t, (function(t) {
+e.push(t);
+return !0;
+}));
+return e;
+};
+e.prototype.QueryFixtureShape = function(t, i, n, r, s) {
+var o = e.QueryFixtureShape_s_aabb;
+i.ComputeAABB(o, r, n);
+this.m_contactManager.m_broadPhase.Query(o, (function(e) {
+var o = e.userData, a = o.fixture;
+if (Pt(i, n, a.GetShape(), o.childIndex, r, a.GetBody().GetTransform())) {
+if (t) return t.ReportFixture(a);
+if (s) return s(a);
+}
+return !0;
+}));
+if (t instanceof en) for (var a = this.m_particleSystemList; a; a = a.m_next) t.ShouldQueryParticleSystem(a) && a.QueryAABB(t, o);
+};
+e.prototype.QueryAllFixtureShape = function(t, e, i, n) {
+void 0 === n && (n = []);
+this.QueryFixtureShape(null, t, e, i, (function(t) {
+n.push(t);
+return !0;
+}));
+return n;
+};
+e.prototype.QueryFixturePoint = function(t, e, i) {
+this.m_contactManager.m_broadPhase.QueryPoint(e, (function(n) {
+var r = n.userData.fixture;
+if (r.TestPoint(e)) {
+if (t) return t.ReportFixture(r);
+if (i) return i(r);
+}
+return !0;
+}));
+if (t) for (var n = this.m_particleSystemList; n; n = n.m_next) t.ShouldQueryParticleSystem(n) && n.QueryPointAABB(t, e);
+};
+e.prototype.QueryAllFixturePoint = function(t, e) {
+void 0 === e && (e = []);
+this.QueryFixturePoint(null, t, (function(t) {
+e.push(t);
+return !0;
+}));
+return e;
+};
+e.prototype.RayCast = function(t, i, n, r) {
+var s = e.RayCast_s_input;
+s.maxFraction = 1;
+s.p1.Copy(i);
+s.p2.Copy(n);
+this.m_contactManager.m_broadPhase.RayCast(s, (function(s, o) {
+var a = o.userData, c = a.fixture, l = a.childIndex, h = e.RayCast_s_output;
+if (c.RayCast(h, s, l)) {
+var u = h.fraction, _ = e.RayCast_s_point;
+_.Set((1 - u) * i.x + u * n.x, (1 - u) * i.y + u * n.y);
+if (t) return t.ReportFixture(c, _, h.normal, u);
+if (r) return r(c, _, h.normal, u);
+}
+return s.maxFraction;
+}));
+if (t) for (var o = this.m_particleSystemList; o; o = o.m_next) t.ShouldQueryParticleSystem(o) && o.RayCast(t, i, n);
+};
+e.prototype.RayCastOne = function(t, e) {
+var i = null, n = 1;
+this.RayCast(null, t, e, (function(t, e, r, s) {
+if (s < n) {
+n = s;
+i = t;
+}
+return n;
+}));
+return i;
+};
+e.prototype.RayCastAll = function(t, e, i) {
+void 0 === i && (i = []);
+this.RayCast(null, t, e, (function(t, e, n, r) {
+i.push(t);
+return 1;
+}));
+return i;
+};
+e.prototype.GetBodyList = function() {
+return this.m_bodyList;
+};
+e.prototype.GetJointList = function() {
+return this.m_jointList;
+};
+e.prototype.GetParticleSystemList = function() {
+return this.m_particleSystemList;
+};
+e.prototype.GetContactList = function() {
+return this.m_contactManager.m_contactList;
+};
+e.prototype.SetAllowSleeping = function(t) {
+if (t !== this.m_allowSleep) {
+this.m_allowSleep = t;
+if (!this.m_allowSleep) for (var e = this.m_bodyList; e; e = e.m_next) e.SetAwake(!0);
+}
+};
+e.prototype.GetAllowSleeping = function() {
+return this.m_allowSleep;
+};
+e.prototype.SetWarmStarting = function(t) {
+this.m_warmStarting = t;
+};
+e.prototype.GetWarmStarting = function() {
+return this.m_warmStarting;
+};
+e.prototype.SetContinuousPhysics = function(t) {
+this.m_continuousPhysics = t;
+};
+e.prototype.GetContinuousPhysics = function() {
+return this.m_continuousPhysics;
+};
+e.prototype.SetSubStepping = function(t) {
+this.m_subStepping = t;
+};
+e.prototype.GetSubStepping = function() {
+return this.m_subStepping;
+};
+e.prototype.GetProxyCount = function() {
+return this.m_contactManager.m_broadPhase.GetProxyCount();
+};
+e.prototype.GetBodyCount = function() {
+return this.m_bodyCount;
+};
+e.prototype.GetJointCount = function() {
+return this.m_jointCount;
+};
+e.prototype.GetContactCount = function() {
+return this.m_contactManager.m_contactCount;
+};
+e.prototype.GetTreeHeight = function() {
+return this.m_contactManager.m_broadPhase.GetTreeHeight();
+};
+e.prototype.GetTreeBalance = function() {
+return this.m_contactManager.m_broadPhase.GetTreeBalance();
+};
+e.prototype.GetTreeQuality = function() {
+return this.m_contactManager.m_broadPhase.GetTreeQuality();
+};
+e.prototype.SetGravity = function(t, e) {
+void 0 === e && (e = !0);
+if (!P.IsEqualToV(this.m_gravity, t)) {
+this.m_gravity.Copy(t);
+if (e) for (var i = this.m_bodyList; i; i = i.m_next) i.SetAwake(!0);
+}
+};
+e.prototype.GetGravity = function() {
+return this.m_gravity;
+};
+e.prototype.IsLocked = function() {
+return this.m_locked;
+};
+e.prototype.SetAutoClearForces = function(t) {
+this.m_clearForces = t;
+};
+e.prototype.GetAutoClearForces = function() {
+return this.m_clearForces;
+};
+e.prototype.ShiftOrigin = function(t) {
+if (this.IsLocked()) throw new Error();
+for (var e = this.m_bodyList; e; e = e.m_next) {
+e.m_xf.p.SelfSub(t);
+e.m_sweep.c0.SelfSub(t);
+e.m_sweep.c.SelfSub(t);
+}
+for (var i = this.m_jointList; i; i = i.m_next) i.ShiftOrigin(t);
+this.m_contactManager.m_broadPhase.ShiftOrigin(t);
+};
+e.prototype.GetContactManager = function() {
+return this.m_contactManager;
+};
+e.prototype.GetProfile = function() {
+return this.m_profile;
+};
+e.prototype.Dump = function(e) {
+if (!this.m_locked) {
+e("const g: b2Vec2 = new b2Vec2(%.15f, %.15f);\n", this.m_gravity.x, this.m_gravity.y);
+e("this.m_world.SetGravity(g);\n");
+e("const bodies: b2Body[] = [];\n");
+e("const joints: b2Joint[] = [];\n");
+for (var i = 0, n = this.m_bodyList; n; n = n.m_next) {
+n.m_islandIndex = i;
+n.Dump(e);
+++i;
+}
+i = 0;
+for (var r = this.m_jointList; r; r = r.m_next) {
+r.m_index = i;
+++i;
+}
+for (r = this.m_jointList; r; r = r.m_next) if (r.m_type !== t.b2JointType.e_gearJoint) {
+e("{\n");
+r.Dump(e);
+e("}\n");
+}
+for (r = this.m_jointList; r; r = r.m_next) if (r.m_type === t.b2JointType.e_gearJoint) {
+e("{\n");
+r.Dump(e);
+e("}\n");
+}
+}
+};
+e.prototype.DrawJoint = function(i) {
+if (null !== this.m_debugDraw) {
+var n = i.GetBodyA(), r = i.GetBodyB(), s = n.m_xf, o = r.m_xf, a = s.p, c = o.p, l = i.GetAnchorA(e.DrawJoint_s_p1), h = i.GetAnchorB(e.DrawJoint_s_p2), u = e.DrawJoint_s_color.SetRGB(.5, .8, .8);
+switch (i.m_type) {
+case t.b2JointType.e_distanceJoint:
+this.m_debugDraw.DrawSegment(l, h, u);
+break;
+
+case t.b2JointType.e_pulleyJoint:
+var _ = i, f = _.GetGroundAnchorA(), d = _.GetGroundAnchorB();
+this.m_debugDraw.DrawSegment(f, l, u);
+this.m_debugDraw.DrawSegment(d, h, u);
+this.m_debugDraw.DrawSegment(f, d, u);
+break;
+
+case t.b2JointType.e_mouseJoint:
+var m = e.DrawJoint_s_c;
+m.Set(0, 1, 0);
+this.m_debugDraw.DrawPoint(l, 4, m);
+this.m_debugDraw.DrawPoint(h, 4, m);
+m.Set(.8, .8, .8);
+this.m_debugDraw.DrawSegment(l, h, m);
+break;
+
+default:
+this.m_debugDraw.DrawSegment(a, l, u);
+this.m_debugDraw.DrawSegment(l, h, u);
+this.m_debugDraw.DrawSegment(c, h, u);
+}
+}
+};
+e.prototype.DrawShape = function(i, n) {
+if (null !== this.m_debugDraw) {
+var r = i.GetShape();
+switch (r.m_type) {
+case t.b2ShapeType.e_circleShape:
+var s = r, o = s.m_p, a = s.m_radius, c = P.UNITX;
+this.m_debugDraw.DrawSolidCircle(o, a, c, n);
+break;
+
+case t.b2ShapeType.e_edgeShape:
+var l = r, h = l.m_vertex1, u = l.m_vertex2;
+this.m_debugDraw.DrawSegment(h, u, n);
+break;
+
+case t.b2ShapeType.e_chainShape:
+var _ = r, f = _.m_count, d = _.m_vertices, m = e.DrawShape_s_ghostColor.SetRGBA(.75 * n.r, .75 * n.g, .75 * n.b, n.a);
+h = d[0];
+this.m_debugDraw.DrawPoint(h, 4, n);
+if (_.m_hasPrevVertex) {
+var p = _.m_prevVertex;
+this.m_debugDraw.DrawSegment(p, h, m);
+this.m_debugDraw.DrawCircle(p, .1, m);
+}
+for (var v = 1; v < f; ++v) {
+u = d[v];
+this.m_debugDraw.DrawSegment(h, u, n);
+this.m_debugDraw.DrawPoint(u, 4, n);
+h = u;
+}
+if (_.m_hasNextVertex) {
+var y = _.m_nextVertex;
+this.m_debugDraw.DrawSegment(y, h, m);
+this.m_debugDraw.DrawCircle(y, .1, m);
+}
+break;
+
+case t.b2ShapeType.e_polygonShape:
+var g = r, x = g.m_count;
+d = g.m_vertices;
+this.m_debugDraw.DrawSolidPolygon(d, x, n);
+}
+}
+};
+e.prototype.Solve = function(e) {
+for (var i = this.m_bodyList; i; i = i.m_next) i.m_xf0.Copy(i.m_xf);
+for (var n = this.m_controllerList; n; n = n.m_next) n.Step(e);
+this.m_profile.solveInit = 0;
+this.m_profile.solveVelocity = 0;
+this.m_profile.solvePosition = 0;
+var r = this.m_island;
+r.Initialize(this.m_bodyCount, this.m_contactManager.m_contactCount, this.m_jointCount, null, this.m_contactManager.m_contactListener);
+for (i = this.m_bodyList; i; i = i.m_next) i.m_islandFlag = !1;
+for (var s = this.m_contactManager.m_contactList; s; s = s.m_next) s.m_islandFlag = !1;
+for (var o = this.m_jointList; o; o = o.m_next) o.m_islandFlag = !1;
+for (var a = this.s_stack, c = this.m_bodyList; c; c = c.m_next) if (!c.m_islandFlag && c.IsAwake() && c.IsActive() && c.GetType() !== t.b2BodyType.b2_staticBody) {
+r.Clear();
+var l = 0;
+a[l++] = c;
+c.m_islandFlag = !0;
+for (;l > 0; ) {
+if (!(i = a[--l])) throw new Error();
+r.AddBody(i);
+i.m_awakeFlag = !0;
+if (i.GetType() !== t.b2BodyType.b2_staticBody) {
+for (var h = i.m_contactList; h; h = h.next) {
+var u = h.contact;
+if (!u.m_islandFlag && (u.IsEnabled() && u.IsTouching())) {
+var _ = u.m_fixtureA.m_isSensor, f = u.m_fixtureB.m_isSensor;
+if (!_ && !f) {
+r.AddContact(u);
+u.m_islandFlag = !0;
+if (!(m = h.other)) throw new Error();
+if (!m.m_islandFlag) {
+a[l++] = m;
+m.m_islandFlag = !0;
+}
+}
+}
+}
+for (var d = i.m_jointList; d; d = d.next) if (!d.joint.m_islandFlag) {
+var m;
+if ((m = d.other).IsActive()) {
+r.AddJoint(d.joint);
+d.joint.m_islandFlag = !0;
+if (!m.m_islandFlag) {
+a[l++] = m;
+m.m_islandFlag = !0;
+}
+}
+}
+}
+}
+var p = new sn();
+r.Solve(p, e, this.m_gravity, this.m_allowSleep);
+this.m_profile.solveInit += p.solveInit;
+this.m_profile.solveVelocity += p.solveVelocity;
+this.m_profile.solvePosition += p.solvePosition;
+for (var v = 0; v < r.m_bodyCount; ++v) {
+(i = r.m_bodies[v]).GetType() === t.b2BodyType.b2_staticBody && (i.m_islandFlag = !1);
+}
+}
+for (v = 0; v < a.length && a[v]; ++v) a[v] = null;
+var y = new U();
+for (i = this.m_bodyList; i; i = i.m_next) i.m_islandFlag && i.GetType() !== t.b2BodyType.b2_staticBody && i.SynchronizeFixtures();
+this.m_contactManager.FindNewContacts();
+this.m_profile.broadphase = y.GetMilliseconds();
+};
+e.prototype.SolveTOI = function(i) {
+var r = this.m_island;
+r.Initialize(64, 32, 0, null, this.m_contactManager.m_contactListener);
+if (this.m_stepComplete) {
+for (var s = this.m_bodyList; s; s = s.m_next) {
+s.m_islandFlag = !1;
+s.m_sweep.alpha0 = 0;
+}
+for (var o = this.m_contactManager.m_contactList; o; o = o.m_next) {
+o.m_toiFlag = !1;
+o.m_islandFlag = !1;
+o.m_toiCount = 0;
+o.m_toi = 1;
+}
+}
+for (;;) {
+var a = null, c = 1;
+for (o = this.m_contactManager.m_contactList; o; o = o.m_next) if (o.IsEnabled() && !(o.m_toiCount > 8)) {
+var l = 1;
+if (o.m_toiFlag) l = o.m_toi; else {
+var h = o.GetFixtureA(), u = o.GetFixtureB();
+if (h.IsSensor() || u.IsSensor()) continue;
+var _ = h.GetBody(), f = u.GetBody(), d = _.m_type, m = f.m_type, p = _.IsAwake() && d !== t.b2BodyType.b2_staticBody, v = f.IsAwake() && m !== t.b2BodyType.b2_staticBody;
+if (!p && !v) continue;
+var y = _.IsBullet() || d !== t.b2BodyType.b2_dynamicBody, x = f.IsBullet() || m !== t.b2BodyType.b2_dynamicBody;
+if (!y && !x) continue;
+var C = _.m_sweep.alpha0;
+if (_.m_sweep.alpha0 < f.m_sweep.alpha0) {
+C = f.m_sweep.alpha0;
+_.m_sweep.Advance(C);
+} else if (f.m_sweep.alpha0 < _.m_sweep.alpha0) {
+C = _.m_sweep.alpha0;
+f.m_sweep.Advance(C);
+}
+var b = o.GetChildIndexA(), A = o.GetChildIndexB(), S = e.SolveTOI_s_toi_input;
+S.proxyA.SetShape(h.GetShape(), b);
+S.proxyB.SetShape(u.GetShape(), A);
+S.sweepA.Copy(_.m_sweep);
+S.sweepB.Copy(f.m_sweep);
+S.tMax = 1;
+var w = e.SolveTOI_s_toi_output;
+re(w, S);
+var T = w.t;
+l = w.state === t.b2TOIOutputState.e_touching ? g(C + (1 - C) * T, 1) : 1;
+o.m_toi = l;
+o.m_toiFlag = !0;
+}
+if (l < c) {
+a = o;
+c = l;
+}
+}
+if (null === a || 1 - 10 * n < c) {
+this.m_stepComplete = !0;
+break;
+}
+var E = a.GetFixtureA(), M = a.GetFixtureB(), B = E.GetBody(), D = M.GetBody(), I = e.SolveTOI_s_backup1.Copy(B.m_sweep), P = e.SolveTOI_s_backup2.Copy(D.m_sweep);
+B.Advance(c);
+D.Advance(c);
+a.Update(this.m_contactManager.m_contactListener);
+a.m_toiFlag = !1;
+++a.m_toiCount;
+if (a.IsEnabled() && a.IsTouching()) {
+B.SetAwake(!0);
+D.SetAwake(!0);
+r.Clear();
+r.AddBody(B);
+r.AddBody(D);
+r.AddContact(a);
+B.m_islandFlag = !0;
+D.m_islandFlag = !0;
+a.m_islandFlag = !0;
+for (var R = 0; R < 2; ++R) {
+if ((G = 0 === R ? B : D).m_type === t.b2BodyType.b2_dynamicBody) for (var L = G.m_contactList; L && r.m_bodyCount !== r.m_bodyCapacity && r.m_contactCount !== r.m_contactCapacity; L = L.next) {
+var F = L.contact;
+if (!F.m_islandFlag) {
+var O = L.other;
+if (O.m_type !== t.b2BodyType.b2_dynamicBody || G.IsBullet() || O.IsBullet()) {
+var V = F.m_fixtureA.m_isSensor, N = F.m_fixtureB.m_isSensor;
+if (!V && !N) {
+var k = e.SolveTOI_s_backup.Copy(O.m_sweep);
+O.m_islandFlag || O.Advance(c);
+F.Update(this.m_contactManager.m_contactListener);
+if (F.IsEnabled()) if (F.IsTouching()) {
+F.m_islandFlag = !0;
+r.AddContact(F);
+if (!O.m_islandFlag) {
+O.m_islandFlag = !0;
+O.m_type !== t.b2BodyType.b2_staticBody && O.SetAwake(!0);
+r.AddBody(O);
+}
+} else {
+O.m_sweep.Copy(k);
+O.SynchronizeTransform();
+} else {
+O.m_sweep.Copy(k);
+O.SynchronizeTransform();
+}
+}
+}
+}
+}
+}
+var z = e.SolveTOI_s_subStep;
+z.dt = (1 - c) * i.dt;
+z.inv_dt = 1 / z.dt;
+z.dtRatio = 1;
+z.positionIterations = 20;
+z.velocityIterations = i.velocityIterations;
+z.particleIterations = i.particleIterations;
+z.warmStarting = !1;
+r.SolveTOI(z, B.m_islandIndex, D.m_islandIndex);
+for (R = 0; R < r.m_bodyCount; ++R) {
+var G;
+(G = r.m_bodies[R]).m_islandFlag = !1;
+if (G.m_type === t.b2BodyType.b2_dynamicBody) {
+G.SynchronizeFixtures();
+for (L = G.m_contactList; L; L = L.next) {
+L.contact.m_toiFlag = !1;
+L.contact.m_islandFlag = !1;
+}
+}
+}
+this.m_contactManager.FindNewContacts();
+if (this.m_subStepping) {
+this.m_stepComplete = !1;
+break;
+}
+} else {
+a.SetEnabled(!1);
+B.m_sweep.Copy(I);
+D.m_sweep.Copy(P);
+B.SynchronizeTransform();
+D.SynchronizeTransform();
+}
+}
+};
+e.prototype.AddController = function(t) {
+t.m_next = this.m_controllerList;
+t.m_prev = null;
+this.m_controllerList && (this.m_controllerList.m_prev = t);
+this.m_controllerList = t;
+++this.m_controllerCount;
+return t;
+};
+e.prototype.RemoveController = function(t) {
+t.m_prev && (t.m_prev.m_next = t.m_next);
+t.m_next && (t.m_next.m_prev = t.m_prev);
+this.m_controllerList === t && (this.m_controllerList = t.m_next);
+--this.m_controllerCount;
+t.m_prev = null;
+t.m_next = null;
+return t;
+};
+e.Step_s_step = new on();
+e.Step_s_stepTimer = new U();
+e.Step_s_timer = new U();
+e.DrawDebugData_s_color = new z(0, 0, 0);
+e.DrawDebugData_s_vs = P.MakeArray(4);
+e.DrawDebugData_s_xf = new N();
+e.QueryFixtureShape_s_aabb = new Tt();
+e.RayCast_s_input = new St();
+e.RayCast_s_output = new wt();
+e.RayCast_s_point = new P();
+e.DrawJoint_s_p1 = new P();
+e.DrawJoint_s_p2 = new P();
+e.DrawJoint_s_color = new z(.5, .8, .8);
+e.DrawJoint_s_c = new z();
+e.DrawShape_s_ghostColor = new z();
+e.SolveTOI_s_subStep = new on();
+e.SolveTOI_s_backup = new k();
+e.SolveTOI_s_backup1 = new k();
+e.SolveTOI_s_backup2 = new k();
+e.SolveTOI_s_toi_input = new qt();
+e.SolveTOI_s_toi_output = new Xt();
+return e;
+})(), Gn = (function() {
+return function(t, e) {
+this.prevBody = null;
+this.nextBody = null;
+this.prevController = null;
+this.nextController = null;
+this.controller = t;
+this.body = e;
+};
+})(), Un = (function() {
+function t() {
+this.m_bodyList = null;
+this.m_bodyCount = 0;
+this.m_prev = null;
+this.m_next = null;
+}
+t.prototype.GetNext = function() {
+return this.m_next;
+};
+t.prototype.GetPrev = function() {
+return this.m_prev;
+};
+t.prototype.GetBodyList = function() {
+return this.m_bodyList;
+};
+t.prototype.AddBody = function(t) {
+var e = new Gn(this, t);
+e.nextBody = this.m_bodyList;
+e.prevBody = null;
+this.m_bodyList && (this.m_bodyList.prevBody = e);
+this.m_bodyList = e;
+++this.m_bodyCount;
+e.nextController = t.m_controllerList;
+e.prevController = null;
+t.m_controllerList && (t.m_controllerList.prevController = e);
+t.m_controllerList = e;
+++t.m_controllerCount;
+};
+t.prototype.RemoveBody = function(t) {
+if (this.m_bodyCount <= 0) throw new Error();
+for (var e = this.m_bodyList; e && e.body !== t; ) e = e.nextBody;
+if (null === e) throw new Error();
+e.prevBody && (e.prevBody.nextBody = e.nextBody);
+e.nextBody && (e.nextBody.prevBody = e.prevBody);
+this.m_bodyList === e && (this.m_bodyList = e.nextBody);
+--this.m_bodyCount;
+e.nextController && (e.nextController.prevController = e.prevController);
+e.prevController && (e.prevController.nextController = e.nextController);
+t.m_controllerList === e && (t.m_controllerList = e.nextController);
+--t.m_controllerCount;
+};
+t.prototype.Clear = function() {
+for (;this.m_bodyList; ) this.RemoveBody(this.m_bodyList.body);
+this.m_bodyCount = 0;
+};
+return t;
+})(), jn = (function(t) {
+$e(e, t);
+function e() {
+var e = null !== t && t.apply(this, arguments) || this;
+e.normal = new P(0, 1);
+e.offset = 0;
+e.density = 0;
+e.velocity = new P(0, 0);
+e.linearDrag = 0;
+e.angularDrag = 0;
+e.useDensity = !1;
+e.useWorldGravity = !0;
+e.gravity = new P(0, 0);
+return e;
+}
+e.prototype.Step = function(t) {
+if (this.m_bodyList) {
+this.useWorldGravity && this.gravity.Copy(this.m_bodyList.body.GetWorld().GetGravity());
+for (var e = this.m_bodyList; e; e = e.nextBody) {
+var i = e.body;
+if (i.IsAwake()) {
+for (var r = new P(), s = new P(), o = 0, a = 0, c = i.GetFixtureList(); c; c = c.m_next) {
+var l = new P(), h = c.GetShape().ComputeSubmergedArea(this.normal, this.offset, i.GetTransform(), l);
+o += h;
+r.x += h * l.x;
+r.y += h * l.y;
+var u = 0;
+a += h * (u = this.useDensity ? c.GetDensity() : 1);
+s.x += h * l.x * u;
+s.y += h * l.y * u;
+}
+r.x /= o;
+r.y /= o;
+s.x /= a;
+s.y /= a;
+if (!(o < n)) {
+var _ = this.gravity.Clone().SelfNeg();
+_.SelfMul(this.density * o);
+i.ApplyForce(_, s);
+var f = i.GetLinearVelocityFromWorldPoint(r, new P());
+f.SelfSub(this.velocity);
+f.SelfMul(-this.linearDrag * o);
+i.ApplyForce(f, r);
+i.ApplyTorque(-i.GetInertia() / i.GetMass() * o * i.GetAngularVelocity() * this.angularDrag);
+}
+}
+}
+}
+};
+e.prototype.Draw = function(t) {
+var e = 100, i = new P(), n = new P();
+i.x = this.normal.x * this.offset + this.normal.y * e;
+i.y = this.normal.y * this.offset - this.normal.x * e;
+n.x = this.normal.x * this.offset - this.normal.y * e;
+n.y = this.normal.y * this.offset + this.normal.x * e;
+var r = new z(0, 0, .8);
+t.DrawSegment(i, n, r);
+};
+return e;
+})(Un), Wn = (function(t) {
+$e(e, t);
+function e() {
+var e = null !== t && t.apply(this, arguments) || this;
+e.A = new P(0, 0);
+return e;
+}
+e.prototype.Step = function(t) {
+for (var i = P.MulSV(t.dt, this.A, e.Step_s_dtA), n = this.m_bodyList; n; n = n.nextBody) {
+var r = n.body;
+r.IsAwake() && r.SetLinearVelocity(P.AddVV(r.GetLinearVelocity(), i, P.s_t0));
+}
+};
+e.prototype.Draw = function(t) {};
+e.Step_s_dtA = new P();
+return e;
+})(Un), Hn = (function(t) {
+$e(e, t);
+function e() {
+var e = null !== t && t.apply(this, arguments) || this;
+e.F = new P(0, 0);
+return e;
+}
+e.prototype.Step = function(t) {
+for (var e = this.m_bodyList; e; e = e.nextBody) {
+var i = e.body;
+i.IsAwake() && i.ApplyForce(this.F, i.GetWorldCenter());
+}
+};
+e.prototype.Draw = function(t) {};
+return e;
+})(Un), qn = (function(t) {
+$e(e, t);
+function e() {
+var e = null !== t && t.apply(this, arguments) || this;
+e.G = 1;
+e.invSqr = !0;
+return e;
+}
+e.prototype.Step = function(t) {
+if (this.invSqr) for (var i = this.m_bodyList; i; i = i.nextBody) for (var r = (l = i.body).GetWorldCenter(), s = l.GetMass(), o = this.m_bodyList; o && o !== i; o = o.nextBody) {
+var a = (h = o.body).GetWorldCenter(), c = h.GetMass();
+if (!((f = (u = a.x - r.x) * u + (_ = a.y - r.y) * _) < n)) {
+(d = e.Step_s_f.Set(u, _)).SelfMul(this.G / f / w(f) * s * c);
+l.IsAwake() && l.ApplyForce(d, r);
+h.IsAwake() && h.ApplyForce(d.SelfMul(-1), a);
+}
+} else for (i = this.m_bodyList; i; i = i.nextBody) {
+var l;
+for (r = (l = i.body).GetWorldCenter(), s = l.GetMass(), o = this.m_bodyList; o && o !== i; o = o.nextBody) {
+var h, u, _, f;
+a = (h = o.body).GetWorldCenter(), c = h.GetMass();
+if (!((f = (u = a.x - r.x) * u + (_ = a.y - r.y) * _) < n)) {
+var d;
+(d = e.Step_s_f.Set(u, _)).SelfMul(this.G / f * s * c);
+l.IsAwake() && l.ApplyForce(d, r);
+h.IsAwake() && h.ApplyForce(d.SelfMul(-1), a);
+}
+}
+}
+};
+e.prototype.Draw = function(t) {};
+e.Step_s_f = new P();
+return e;
+})(Un), Xn = (function(t) {
+$e(e, t);
+function e() {
+var e = null !== t && t.apply(this, arguments) || this;
+e.T = new F();
+e.maxTimestep = 0;
+return e;
+}
+e.prototype.Step = function(t) {
+var i = t.dt;
+if (!(i <= n)) {
+i > this.maxTimestep && this.maxTimestep > 0 && (i = this.maxTimestep);
+for (var r = this.m_bodyList; r; r = r.nextBody) {
+var s = r.body;
+if (s.IsAwake()) {
+var o = s.GetWorldVector(F.MulMV(this.T, s.GetLocalVector(s.GetLinearVelocity(), P.s_t0), P.s_t1), e.Step_s_damping);
+s.SetLinearVelocity(P.AddVV(s.GetLinearVelocity(), P.MulSV(i, o, P.s_t0), P.s_t1));
+}
+}
+}
+};
+e.prototype.Draw = function(t) {};
+e.prototype.SetAxisAligned = function(t, e) {
+this.T.ex.x = -t;
+this.T.ex.y = 0;
+this.T.ey.x = 0;
+this.T.ey.y = -e;
+this.maxTimestep = t > 0 || e > 0 ? 1 / x(t, e) : 0;
+};
+e.Step_s_damping = new P();
+return e;
+})(Un), Yn = (function() {
+return function() {
+this.vertices = [];
+this.count = 0;
+this.masses = [];
+this.gravity = new P(0, 0);
+this.damping = .1;
+this.k2 = .9;
+this.k3 = .1;
+};
+})(), Jn = (function() {
+function t() {
+this.m_count = 0;
+this.m_ps = [];
+this.m_p0s = [];
+this.m_vs = [];
+this.m_ims = [];
+this.m_Ls = [];
+this.m_as = [];
+this.m_gravity = new P();
+this.m_damping = 0;
+this.m_k2 = 1;
+this.m_k3 = .1;
+}
+t.prototype.GetVertexCount = function() {
+return this.m_count;
+};
+t.prototype.GetVertices = function() {
+return this.m_ps;
+};
+t.prototype.Initialize = function(t) {
+this.m_count = t.count;
+this.m_ps = P.MakeArray(this.m_count);
+this.m_p0s = P.MakeArray(this.m_count);
+this.m_vs = P.MakeArray(this.m_count);
+this.m_ims = m(this.m_count);
+for (var e = 0; e < this.m_count; ++e) {
+this.m_ps[e].Copy(t.vertices[e]);
+this.m_p0s[e].Copy(t.vertices[e]);
+this.m_vs[e].SetZero();
+var i = t.masses[e];
+this.m_ims[e] = i > 0 ? 1 / i : 0;
+}
+var n = this.m_count - 1, r = this.m_count - 2;
+this.m_Ls = m(n);
+this.m_as = m(r);
+for (e = 0; e < n; ++e) {
+var s = this.m_ps[e], o = this.m_ps[e + 1];
+this.m_Ls[e] = P.DistanceVV(s, o);
+}
+for (e = 0; e < r; ++e) {
+s = this.m_ps[e], o = this.m_ps[e + 1];
+var a = this.m_ps[e + 2], c = P.SubVV(o, s, P.s_t0), l = P.SubVV(a, o, P.s_t1), h = P.CrossVV(c, l), u = P.DotVV(c, l);
+this.m_as[e] = I(h, u);
+}
+this.m_gravity.Copy(t.gravity);
+this.m_damping = t.damping;
+this.m_k2 = t.k2;
+this.m_k3 = t.k3;
+};
+t.prototype.Step = function(t, e) {
+if (0 !== t) {
+for (var i = Math.exp(-t * this.m_damping), n = 0; n < this.m_count; ++n) {
+this.m_p0s[n].Copy(this.m_ps[n]);
+this.m_ims[n] > 0 && this.m_vs[n].SelfMulAdd(t, this.m_gravity);
+this.m_vs[n].SelfMul(i);
+this.m_ps[n].SelfMulAdd(t, this.m_vs[n]);
+}
+for (n = 0; n < e; ++n) {
+this.SolveC2();
+this.SolveC3();
+this.SolveC2();
+}
+var r = 1 / t;
+for (n = 0; n < this.m_count; ++n) P.MulSV(r, P.SubVV(this.m_ps[n], this.m_p0s[n], P.s_t0), this.m_vs[n]);
+}
+};
+t.prototype.SolveC2 = function() {
+for (var e = this.m_count - 1, i = 0; i < e; ++i) {
+var n = this.m_ps[i], r = this.m_ps[i + 1], s = P.SubVV(r, n, t.s_d), o = s.Normalize(), a = this.m_ims[i], c = this.m_ims[i + 1];
+if (a + c !== 0) {
+var l = a / (a + c), h = c / (a + c);
+n.SelfMulSub(this.m_k2 * l * (this.m_Ls[i] - o), s);
+r.SelfMulAdd(this.m_k2 * h * (this.m_Ls[i] - o), s);
+}
+}
+};
+t.prototype.SetAngle = function(t) {
+for (var e = this.m_count - 2, i = 0; i < e; ++i) this.m_as[i] = t;
+};
+t.prototype.SolveC3 = function() {
+for (var e = this.m_count - 2, i = 0; i < e; ++i) {
+var n = this.m_ps[i], r = this.m_ps[i + 1], o = this.m_ps[i + 2], a = this.m_ims[i], c = this.m_ims[i + 1], l = this.m_ims[i + 2], h = P.SubVV(r, n, t.s_d1), u = P.SubVV(o, r, t.s_d2), _ = h.LengthSquared(), f = u.LengthSquared();
+if (_ * f != 0) {
+var d = P.CrossVV(h, u), m = P.DotVV(h, u), p = I(d, m), v = P.MulSV(-1 / _, h.SelfSkew(), t.s_Jd1), y = P.MulSV(1 / f, u.SelfSkew(), t.s_Jd2), g = P.NegV(v, t.s_J1), x = P.SubVV(v, y, t.s_J2), C = y, b = a * P.DotVV(g, g) + c * P.DotVV(x, x) + l * P.DotVV(C, C);
+if (0 !== b) {
+b = 1 / b;
+for (var A = p - this.m_as[i]; A > s; ) A = (p -= 2 * s) - this.m_as[i];
+for (;A < -s; ) A = (p += 2 * s) - this.m_as[i];
+var S = -this.m_k3 * b * A;
+n.SelfMulAdd(a * S, g);
+r.SelfMulAdd(c * S, x);
+o.SelfMulAdd(l * S, C);
+}
+}
+}
+};
+t.prototype.Draw = function(t) {
+for (var e = new z(.4, .5, .7), i = 0; i < this.m_count - 1; ++i) t.DrawSegment(this.m_ps[i], this.m_ps[i + 1], e);
+};
+t.s_d = new P();
+t.s_d1 = new P();
+t.s_d2 = new P();
+t.s_Jd1 = new P();
+t.s_Jd2 = new P();
+t.s_J1 = new P();
+t.s_J2 = new P();
+return t;
+})();
+t.b2Assert = function(t) {
+for (var e = [], i = 1; i < arguments.length; i++) e[i - 1] = arguments[i];
+if (!t) throw new (Error.bind.apply(Error, [ void 0 ].concat(e)))();
+};
+t.b2Maybe = e;
+t.b2_maxFloat = i;
+t.b2_epsilon = n;
+t.b2_epsilon_sq = r;
+t.b2_pi = s;
+t.b2_maxManifoldPoints = o;
+t.b2_maxPolygonVertices = a;
+t.b2_aabbExtension = .1;
+t.b2_aabbMultiplier = 2;
+t.b2_linearSlop = c;
+t.b2_angularSlop = l;
+t.b2_polygonRadius = h;
+t.b2_maxSubSteps = 8;
+t.b2_maxTOIContacts = 32;
+t.b2_velocityThreshold = 1;
+t.b2_maxLinearCorrection = .2;
+t.b2_maxAngularCorrection = .13962634015955555;
+t.b2_maxTranslation = 2;
+t.b2_maxTranslationSquared = 4;
+t.b2_maxRotation = 1.570796326795;
+t.b2_maxRotationSquared = 2.4674011002726646;
+t.b2_baumgarte = .2;
+t.b2_toiBaumgarte = .75;
+t.b2_invalidParticleIndex = u;
+t.b2_maxParticleIndex = 2147483647;
+t.b2_particleStride = .75;
+t.b2_minParticleWeight = 1;
+t.b2_maxParticlePressure = .25;
+t.b2_maxParticleForce = .5;
+t.b2_maxTriadDistance = 2;
+t.b2_maxTriadDistanceSquared = 4;
+t.b2_minParticleSystemBufferCapacity = 256;
+t.b2_barrierCollisionTime = 2.5;
+t.b2_timeToSleep = .5;
+t.b2_linearSleepTolerance = .01;
+t.b2_angularSleepTolerance = .03490658503988889;
+t.b2Alloc = function(t) {
+return null;
+};
+t.b2Free = function(t) {};
+t.b2Log = function(t) {
+for (var e = [], i = 1; i < arguments.length; i++) e[i - 1] = arguments[i];
+};
+t.b2Version = _;
+t.b2_version = f;
+t.b2_branch = "master";
+t.b2_commit = "fbf51801d80fc389d43dc46524520e89043b6faf";
+t.b2ParseInt = function(t) {
+return parseInt(t, 10);
+};
+t.b2ParseUInt = function(t) {
+return Math.abs(parseInt(t, 10));
+};
+t.b2MakeArray = d;
+t.b2MakeNullArray = function(t) {
+for (var e = [], i = 0; i < t; ++i) e.push(null);
+return e;
+};
+t.b2MakeNumberArray = m;
+t.b2_pi_over_180 = p;
+t.b2_180_over_pi = v;
+t.b2_two_pi = 6.28318530718;
+t.b2Abs = y;
+t.b2Min = g;
+t.b2Max = x;
+t.b2Clamp = C;
+t.b2Swap = function(t, e) {
+var i = t[0];
+t[0] = e[0];
+e[0] = i;
+};
+t.b2IsValid = b;
+t.b2Sq = A;
+t.b2InvSqrt = S;
+t.b2Sqrt = w;
+t.b2Pow = T;
+t.b2DegToRad = function(t) {
+return t * p;
+};
+t.b2RadToDeg = function(t) {
+return t * v;
+};
+t.b2Cos = E;
+t.b2Sin = M;
+t.b2Acos = B;
+t.b2Asin = D;
+t.b2Atan2 = I;
+t.b2NextPowerOfTwo = function(t) {
+t |= t >> 1 & 2147483647;
+t |= t >> 2 & 1073741823;
+t |= t >> 4 & 268435455;
+t |= t >> 8 & 16777215;
+return 1 + (t |= t >> 16 & 65535);
+};
+t.b2IsPowerOfTwo = function(t) {
+return t > 0 && 0 == (t & t - 1);
+};
+t.b2Random = function() {
+return 2 * Math.random() - 1;
+};
+t.b2RandomRange = function(t, e) {
+return (e - t) * Math.random() + t;
+};
+t.b2Vec2 = P;
+t.b2Vec2_zero = R;
+t.b2Vec3 = L;
+t.b2Mat22 = F;
+t.b2Mat33 = O;
+t.b2Rot = V;
+t.b2Transform = N;
+t.b2Sweep = k;
+t.b2Color = z;
+t.b2Draw = G;
+t.b2Timer = U;
+t.b2Counter = j;
+t.b2GrowableStack = W;
+t.b2BlockAllocator = H;
+t.b2StackAllocator = q;
+t.b2ContactFeature = yt;
+t.b2ContactID = gt;
+t.b2ManifoldPoint = xt;
+t.b2Manifold = Ct;
+t.b2WorldManifold = bt;
+t.b2GetPointStates = function(e, i, n, r) {
+var s;
+for (s = 0; s < n.pointCount; ++s) {
+var a = n.points[s].id.key;
+e[s] = t.b2PointState.b2_removeState;
+for (var c = 0, l = r.pointCount; c < l; ++c) if (r.points[c].id.key === a) {
+e[s] = t.b2PointState.b2_persistState;
+break;
+}
+}
+for (;s < o; ++s) e[s] = t.b2PointState.b2_nullState;
+for (s = 0; s < r.pointCount; ++s) {
+a = r.points[s].id.key;
+i[s] = t.b2PointState.b2_addState;
+for (c = 0, l = n.pointCount; c < l; ++c) if (n.points[c].id.key === a) {
+i[s] = t.b2PointState.b2_persistState;
+break;
+}
+}
+for (;s < o; ++s) i[s] = t.b2PointState.b2_nullState;
+};
+t.b2ClipVertex = At;
+t.b2RayCastInput = St;
+t.b2RayCastOutput = wt;
+t.b2AABB = Tt;
+t.b2TestOverlapAABB = Et;
+t.b2ClipSegmentToLine = Mt;
+t.b2TestOverlapShape = Pt;
+t.b2DistanceProxy = X;
+t.b2SimplexCache = Y;
+t.b2DistanceInput = J;
+t.b2DistanceOutput = Z;
+t.b2ShapeCastInput = K;
+t.b2ShapeCastOutput = Q;
+t.b2_gjk_reset = function() {
+t.b2_gjkCalls = 0;
+t.b2_gjkIters = 0;
+t.b2_gjkMaxIters = 0;
+};
+t.b2SimplexVertex = $;
+t.b2Simplex = tt;
+t.b2Distance = lt;
+t.b2ShapeCast = function(t, e) {
+t.iterations = 0;
+t.lambda = 1;
+t.normal.SetZero();
+t.point.SetZero();
+var i = e.proxyA, n = e.proxyB, r = x(i.m_radius, h) + x(n.m_radius, h), s = e.transformA, o = e.transformB, a = e.translationB, l = ht.Set(0, 0), u = 0, _ = ut;
+_.m_count = 0;
+for (var f = _.m_vertices, d = i.GetSupport(V.MulTRV(s.q, P.NegV(a, P.s_t1), P.s_t0)), m = N.MulXV(s, i.GetVertex(d), _t), p = n.GetSupport(V.MulTRV(o.q, a, P.s_t0)), v = N.MulXV(o, n.GetVertex(p), ft), g = P.SubVV(m, v, dt), C = x(h, r - h), b = .5 * c, A = 0; A < 20 && y(g.Length() - C) > b; ) {
+t.iterations += 1;
+d = i.GetSupport(V.MulTRV(s.q, P.NegV(g, P.s_t1), P.s_t0));
+m = N.MulXV(s, i.GetVertex(d), _t);
+p = n.GetSupport(V.MulTRV(o.q, g, P.s_t0));
+v = N.MulXV(o, n.GetVertex(p), ft);
+var S = P.SubVV(m, v, mt);
+g.Normalize();
+var w = P.DotVV(g, S), T = P.DotVV(g, a);
+if (w - C > u * T) {
+if (T <= 0) return !1;
+if ((u = (w - C) / T) > 1) return !1;
+l.Copy(g).SelfNeg();
+_.m_count = 0;
+}
+var E = f[_.m_count];
+E.indexA = p;
+E.wA.Copy(v).SelfMulAdd(u, a);
+E.indexB = d;
+E.wB.Copy(m);
+E.w.Copy(E.wB).SelfSub(E.wA);
+E.a = 1;
+_.m_count += 1;
+switch (_.m_count) {
+case 1:
+break;
+
+case 2:
+_.Solve2();
+break;
+
+case 3:
+_.Solve3();
+}
+if (3 === _.m_count) return !1;
+_.GetClosestPoint(g);
+++A;
+}
+var M = pt, B = vt;
+_.GetWitnessPoints(M, B);
+if (g.LengthSquared() > 0) {
+l.Copy(g).SelfNeg();
+l.Normalize();
+}
+t.normal.Copy(l);
+t.lambda = u;
+t.iterations = A;
+return !0;
+};
+t.b2Pair = Ot;
+t.b2BroadPhase = Vt;
+t.b2PairLessThan = Nt;
+t.b2TreeNode = Lt;
+t.b2DynamicTree = Ft;
+t.b2_toi_reset = function() {
+t.b2_toiTime = 0;
+t.b2_toiMaxTime = 0;
+t.b2_toiCalls = 0;
+t.b2_toiIters = 0;
+t.b2_toiMaxIters = 0;
+t.b2_toiRootIters = 0;
+t.b2_toiMaxRootIters = 0;
+};
+t.b2TOIInput = qt;
+t.b2TOIOutput = Xt;
+t.b2SeparationFunction = Yt;
+t.b2TimeOfImpact = re;
+t.b2CollideCircles = ae;
+t.b2CollidePolygonAndCircle = ue;
+t.b2CollidePolygons = Fe;
+t.b2CollideEdgeAndCircle = We;
+t.b2CollideEdgeAndPolygon = Je;
+t.b2MassData = Ze;
+t.b2Shape = Ke;
+t.b2CircleShape = ti;
+t.b2PolygonShape = ei;
+t.b2EdgeShape = ii;
+t.b2ChainShape = ni;
+t.b2Filter = ri;
+t.b2FixtureDef = si;
+t.b2FixtureProxy = oi;
+t.b2Fixture = ai;
+t.b2BodyDef = ci;
+t.b2Body = li;
+t.b2World = zn;
+t.b2DestructionListener = Ki;
+t.b2ContactFilter = Qi;
+t.b2ContactImpulse = $i;
+t.b2ContactListener = tn;
+t.b2QueryCallback = en;
+t.b2RayCastCallback = nn;
+t.b2Island = pn;
+t.b2Profile = sn;
+t.b2TimeStep = on;
+t.b2Position = an;
+t.b2Velocity = cn;
+t.b2SolverData = ln;
+t.b2ContactManager = rn;
+t.b2MixFriction = Ni;
+t.b2MixRestitution = ki;
+t.b2ContactEdge = zi;
+t.b2Contact = Gi;
+t.b2ContactRegister = Ji;
+t.b2ContactFactory = Zi;
+t.g_blockSolve = !1;
+t.b2VelocityConstraintPoint = hn;
+t.b2ContactVelocityConstraint = un;
+t.b2ContactPositionConstraint = _n;
+t.b2ContactSolverDef = fn;
+t.b2PositionSolverManifold = dn;
+t.b2ContactSolver = mn;
+t.b2CircleContact = Ui;
+t.b2PolygonContact = ji;
+t.b2PolygonAndCircleContact = Wi;
+t.b2EdgeAndCircleContact = Hi;
+t.b2EdgeAndPolygonContact = qi;
+t.b2ChainAndCircleContact = Xi;
+t.b2ChainAndPolygonContact = Yi;
+t.b2Jacobian = hi;
+t.b2JointEdge = ui;
+t.b2JointDef = _i;
+t.b2Joint = fi;
+t.b2AreaJointDef = pi;
+t.b2AreaJoint = vi;
+t.b2DistanceJointDef = di;
+t.b2DistanceJoint = mi;
+t.b2FrictionJointDef = yi;
+t.b2FrictionJoint = gi;
+t.b2GearJointDef = xi;
+t.b2GearJoint = Ci;
+t.b2MotorJointDef = bi;
+t.b2MotorJoint = Ai;
+t.b2MouseJointDef = Si;
+t.b2MouseJoint = wi;
+t.b2PrismaticJointDef = Ti;
+t.b2PrismaticJoint = Ei;
+t.b2_minPulleyLength = 2;
+t.b2PulleyJointDef = Mi;
+t.b2PulleyJoint = Bi;
+t.b2RevoluteJointDef = Di;
+t.b2RevoluteJoint = Ii;
+t.b2RopeJointDef = Pi;
+t.b2RopeJoint = Ri;
+t.b2WeldJointDef = Li;
+t.b2WeldJoint = Fi;
+t.b2WheelJointDef = Oi;
+t.b2WheelJoint = Vi;
+t.b2ControllerEdge = Gn;
+t.b2Controller = Un;
+t.b2BuoyancyController = jn;
+t.b2ConstantAccelController = Wn;
+t.b2ConstantForceController = Hn;
+t.b2GravityController = qn;
+t.b2TensorDampingController = Xn;
+t.b2ParticleDef = vn;
+t.b2CalculateParticleIterations = yn;
+t.b2ParticleHandle = gn;
+t.b2ParticleGroupDef = xn;
+t.b2ParticleGroup = Cn;
+t.b2GrowableBuffer = Rn;
+t.b2FixtureParticleQueryCallback = Ln;
+t.b2ParticleContact = Fn;
+t.b2ParticleBodyContact = On;
+t.b2ParticlePair = Vn;
+t.b2ParticleTriad = Nn;
+t.b2ParticleSystemDef = kn;
+t.b2RopeDef = Yn;
+t.b2Rope = Jn;
+Object.defineProperty(t, "__esModule", {
+value: !0
+});
+}));
+}), {} ],
+402: [ (function(i, n, r) {
+"use strict";
+var s = "undefined" === ("object" === (e = typeof window) ? t(window) : e) ? global : window;
+s.cc = s.cc || {};
+s._cc = s._cc || {};
+i("./predefine");
+i("./polyfill/string");
+i("./polyfill/misc");
+i("./polyfill/array");
+i("./polyfill/object");
+i("./polyfill/array-buffer");
+i("./polyfill/number");
+i("./polyfill/typescript");
+i("./cocos2d/core/predefine");
+i("./cocos2d");
+i("./extends");
+0;
+n.exports = s.cc;
+}), {
+"./cocos2d": 328,
+"./cocos2d/core/predefine": 226,
+"./extends": 388,
+"./package": void 0,
+"./polyfill/array": 404,
+"./polyfill/array-buffer": 403,
+"./polyfill/misc": 405,
+"./polyfill/number": 406,
+"./polyfill/object": 407,
+"./polyfill/string": 408,
+"./polyfill/typescript": 409,
+"./predefine": 410
+} ],
+403: [ (function(t, e, i) {
+"use strict";
+if (!ArrayBuffer.isView) {
+var n = Object.getPrototypeOf(Object.getPrototypeOf(new Uint8Array())).constructor;
+ArrayBuffer.isView = function(t) {
+return t instanceof n;
+};
+}
+}), {} ],
+404: [ (function(t, e, i) {
+"use strict";
+Array.isArray || (Array.isArray = function(t) {
+return "[object Array]" === Object.prototype.toString.call(t);
+});
+Array.prototype.find || (Array.prototype.find = function(t) {
+for (var e = this.length, i = 0; i < e; i++) {
+var n = this[i];
+if (t.call(this, n, i, this)) return n;
+}
+});
+Array.prototype.includes || (Array.prototype.includes = function(t) {
+return -1 !== this.indexOf(t);
+});
+}), {} ],
+405: [ (function(i, n, r) {
+"use strict";
+Math.sign || (Math.sign = function(t) {
+return 0 === (t = +t) || isNaN(t) ? t : t > 0 ? 1 : -1;
+});
+Math.log2 || (Math.log2 = function(t) {
+return Math.log(t) * Math.LOG2E;
+});
+Number.isInteger || (Number.isInteger = function(i) {
+return "number" === ("object" === (e = typeof i) ? t(i) : e) && isFinite(i) && Math.floor(i) === i;
+});
+var s = window.performance || Date, o = Object.create(null);
+console.time = function(t) {
+o[t] = s.now();
+};
+console.timeEnd = function(t) {
+var e = o[t], i = s.now() - e;
+console.log(t + ": " + i + "ms");
+};
+}), {} ],
+406: [ (function(t, e, i) {
+"use strict";
+Number.parseFloat = Number.parseFloat || parseFloat;
+Number.parseInt = Number.parseInt || parseInt;
+}), {} ],
+407: [ (function(t, e, i) {
+"use strict";
+Object.assign || (Object.assign = function(t, e) {
+return cc.js.mixin(t, e);
+});
+Object.getOwnPropertyDescriptors || (Object.getOwnPropertyDescriptors = function(t) {
+var e = {}, i = Object.getOwnPropertyNames(t);
+Object.getOwnPropertySymbols && (i = i.concat(Object.getOwnPropertySymbols(t)));
+for (var n = 0; n < i.length; ++n) {
+var r = i[n];
+e[r] = Object.getOwnPropertyDescriptor(t, r);
+}
+return e;
+});
+}), {} ],
+408: [ (function(i, n, r) {
+"use strict";
+String.prototype.startsWith || (String.prototype.startsWith = function(t, e) {
+e = e || 0;
+return this.lastIndexOf(t, e) === e;
+});
+String.prototype.endsWith || (String.prototype.endsWith = function(i, n) {
+("undefined" === ("object" === (e = typeof n) ? t(n) : e) || n > this.length) && (n = this.length);
+n -= i.length;
+var r = this.indexOf(i, n);
+return -1 !== r && r === n;
+});
+String.prototype.trimLeft || (String.prototype.trimLeft = function() {
+return this.replace(/^\s+/, "");
+});
+}), {} ],
+409: [ (function(i, n, r) {
+"use strict";
+var s = Object.setPrototypeOf || {
+__proto__: []
+} instanceof Array && function(t, e) {
+t.__proto__ = e;
+} || function(t, e) {
+for (var i in e) e.hasOwnProperty(i) && (t[i] = e[i]);
+};
+window.__extends = function(t, e) {
+s(t, e);
+function i() {
+this.constructor = t;
+}
+t.prototype = null === e ? Object.create(e) : (i.prototype = e.prototype, new i());
+};
+window.__assign = Object.assign || function(t) {
+for (var e, i = 1, n = arguments.length; i < n; i++) {
+e = arguments[i];
+for (var r in e) Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]);
+}
+return t;
+};
+window.__rest = function(i, n) {
+var r = {};
+for (var s in i) Object.prototype.hasOwnProperty.call(i, s) && n.indexOf(s) < 0 && (r[s] = i[s]);
+if (null != i && "function" === ("object" === (e = typeof Object.getOwnPropertySymbols) ? t(Object.getOwnPropertySymbols) : e)) {
+var o = 0;
+for (s = Object.getOwnPropertySymbols(i); o < s.length; o++) n.indexOf(s[o]) < 0 && (r[s[o]] = i[s[o]]);
+}
+return r;
+};
+window.__decorate = function(i, n, r, s) {
+var o, a = arguments.length, c = a < 3 ? n : null === s ? s = Object.getOwnPropertyDescriptor(n, r) : s;
+if ("object" === ("object" === (e = typeof Reflect) ? t(Reflect) : e) && "function" === ("object" === (e = typeof Reflect.decorate) ? t(Reflect.decorate) : e)) c = Reflect.decorate(i, n, r, s); else for (var l = i.length - 1; l >= 0; l--) (o = i[l]) && (c = (a < 3 ? o(c) : a > 3 ? o(n, r, c) : o(n, r)) || c);
+return a > 3 && c && Object.defineProperty(n, r, c), c;
+};
+window.__param = function(t, e) {
+return function(i, n) {
+e(i, n, t);
+};
+};
+window.__metadata = function(i, n) {
+if ("object" === ("object" === (e = typeof Reflect) ? t(Reflect) : e) && "function" === ("object" === (e = typeof Reflect.metadata) ? t(Reflect.metadata) : e)) return Reflect.metadata(i, n);
+};
+window.__awaiter = function(t, e, i, n) {
+return new (i || (i = Promise))(function(r, s) {
+function o(t) {
+try {
+c(n.next(t));
+} catch (t) {
+s(t);
+}
+}
+function a(t) {
+try {
+c(n.throw(t));
+} catch (t) {
+s(t);
+}
+}
+function c(t) {
+t.done ? r(t.value) : new i(function(e) {
+e(t.value);
+}).then(o, a);
+}
+c((n = n.apply(t, e || [])).next());
+});
+};
+window.__generator = function(i, n) {
+var r, s, o, a, c = {
+label: 0,
+sent: function() {
+if (1 & o[0]) throw o[1];
+return o[1];
+},
+trys: [],
+ops: []
+};
+return a = {
+next: l(0),
+throw: l(1),
+return: l(2)
+}, "function" === ("object" === (e = typeof Symbol) ? t(Symbol) : e) && (a[Symbol.iterator] = function() {
+return this;
+}), a;
+function l(t) {
+return function(e) {
+return h([ t, e ]);
+};
+}
+function h(t) {
+if (r) throw new TypeError("Generator is already executing.");
+for (;c; ) try {
+if (r = 1, s && (o = 2 & t[0] ? s.return : t[0] ? s.throw || ((o = s.return) && o.call(s),
+0) : s.next) && !(o = o.call(s, t[1])).done) return o;
+(s = 0, o) && (t = [ 2 & t[0], o.value ]);
+switch (t[0]) {
+case 0:
+case 1:
+o = t;
+break;
+
+case 4:
+c.label++;
+return {
+value: t[1],
+done: !1
+};
+
+case 5:
+c.label++;
+s = t[1];
+t = [ 0 ];
+continue;
+
+case 7:
+t = c.ops.pop();
+c.trys.pop();
+continue;
+
+default:
+if (!(o = c.trys, o = o.length > 0 && o[o.length - 1]) && (6 === t[0] || 2 === t[0])) {
+c = 0;
+continue;
+}
+if (3 === t[0] && (!o || t[1] > o[0] && t[1] < o[3])) {
+c.label = t[1];
+break;
+}
+if (6 === t[0] && c.label < o[1]) {
+c.label = o[1];
+o = t;
+break;
+}
+if (o && c.label < o[2]) {
+c.label = o[2];
+c.ops.push(t);
+break;
+}
+o[2] && c.ops.pop();
+c.trys.pop();
+continue;
+}
+t = n.call(i, c);
+} catch (e) {
+t = [ 6, e ];
+s = 0;
+} finally {
+r = o = 0;
+}
+if (5 & t[0]) throw t[1];
+return {
+value: t[0] ? t[1] : void 0,
+done: !0
+};
+}
+};
+window.__exportStar = function(t, e) {
+for (var i in t) e.hasOwnProperty(i) || (e[i] = t[i]);
+};
+window.__values = function(i) {
+var n = "function" === ("object" === (e = typeof Symbol) ? t(Symbol) : e) && i[Symbol.iterator], r = 0;
+return n ? n.call(i) : {
+next: function() {
+i && r >= i.length && (i = void 0);
+return {
+value: i && i[r++],
+done: !i
+};
+}
+};
+};
+window.__read = function(i, n) {
+var r = "function" === ("object" === (e = typeof Symbol) ? t(Symbol) : e) && i[Symbol.iterator];
+if (!r) return i;
+var s, o, a = r.call(i), c = [];
+try {
+for (;(void 0 === n || n-- > 0) && !(s = a.next()).done; ) c.push(s.value);
+} catch (t) {
+o = {
+error: t
+};
+} finally {
+try {
+s && !s.done && (r = a.return) && r.call(a);
+} finally {
+if (o) throw o.error;
+}
+}
+return c;
+};
+window.__spread = function() {
+for (var t = [], e = 0; e < arguments.length; e++) t = t.concat(__read(arguments[e]));
+return t;
+};
+window.__await = function(t) {
+return this instanceof __await ? (this.v = t, this) : new __await(t);
+};
+window.__asyncGenerator = function(t, e, i) {
+if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
+var n, r = i.apply(t, e || []), s = [];
+return n = {}, o("next"), o("throw"), o("return"), n[Symbol.asyncIterator] = function() {
+return this;
+}, n;
+function o(t) {
+r[t] && (n[t] = function(e) {
+return new Promise(function(i, n) {
+s.push([ t, e, i, n ]) > 1 || a(t, e);
+});
+});
+}
+function a(t, e) {
+try {
+c(r[t](e));
+} catch (t) {
+u(s[0][3], t);
+}
+}
+function c(t) {
+t.value instanceof __await ? Promise.resolve(t.value.v).then(l, h) : u(s[0][2], t);
+}
+function l(t) {
+a("next", t);
+}
+function h(t) {
+a("throw", t);
+}
+function u(t, e) {
+(t(e), s.shift(), s.length) && a(s[0][0], s[0][1]);
+}
+};
+window.__asyncDelegator = function(t) {
+var e, i;
+return e = {}, n("next"), n("throw", (function(t) {
+throw t;
+})), n("return"), e[Symbol.iterator] = function() {
+return this;
+}, e;
+function n(n, r) {
+e[n] = t[n] ? function(e) {
+return (i = !i) ? {
+value: __await(t[n](e)),
+done: "return" === n
+} : r ? r(e) : e;
+} : r;
+}
+};
+window.__asyncValues = function(i) {
+if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
+var n, r = i[Symbol.asyncIterator];
+return r ? r.call(i) : (i = "function" === ("object" === (e = typeof __values) ? t(__values) : e) ? __values(i) : i[Symbol.iterator](),
+n = {}, s("next"), s("throw"), s("return"), n[Symbol.asyncIterator] = function() {
+return this;
+}, n);
+function s(t) {
+n[t] = i[t] && function(e) {
+return new Promise(function(n, r) {
+o(n, r, (e = i[t](e)).done, e.value);
+});
+};
+}
+function o(t, e, i, n) {
+Promise.resolve(n).then((function(e) {
+t({
+value: e,
+done: i
+});
+}), e);
+}
+};
+window.__makeTemplateObject = function(t, e) {
+Object.defineProperty ? Object.defineProperty(t, "raw", {
+value: e
+}) : t.raw = e;
+return t;
+};
+window.__importStar = function(t) {
+if (t && t.__esModule) return t;
+var e = {};
+if (null != t) for (var i in t) Object.hasOwnProperty.call(t, i) && (e[i] = t[i]);
+e.default = t;
+return e;
+};
+window.__importDefault = function(t) {
+return t && t.__esModule ? t : {
+default: t
+};
+};
+}), {} ],
+410: [ (function(i, n, r) {
+"use strict";
+var s = "undefined" === ("object" === (e = typeof window) ? t(window) : e) ? global : window;
+function o(i, n) {
+"undefined" === ("object" === (e = typeof s[i]) ? t(s[i]) : e) && (s[i] = n);
+}
+o("CC_BUILD", !1);
+s.CC_BUILD = !0;
+s.CC_TEST = !1;
+s.CC_EDITOR = !1;
+s.CC_PREVIEW = !1;
+s.CC_DEV = !1;
+s.CC_DEBUG = !1;
+s.CC_JSB = !0;
+s.CC_WECHATGAMESUB = !1;
+s.CC_WECHATGAME = !1;
+s.CC_QQPLAY = !1;
+s.CC_RUNTIME = !1;
+s.CC_SUPPORT_JIT = !0;
+0;
+s.CocosEngine = cc.ENGINE_VERSION = "2.1.3";
+}), {} ]
+}, {}, [ 402 ]);
+function t(t) {
+return t && t.toString && "[object CallbackConstructor]" === t.toString() ? "function" : "object";
+}
+var e = "";
+})();
\ No newline at end of file
diff --git a/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/js backups (useful for debugging)/project.js b/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/js backups (useful for debugging)/project.js
new file mode 100644
index 0000000..9c1631b
--- /dev/null
+++ b/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/js backups (useful for debugging)/project.js
@@ -0,0 +1,1884 @@
+window.__require = function e(t, n, o) {
+function r(i, c) {
+if (!n[i]) {
+if (!t[i]) {
+var s = i.split("/");
+s = s[s.length - 1];
+if (!t[s]) {
+var u = "function" == typeof __require && __require;
+if (!c && u) return u(s, !0);
+if (a) return a(s, !0);
+throw new Error("Cannot find module '" + i + "'");
+}
+}
+var p = n[i] = {
+exports: {}
+};
+t[i][0].call(p.exports, function(e) {
+return r(t[i][1][e] || e);
+}, p, p.exports, e, t, n, o);
+}
+return n[i].exports;
+}
+for (var a = "function" == typeof __require && __require, i = 0; i < o.length; i++) r(o[i]);
+return r;
+}({
+AudioConst: [ function(e, t, n) {
+"use strict";
+cc._RF.push(t, "cc4cfzECmFE6KabaiuKVCDw", "AudioConst");
+Object.defineProperty(n, "__esModule", {
+value: !0
+});
+var o = function() {
+function e() {}
+e.HomeMusic = "music_home";
+e.GameplayMusic = "music_gameplay";
+e.ButtonClick = "SFX_button";
+e.CorrectChoice = "SFX_CorrectChoice";
+e.WrongChoice = "SFX_WrongChoice";
+e.ResultScreen = "SFX_ResultScreen";
+return e;
+}();
+n.default = o;
+cc._RF.pop();
+}, {} ],
+AudioLibrary: [ function(e, t, n) {
+"use strict";
+cc._RF.push(t, "4abc9ElxBtPKqTdb14OTRsl", "AudioLibrary");
+var o = this && this.__extends || function() {
+var e = function(t, n) {
+return (e = Object.setPrototypeOf || {
+__proto__: []
+} instanceof Array && function(e, t) {
+e.__proto__ = t;
+} || function(e, t) {
+for (var n in t) t.hasOwnProperty(n) && (e[n] = t[n]);
+})(t, n);
+};
+return function(t, n) {
+e(t, n);
+function o() {
+this.constructor = t;
+}
+t.prototype = null === n ? Object.create(n) : (o.prototype = n.prototype, new o());
+};
+}(), r = this && this.__decorate || function(e, t, n, o) {
+var r, a = arguments.length, i = a < 3 ? t : null === o ? o = Object.getOwnPropertyDescriptor(t, n) : o;
+if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) i = Reflect.decorate(e, t, n, o); else for (var c = e.length - 1; c >= 0; c--) (r = e[c]) && (i = (a < 3 ? r(i) : a > 3 ? r(t, n, i) : r(t, n)) || i);
+return a > 3 && i && Object.defineProperty(t, n, i), i;
+};
+Object.defineProperty(n, "__esModule", {
+value: !0
+});
+var a = cc._decorator, i = a.ccclass, c = a.property, s = function(e) {
+o(t, e);
+function t() {
+var t = null !== e && e.apply(this, arguments) || this;
+t.bgmKeys = [];
+t.bgmClips = [];
+t.sfxKeys = [];
+t.sfxClips = [];
+return t;
+}
+t.prototype.getBGClipByKey = function(e) {
+var t = this.bgmKeys.indexOf(e);
+return -1 !== t ? this.bgmClips[t] : null;
+};
+t.prototype.getSFXClipByKey = function(e) {
+var t = this.sfxKeys.indexOf(e);
+return -1 !== t ? this.sfxClips[t] : null;
+};
+r([ c([ cc.String ]) ], t.prototype, "bgmKeys", void 0);
+r([ c({
+type: [ cc.AudioClip ]
+}) ], t.prototype, "bgmClips", void 0);
+r([ c([ cc.String ]) ], t.prototype, "sfxKeys", void 0);
+r([ c({
+type: [ cc.AudioClip ]
+}) ], t.prototype, "sfxClips", void 0);
+return t = r([ i ], t);
+}(cc.Component);
+n.default = s;
+cc._RF.pop();
+}, {} ],
+AudioManager: [ function(e, t, n) {
+"use strict";
+cc._RF.push(t, "123e7GGrYxDpp8bfvEJrMu6", "AudioManager");
+var o = this && this.__extends || function() {
+var e = function(t, n) {
+return (e = Object.setPrototypeOf || {
+__proto__: []
+} instanceof Array && function(e, t) {
+e.__proto__ = t;
+} || function(e, t) {
+for (var n in t) t.hasOwnProperty(n) && (e[n] = t[n]);
+})(t, n);
+};
+return function(t, n) {
+e(t, n);
+function o() {
+this.constructor = t;
+}
+t.prototype = null === n ? Object.create(n) : (o.prototype = n.prototype, new o());
+};
+}(), r = this && this.__decorate || function(e, t, n, o) {
+var r, a = arguments.length, i = a < 3 ? t : null === o ? o = Object.getOwnPropertyDescriptor(t, n) : o;
+if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) i = Reflect.decorate(e, t, n, o); else for (var c = e.length - 1; c >= 0; c--) (r = e[c]) && (i = (a < 3 ? r(i) : a > 3 ? r(t, n, i) : r(t, n)) || i);
+return a > 3 && i && Object.defineProperty(t, n, i), i;
+};
+Object.defineProperty(n, "__esModule", {
+value: !0
+});
+var a = e("../events/GameEvents"), i = e("../gameState/GameState"), c = e("../interfaces/InterfaceManager"), s = e("./AudioConst"), u = e("./AudioLibrary"), p = cc._decorator, l = p.ccclass, f = p.property, h = function(e) {
+o(t, e);
+function t() {
+var t = null !== e && e.apply(this, arguments) || this;
+t.audioLibrary = null;
+t.musicSource = null;
+t.sfxSource = null;
+t.isCrossfading = !1;
+t.crossfadeDuration = 1;
+t.isMuted = !1;
+return t;
+}
+n = t;
+Object.defineProperty(t, "Instance", {
+get: function() {
+this._instance || (this._instance = new n());
+return this._instance;
+},
+enumerable: !0,
+configurable: !0
+});
+t.prototype.initialise = function() {
+var e = this;
+c.default.Instance.registerInterface(this);
+a.default.onGameStateChange.on(function(t) {
+var n = t.prevState, o = t.newState, r = t.isOverlayState;
+e.gameEventsOnOnGameStateChange(n, o, r);
+});
+};
+t.prototype.resolveDependencies = function() {};
+t.prototype.terminate = function() {};
+t.prototype.isTypeOfBootStrapListener = function() {
+return !0;
+};
+t.prototype.getClassName = function() {
+return "AudioManager";
+};
+t.prototype.gameEventsOnOnGameStateChange = function(e, t, n) {
+switch (t) {
+case i.GameState.Home:
+this.playMusic(s.default.HomeMusic);
+this.isMuted || this.updateMusicVolume(1);
+break;
+
+case i.GameState.Gameplay:
+this.isMuted || this.updateMusicVolume(.25);
+break;
+
+case i.GameState.Result:
+this.playSFX(s.default.ResultScreen);
+this.isMuted || this.updateMusicVolume(1);
+}
+};
+t.prototype.playMusic = function(e) {
+if (!this.isMuted) {
+var t = this.audioLibrary.getBGClipByKey(e);
+if (t) {
+if (!this.musicSource.clip || this.musicSource.clip.name !== t.name) if (this.musicSource.clip) this.crossFadeMusic(t); else {
+this.musicSource.clip = t;
+this.musicSource.volume = 1;
+this.musicSource.loop = !0;
+this.musicSource.play();
+}
+} else console.error("No background music found for key: " + e);
+}
+};
+t.prototype.crossFadeMusic = function(e) {
+var t = this;
+if (!this.isCrossfading && !this.isMuted) {
+this.isCrossfading = !0;
+var n = this.musicSource.volume, o = this.node.addComponent(cc.AudioSource);
+o.clip = e;
+o.volume = 0;
+o.loop = !0;
+o.play();
+var r = this.crossfadeDuration / 30, a = 0;
+this.schedule(function() {
+var e = ++a / 30;
+t.musicSource.volume = n * (1 - e);
+o.volume = n * e;
+if (a >= 30) {
+t.unscheduleAllCallbacks();
+t.musicSource.stop();
+t.node.removeComponent(t.musicSource);
+t.musicSource = o;
+t.isCrossfading = !1;
+}
+}, r, 29);
+}
+};
+t.prototype.playSFX = function(e) {
+if (!this.isMuted) {
+var t = this.audioLibrary.getSFXClipByKey(e);
+t ? cc.audioEngine.playEffect(t, !1) : console.error("No sound effect found for key: " + e);
+}
+};
+t.prototype.updateSFXVolume = function(e) {
+this.sfxSource.volume = e;
+};
+t.prototype.updateMusicVolume = function(e) {
+this.musicSource.volume = e;
+};
+t.prototype.mute = function(e) {
+this.updateMusicVolume(e ? 0 : 1);
+this.updateMusicVolume(e ? 0 : 1);
+this.isMuted = e;
+};
+var n;
+r([ f(u.default) ], t.prototype, "audioLibrary", void 0);
+r([ f(cc.AudioSource) ], t.prototype, "musicSource", void 0);
+r([ f(cc.AudioSource) ], t.prototype, "sfxSource", void 0);
+return t = n = r([ l ], t);
+}(cc.Component);
+n.default = h;
+cc._RF.pop();
+}, {
+"../events/GameEvents": "GameEvents",
+"../gameState/GameState": "GameState",
+"../interfaces/InterfaceManager": "InterfaceManager",
+"./AudioConst": "AudioConst",
+"./AudioLibrary": "AudioLibrary"
+} ],
+BaseScreen: [ function(e, t, n) {
+"use strict";
+cc._RF.push(t, "511fbIIVa9CebljzOLcL/fA", "BaseScreen");
+var o = this && this.__extends || function() {
+var e = function(t, n) {
+return (e = Object.setPrototypeOf || {
+__proto__: []
+} instanceof Array && function(e, t) {
+e.__proto__ = t;
+} || function(e, t) {
+for (var n in t) t.hasOwnProperty(n) && (e[n] = t[n]);
+})(t, n);
+};
+return function(t, n) {
+e(t, n);
+function o() {
+this.constructor = t;
+}
+t.prototype = null === n ? Object.create(n) : (o.prototype = n.prototype, new o());
+};
+}(), r = this && this.__decorate || function(e, t, n, o) {
+var r, a = arguments.length, i = a < 3 ? t : null === o ? o = Object.getOwnPropertyDescriptor(t, n) : o;
+if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) i = Reflect.decorate(e, t, n, o); else for (var c = e.length - 1; c >= 0; c--) (r = e[c]) && (i = (a < 3 ? r(i) : a > 3 ? r(t, n, i) : r(t, n)) || i);
+return a > 3 && i && Object.defineProperty(t, n, i), i;
+};
+Object.defineProperty(n, "__esModule", {
+value: !0
+});
+var a = cc._decorator, i = a.ccclass, c = (a.property, function(e) {
+o(t, e);
+function t() {
+var t = null !== e && e.apply(this, arguments) || this;
+t.gameState = null;
+return t;
+}
+t.prototype.initialize = function() {
+this.onInit();
+};
+t.prototype.onInit = function() {};
+t.prototype.activate = function() {
+for (var e = [], t = 0; t < arguments.length; t++) e[t] = arguments[t];
+this.node.active = !0;
+this.onShow();
+};
+t.prototype.onShow = function() {};
+t.prototype.deactivate = function() {
+this.node.active = !1;
+this.onHide();
+};
+t.prototype.onHide = function() {};
+return t = r([ i ], t);
+}(cc.Component));
+n.default = c;
+cc._RF.pop();
+}, {} ],
+BaseTile: [ function(e, t, n) {
+"use strict";
+cc._RF.push(t, "763ffnFveVAp4lAJSM2TP7h", "BaseTile");
+var o = this && this.__extends || function() {
+var e = function(t, n) {
+return (e = Object.setPrototypeOf || {
+__proto__: []
+} instanceof Array && function(e, t) {
+e.__proto__ = t;
+} || function(e, t) {
+for (var n in t) t.hasOwnProperty(n) && (e[n] = t[n]);
+})(t, n);
+};
+return function(t, n) {
+e(t, n);
+function o() {
+this.constructor = t;
+}
+t.prototype = null === n ? Object.create(n) : (o.prototype = n.prototype, new o());
+};
+}(), r = this && this.__decorate || function(e, t, n, o) {
+var r, a = arguments.length, i = a < 3 ? t : null === o ? o = Object.getOwnPropertyDescriptor(t, n) : o;
+if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) i = Reflect.decorate(e, t, n, o); else for (var c = e.length - 1; c >= 0; c--) (r = e[c]) && (i = (a < 3 ? r(i) : a > 3 ? r(t, n, i) : r(t, n)) || i);
+return a > 3 && i && Object.defineProperty(t, n, i), i;
+};
+Object.defineProperty(n, "__esModule", {
+value: !0
+});
+var a = e("../../core/events/GameEvents"), i = cc._decorator, c = i.ccclass, s = i.property, u = function(e) {
+o(t, e);
+function t() {
+var t = null !== e && e.apply(this, arguments) || this;
+t.tileSprite = null;
+t.tileType = null;
+t.isInteractive = !1;
+return t;
+}
+t.prototype.onLoad = function() {
+this.node.on(cc.Node.EventType.TOUCH_END, this.onTapped, this);
+};
+t.prototype.reset = function() {
+this.node.opacity = 255;
+this.node.scale = 1;
+this.setInteractive(!0);
+};
+t.prototype.setInteractive = function(e) {
+this.isInteractive = e;
+e ? this.node.on(cc.Node.EventType.TOUCH_END, this.onTapped, this) : this.node.off(cc.Node.EventType.TOUCH_END, this.onTapped, this);
+};
+t.prototype.onTapped = function() {
+if (this.isInteractive) {
+a.default.dispatchTileTapped(this.tileType, this.node);
+a.default.dispatchScoreChange(this.tileType);
+}
+};
+t.prototype.onDisable = function() {
+this.setInteractive(!1);
+};
+t.prototype.onDestroy = function() {
+this.node.off(cc.Node.EventType.TOUCH_END, this.onTapped, this);
+};
+r([ s(cc.Sprite) ], t.prototype, "tileSprite", void 0);
+return t = r([ c ], t);
+}(cc.Component);
+n.default = u;
+cc._RF.pop();
+}, {
+"../../core/events/GameEvents": "GameEvents"
+} ],
+BootStrap: [ function(e, t, n) {
+"use strict";
+cc._RF.push(t, "c39f3uvHeRPyrJQZ40wJjgQ", "BootStrap");
+var o = this && this.__extends || function() {
+var e = function(t, n) {
+return (e = Object.setPrototypeOf || {
+__proto__: []
+} instanceof Array && function(e, t) {
+e.__proto__ = t;
+} || function(e, t) {
+for (var n in t) t.hasOwnProperty(n) && (e[n] = t[n]);
+})(t, n);
+};
+return function(t, n) {
+e(t, n);
+function o() {
+this.constructor = t;
+}
+t.prototype = null === n ? Object.create(n) : (o.prototype = n.prototype, new o());
+};
+}(), r = this && this.__decorate || function(e, t, n, o) {
+var r, a = arguments.length, i = a < 3 ? t : null === o ? o = Object.getOwnPropertyDescriptor(t, n) : o;
+if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) i = Reflect.decorate(e, t, n, o); else for (var c = e.length - 1; c >= 0; c--) (r = e[c]) && (i = (a < 3 ? r(i) : a > 3 ? r(t, n, i) : r(t, n)) || i);
+return a > 3 && i && Object.defineProperty(t, n, i), i;
+};
+Object.defineProperty(n, "__esModule", {
+value: !0
+});
+var a = cc._decorator, i = a.ccclass, c = a.property, s = function(e) {
+o(t, e);
+function t() {
+var t = null !== e && e.apply(this, arguments) || this;
+t.allManagers = [];
+return t;
+}
+t.prototype.onLoad = function() {
+var e = this;
+this.allManagers.forEach(function(t) {
+e.getBootStrapListenerComponent(t).initialise();
+});
+};
+t.prototype.start = function() {
+var e = this;
+this.allManagers.forEach(function(t) {
+e.getBootStrapListenerComponent(t).resolveDependencies();
+});
+};
+t.prototype.onDestroy = function() {
+var e = this;
+this && this.allManagers && this.allManagers.forEach(function(t) {
+if (t && t.isValid) try {
+e.getBootStrapListenerComponent(t).terminate();
+} catch (e) {
+console.error("Error processing manager:", t, e);
+}
+});
+};
+t.prototype.isBootStrapListener = function(e) {
+return "function" == typeof e.isTypeOfBootStrapListener;
+};
+t.prototype.getBootStrapListenerComponent = function(e) {
+for (var t = 0, n = e.getComponents(cc.Component); t < n.length; t++) {
+var o = n[t];
+if (this.isBootStrapListener(o)) return o;
+}
+return null;
+};
+r([ c([ cc.Node ]) ], t.prototype, "allManagers", void 0);
+return t = r([ i ], t);
+}(cc.Component);
+n.default = s;
+cc._RF.pop();
+}, {} ],
+CameraShake: [ function(e, t, n) {
+"use strict";
+cc._RF.push(t, "ce9a6vcwhtKCr4quEQn2A0R", "CameraShake");
+var o = this && this.__extends || function() {
+var e = function(t, n) {
+return (e = Object.setPrototypeOf || {
+__proto__: []
+} instanceof Array && function(e, t) {
+e.__proto__ = t;
+} || function(e, t) {
+for (var n in t) t.hasOwnProperty(n) && (e[n] = t[n]);
+})(t, n);
+};
+return function(t, n) {
+e(t, n);
+function o() {
+this.constructor = t;
+}
+t.prototype = null === n ? Object.create(n) : (o.prototype = n.prototype, new o());
+};
+}(), r = this && this.__decorate || function(e, t, n, o) {
+var r, a = arguments.length, i = a < 3 ? t : null === o ? o = Object.getOwnPropertyDescriptor(t, n) : o;
+if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) i = Reflect.decorate(e, t, n, o); else for (var c = e.length - 1; c >= 0; c--) (r = e[c]) && (i = (a < 3 ? r(i) : a > 3 ? r(t, n, i) : r(t, n)) || i);
+return a > 3 && i && Object.defineProperty(t, n, i), i;
+};
+Object.defineProperty(n, "__esModule", {
+value: !0
+});
+var a = e("../../core/events/GameEvents"), i = e("../Tile/TileType"), c = cc._decorator, s = c.ccclass, u = (c.property,
+function(e) {
+o(t, e);
+function t() {
+var t = null !== e && e.apply(this, arguments) || this;
+t.duration = .2;
+t.strength = 10;
+t.originalPosition = cc.v2();
+return t;
+}
+t.prototype.onLoad = function() {
+this.originalPosition = this.node.getPosition();
+};
+t.prototype.start = function() {
+var e = this;
+a.default.onTileTapped.on(function(t) {
+var n = t.tiletype;
+e.gameEventsOnOnTileTapped(n);
+});
+};
+t.prototype.onDestroy = function() {
+var e = this;
+a.default.onTileTapped.off(function(t) {
+var n = t.tiletype;
+e.gameEventsOnOnTileTapped(n);
+});
+};
+t.prototype.triggerShake = function() {
+this.node.stopAllActions();
+this.node.setPosition(this.originalPosition);
+for (var e = this.duration / 5, t = [], n = 0; n < 5; n++) {
+var o = (2 * Math.random() - 1) * this.strength, r = (2 * Math.random() - 1) * this.strength, a = cc.v2(this.originalPosition.x + o, this.originalPosition.y + r);
+t.push(cc.moveTo(e, a));
+}
+t.push(cc.moveTo(e, this.originalPosition));
+var i = cc.sequence(t);
+this.node.runAction(i);
+};
+t.prototype.gameEventsOnOnTileTapped = function(e) {
+switch (e) {
+case i.TileType.BonePile:
+case i.TileType.SpikedCrystal:
+case i.TileType.Skull:
+this.triggerShake();
+}
+};
+return t = r([ s ], t);
+}(cc.Component));
+n.default = u;
+cc._RF.pop();
+}, {
+"../../core/events/GameEvents": "GameEvents",
+"../Tile/TileType": "TileType"
+} ],
+CountdownTimer: [ function(e, t, n) {
+"use strict";
+cc._RF.push(t, "3e77dpWWNBM6KZlOMZ7J8JB", "CountdownTimer");
+var o = this && this.__extends || function() {
+var e = function(t, n) {
+return (e = Object.setPrototypeOf || {
+__proto__: []
+} instanceof Array && function(e, t) {
+e.__proto__ = t;
+} || function(e, t) {
+for (var n in t) t.hasOwnProperty(n) && (e[n] = t[n]);
+})(t, n);
+};
+return function(t, n) {
+e(t, n);
+function o() {
+this.constructor = t;
+}
+t.prototype = null === n ? Object.create(n) : (o.prototype = n.prototype, new o());
+};
+}(), r = this && this.__decorate || function(e, t, n, o) {
+var r, a = arguments.length, i = a < 3 ? t : null === o ? o = Object.getOwnPropertyDescriptor(t, n) : o;
+if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) i = Reflect.decorate(e, t, n, o); else for (var c = e.length - 1; c >= 0; c--) (r = e[c]) && (i = (a < 3 ? r(i) : a > 3 ? r(t, n, i) : r(t, n)) || i);
+return a > 3 && i && Object.defineProperty(t, n, i), i;
+};
+Object.defineProperty(n, "__esModule", {
+value: !0
+});
+var a = e("../../core/events/GameEvents"), i = cc._decorator, c = i.ccclass, s = i.property, u = function(e) {
+o(t, e);
+function t() {
+var t = null !== e && e.apply(this, arguments) || this;
+t.startTime = 60;
+t.timeLeft = 0;
+t.isTimerRunning = !1;
+return t;
+}
+t.prototype.onLoad = function() {
+this.resetTimer();
+};
+t.prototype.update = function(e) {
+if (this.isTimerRunning) {
+this.timeLeft -= e;
+if (this.timeLeft <= 0) {
+this.timeLeft = 0;
+this.isTimerRunning = !1;
+a.default.dispatchonGameTimerComplete();
+}
+}
+};
+t.prototype.startTimer = function() {
+this.timeLeft = this.startTime;
+this.isTimerRunning = !0;
+};
+t.prototype.pauseTimer = function() {
+this.isTimerRunning = !1;
+};
+t.prototype.resumeTimer = function() {
+this.timeLeft > 0 && (this.isTimerRunning = !0);
+};
+t.prototype.resetTimer = function() {
+this.timeLeft = this.startTime;
+this.isTimerRunning = !1;
+};
+t.prototype.getFormattedTime = function() {
+var e = Math.floor(this.timeLeft), t = Math.floor(e / 60), n = e % 60;
+return this.pad(t) + ":" + this.pad(n);
+};
+t.prototype.pad = function(e) {
+return e < 10 ? "0" + e : e.toString();
+};
+r([ s ], t.prototype, "startTime", void 0);
+return t = r([ c ], t);
+}(cc.Component);
+n.default = u;
+cc._RF.pop();
+}, {
+"../../core/events/GameEvents": "GameEvents"
+} ],
+Dictionary: [ function(e, t, n) {
+"use strict";
+cc._RF.push(t, "c3d8egeSApF2qD3c03DrzVj", "Dictionary");
+Object.defineProperty(n, "__esModule", {
+value: !0
+});
+var o = function() {
+function e() {
+this._keys = [];
+this._values = [];
+}
+e.prototype.set = function(e, t) {
+var n = this._keys.indexOf(e);
+if (-1 === n) {
+this._keys.push(e);
+this._values.push(t);
+} else this._values[n] = t;
+};
+e.prototype.get = function(e) {
+var t = this._keys.indexOf(e);
+return -1 === t ? void 0 : this._values[t];
+};
+e.prototype.has = function(e) {
+return -1 !== this._keys.indexOf(e);
+};
+e.prototype.delete = function(e) {
+var t = this._keys.indexOf(e);
+if (-1 === t) return !1;
+this._keys.splice(t, 1);
+this._values.splice(t, 1);
+return !0;
+};
+e.prototype.clear = function() {
+this._keys.length = 0;
+this._values.length = 0;
+};
+Object.defineProperty(e.prototype, "size", {
+get: function() {
+return this._keys.length;
+},
+enumerable: !0,
+configurable: !0
+});
+e.prototype.keys = function() {
+return this._keys.slice();
+};
+e.prototype.values = function() {
+return this._values.slice();
+};
+e.prototype.entries = function() {
+var e = this;
+return this._keys.map(function(t, n) {
+return [ t, e._values[n] ];
+});
+};
+e.prototype.forEach = function(e) {
+for (var t = 0; t < this._keys.length; t++) e(this._values[t], this._keys[t]);
+};
+return e;
+}();
+n.Dictionary = o;
+cc._RF.pop();
+}, {} ],
+EventEmitter: [ function(e, t, n) {
+"use strict";
+cc._RF.push(t, "50a53O+Gm1GQruIFIBZMw35", "EventEmitter");
+Object.defineProperty(n, "__esModule", {
+value: !0
+});
+var o = function() {
+function e() {
+this.listeners = [];
+}
+e.prototype.on = function(e) {
+this.listeners.push(e);
+};
+e.prototype.off = function(e) {
+var t = this.listeners.indexOf(e);
+t > -1 && this.listeners.splice(t, 1);
+};
+e.prototype.emit = function(e) {
+this.listeners.forEach(function(t) {
+return t(e);
+});
+};
+return e;
+}();
+n.default = o;
+cc._RF.pop();
+}, {} ],
+GameEvents: [ function(e, t, n) {
+"use strict";
+cc._RF.push(t, "5f558jACx9NmpuJepW0Jte7", "GameEvents");
+var o = this && this.__extends || function() {
+var e = function(t, n) {
+return (e = Object.setPrototypeOf || {
+__proto__: []
+} instanceof Array && function(e, t) {
+e.__proto__ = t;
+} || function(e, t) {
+for (var n in t) t.hasOwnProperty(n) && (e[n] = t[n]);
+})(t, n);
+};
+return function(t, n) {
+e(t, n);
+function o() {
+this.constructor = t;
+}
+t.prototype = null === n ? Object.create(n) : (o.prototype = n.prototype, new o());
+};
+}(), r = this && this.__decorate || function(e, t, n, o) {
+var r, a = arguments.length, i = a < 3 ? t : null === o ? o = Object.getOwnPropertyDescriptor(t, n) : o;
+if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) i = Reflect.decorate(e, t, n, o); else for (var c = e.length - 1; c >= 0; c--) (r = e[c]) && (i = (a < 3 ? r(i) : a > 3 ? r(t, n, i) : r(t, n)) || i);
+return a > 3 && i && Object.defineProperty(t, n, i), i;
+};
+Object.defineProperty(n, "__esModule", {
+value: !0
+});
+var a = e("./EventEmitter"), i = cc._decorator.ccclass, c = function(e) {
+o(t, e);
+function t() {
+return null !== e && e.apply(this, arguments) || this;
+}
+t.dispatchGameStateChanged = function(e, t, n) {
+this.onGameStateChange.emit({
+prevState: e,
+newState: t,
+isOverlayState: n
+});
+};
+t.dispatchTileTapped = function(e, t) {
+this.onTileTapped.emit({
+tiletype: e,
+tile: t
+});
+};
+t.dispatchScoreChange = function(e) {
+this.onScoreChange.emit({
+tiletype: e
+});
+};
+t.dispatchonGameTimerComplete = function() {
+this.onGameTimerComplete.emit({});
+};
+t.dispatchonGameChanceOver = function() {
+this.onGameChanceOver.emit({});
+};
+t.onGameStateChange = new a.default();
+t.onTileTapped = new a.default();
+t.onScoreChange = new a.default();
+t.onGameTimerComplete = new a.default();
+t.onGameChanceOver = new a.default();
+return t = r([ i ], t);
+}(cc.Component);
+n.default = c;
+cc._RF.pop();
+}, {
+"./EventEmitter": "EventEmitter"
+} ],
+GameStateManager: [ function(e, t, n) {
+"use strict";
+cc._RF.push(t, "05dc9k0flZMrqJhcCjlTz8F", "GameStateManager");
+var o = this && this.__extends || function() {
+var e = function(t, n) {
+return (e = Object.setPrototypeOf || {
+__proto__: []
+} instanceof Array && function(e, t) {
+e.__proto__ = t;
+} || function(e, t) {
+for (var n in t) t.hasOwnProperty(n) && (e[n] = t[n]);
+})(t, n);
+};
+return function(t, n) {
+e(t, n);
+function o() {
+this.constructor = t;
+}
+t.prototype = null === n ? Object.create(n) : (o.prototype = n.prototype, new o());
+};
+}(), r = this && this.__decorate || function(e, t, n, o) {
+var r, a = arguments.length, i = a < 3 ? t : null === o ? o = Object.getOwnPropertyDescriptor(t, n) : o;
+if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) i = Reflect.decorate(e, t, n, o); else for (var c = e.length - 1; c >= 0; c--) (r = e[c]) && (i = (a < 3 ? r(i) : a > 3 ? r(t, n, i) : r(t, n)) || i);
+return a > 3 && i && Object.defineProperty(t, n, i), i;
+};
+Object.defineProperty(n, "__esModule", {
+value: !0
+});
+var a = cc._decorator, i = a.ccclass, c = (a.property, e("../events/GameEvents")), s = e("../interfaces/InterfaceManager"), u = e("./GameState"), p = function(e) {
+o(t, e);
+function t() {
+return null !== e && e.apply(this, arguments) || this;
+}
+t.prototype.forceChangeGameState = function(e) {
+this.setGameState(e);
+};
+t.prototype.initialise = function() {
+s.default.Instance.registerInterface(this);
+};
+t.prototype.resolveDependencies = function() {
+this.setGameStateToHomeScreen();
+};
+t.prototype.terminate = function() {};
+t.prototype.isTypeOfBootStrapListener = function() {
+return !0;
+};
+t.prototype.getClassName = function() {
+return "GameStateManager";
+};
+t.prototype.setGameStateToHomeScreen = function() {
+this.setGameState(u.GameState.Home);
+};
+t.prototype.setGameState = function(e, t) {
+void 0 === t && (t = !1);
+if (this.currentGameState !== e) {
+c.default.dispatchGameStateChanged(this.currentGameState, e, t);
+this.currentGameState = e;
+}
+};
+return t = r([ i ], t);
+}(cc.Component);
+n.GameStateManager = p;
+cc._RF.pop();
+}, {
+"../events/GameEvents": "GameEvents",
+"../interfaces/InterfaceManager": "InterfaceManager",
+"./GameState": "GameState"
+} ],
+GameState: [ function(e, t, n) {
+"use strict";
+cc._RF.push(t, "b499bRqYS9GprB2LP+Gi5OV", "GameState");
+Object.defineProperty(n, "__esModule", {
+value: !0
+});
+(function(e) {
+e[e.None = 0] = "None";
+e[e.Splash = 1] = "Splash";
+e[e.Home = 2] = "Home";
+e[e.Gameplay = 3] = "Gameplay";
+e[e.Result = 4] = "Result";
+e[e.Tutorial = 5] = "Tutorial";
+})(n.GameState || (n.GameState = {}));
+cc._RF.pop();
+}, {} ],
+GameplayManager: [ function(e, t, n) {
+"use strict";
+cc._RF.push(t, "4f558Cn335P4bZ3Hbw0scsX", "GameplayManager");
+var o = this && this.__extends || function() {
+var e = function(t, n) {
+return (e = Object.setPrototypeOf || {
+__proto__: []
+} instanceof Array && function(e, t) {
+e.__proto__ = t;
+} || function(e, t) {
+for (var n in t) t.hasOwnProperty(n) && (e[n] = t[n]);
+})(t, n);
+};
+return function(t, n) {
+e(t, n);
+function o() {
+this.constructor = t;
+}
+t.prototype = null === n ? Object.create(n) : (o.prototype = n.prototype, new o());
+};
+}(), r = this && this.__decorate || function(e, t, n, o) {
+var r, a = arguments.length, i = a < 3 ? t : null === o ? o = Object.getOwnPropertyDescriptor(t, n) : o;
+if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) i = Reflect.decorate(e, t, n, o); else for (var c = e.length - 1; c >= 0; c--) (r = e[c]) && (i = (a < 3 ? r(i) : a > 3 ? r(t, n, i) : r(t, n)) || i);
+return a > 3 && i && Object.defineProperty(t, n, i), i;
+};
+Object.defineProperty(n, "__esModule", {
+value: !0
+});
+var a = e("../../core/events/GameEvents"), i = e("../../core/gameState/GameState"), c = e("../../core/interfaces/InterfaceManager"), s = e("../Tile/TileType"), u = cc._decorator, p = u.ccclass, l = (u.property,
+function(e) {
+o(t, e);
+function t() {
+var t = null !== e && e.apply(this, arguments) || this;
+t.gameStateManager = null;
+t.tileGridManager = null;
+t.scoreManager = null;
+return t;
+}
+t.prototype.initialise = function() {
+var e = this;
+c.default.Instance.registerInterface(this);
+a.default.onGameStateChange.on(function(t) {
+var n = t.prevState, o = t.newState, r = t.isOverlayState;
+e.gameEventsOnOnGameStateChange(n, o, r);
+});
+a.default.onTileTapped.on(function(t) {
+var n = t.tiletype;
+e.gameEventsOnOnTileTapped(n);
+});
+};
+t.prototype.resolveDependencies = function() {
+this.gameStateManager = c.default.Instance.getInterface("GameStateManager");
+this.tileGridManager = c.default.Instance.getInterface("TileGridManager");
+this.scoreManager = c.default.Instance.getInterface("ScoreManager");
+};
+t.prototype.terminate = function() {
+var e = this;
+a.default.onGameStateChange.off(function(t) {
+var n = t.prevState, o = t.newState, r = t.isOverlayState;
+e.gameEventsOnOnGameStateChange(n, o, r);
+});
+a.default.onTileTapped.off(function(t) {
+var n = t.tiletype;
+e.gameEventsOnOnTileTapped(n);
+});
+};
+t.prototype.isTypeOfBootStrapListener = function() {
+return !0;
+};
+t.prototype.getClassName = function() {
+return "GameplayManager";
+};
+t.prototype.setGameStatus = function(e) {
+this.isGameWon = e;
+this.gameStateManager.forceChangeGameState(i.GameState.Result);
+};
+t.prototype.gameEventsOnOnGameStateChange = function(e, t, n) {
+switch (t) {
+case i.GameState.Gameplay:
+this.startGamePlay();
+break;
+
+case i.GameState.Result:
+case i.GameState.Home:
+e == i.GameState.Gameplay && this.endGameplay();
+}
+};
+t.prototype.startGamePlay = function() {
+this.resetVars();
+this.tileGridManager.loadGame();
+};
+t.prototype.endGameplay = function() {
+this.tileGridManager.resetGame();
+this.resetVars();
+};
+t.prototype.resetVars = function() {
+this.chances = 5;
+this.scoreManager.resetScore();
+};
+t.prototype.gameEventsOnOnTileTapped = function(e) {
+switch (e) {
+case s.TileType.BonePile:
+this.chances = Math.max(0, this.chances - 2);
+0 == this.chances && a.default.dispatchonGameChanceOver();
+break;
+
+case s.TileType.SpikedCrystal:
+this.chances = Math.max(0, this.chances - 1);
+0 == this.chances && a.default.dispatchonGameChanceOver();
+break;
+
+case s.TileType.Skull:
+this.chances = 0;
+}
+};
+t.prototype.getChanceCount = function() {
+return this.chances;
+};
+return t = r([ p ], t);
+}(cc.Component));
+n.default = l;
+cc._RF.pop();
+}, {
+"../../core/events/GameEvents": "GameEvents",
+"../../core/gameState/GameState": "GameState",
+"../../core/interfaces/InterfaceManager": "InterfaceManager",
+"../Tile/TileType": "TileType"
+} ],
+GameplayScreen: [ function(e, t, n) {
+"use strict";
+cc._RF.push(t, "084d0cAw0xEOISLUCZvr16o", "GameplayScreen");
+var o = this && this.__extends || function() {
+var e = function(t, n) {
+return (e = Object.setPrototypeOf || {
+__proto__: []
+} instanceof Array && function(e, t) {
+e.__proto__ = t;
+} || function(e, t) {
+for (var n in t) t.hasOwnProperty(n) && (e[n] = t[n]);
+})(t, n);
+};
+return function(t, n) {
+e(t, n);
+function o() {
+this.constructor = t;
+}
+t.prototype = null === n ? Object.create(n) : (o.prototype = n.prototype, new o());
+};
+}(), r = this && this.__decorate || function(e, t, n, o) {
+var r, a = arguments.length, i = a < 3 ? t : null === o ? o = Object.getOwnPropertyDescriptor(t, n) : o;
+if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) i = Reflect.decorate(e, t, n, o); else for (var c = e.length - 1; c >= 0; c--) (r = e[c]) && (i = (a < 3 ? r(i) : a > 3 ? r(t, n, i) : r(t, n)) || i);
+return a > 3 && i && Object.defineProperty(t, n, i), i;
+};
+Object.defineProperty(n, "__esModule", {
+value: !0
+});
+var a = e("../../core/events/GameEvents"), i = e("../../core/gameState/GameState"), c = e("../../core/interfaces/InterfaceManager"), s = e("../../core/ui/BaseScreen"), u = e("../utils/CountdownTimer"), p = cc._decorator, l = p.ccclass, f = p.property, h = function(e) {
+o(t, e);
+function t() {
+var t = null !== e && e.apply(this, arguments) || this;
+t.timer = null;
+t.score = null;
+t.chance = null;
+t.remainingtime = null;
+t.gamePlayManager = null;
+t.scoreManager = null;
+return t;
+}
+t.prototype.onInit = function() {
+this.gameState = i.GameState.Gameplay;
+};
+t.prototype.start = function() {
+var e = this;
+a.default.onScoreChange.on(function(t) {
+var n = t.tiletype;
+e.gameEventsOnScoreChange(n);
+});
+};
+t.prototype.onDestroy = function() {
+var e = this;
+a.default.onScoreChange.off(function(t) {
+var n = t.tiletype;
+e.gameEventsOnScoreChange(n);
+});
+};
+t.prototype.onShow = function() {
+e.prototype.onShow.call(this);
+this.gamePlayManager = c.default.Instance.getInterface("GameplayManager");
+this.scoreManager = c.default.Instance.getInterface("ScoreManager");
+};
+t.prototype.onHide = function() {
+e.prototype.onHide.call(this);
+};
+t.prototype.update = function() {
+this.remainingtime && this.remainingtime && (this.remainingtime.string = this.timer.getFormattedTime());
+};
+t.prototype.gameEventsOnScoreChange = function(e) {
+this.score.string = this.scoreManager.getScore().toString();
+this.chance.string = this.gamePlayManager.getChanceCount().toString();
+var t = parseInt(localStorage.getItem("score") || "0");
+this.scoreManager.getScore() > t && localStorage.setItem("score", String(this.scoreManager.getScore()));
+};
+r([ f(u.default) ], t.prototype, "timer", void 0);
+r([ f(cc.Label) ], t.prototype, "score", void 0);
+r([ f(cc.Label) ], t.prototype, "chance", void 0);
+r([ f(cc.Label) ], t.prototype, "remainingtime", void 0);
+return t = r([ l ], t);
+}(s.default);
+n.default = h;
+cc._RF.pop();
+}, {
+"../../core/events/GameEvents": "GameEvents",
+"../../core/gameState/GameState": "GameState",
+"../../core/interfaces/InterfaceManager": "InterfaceManager",
+"../../core/ui/BaseScreen": "BaseScreen",
+"../utils/CountdownTimer": "CountdownTimer"
+} ],
+HomeScreen: [ function(e, t, n) {
+"use strict";
+cc._RF.push(t, "04adavy3RlObLhlz4N2sw1s", "HomeScreen");
+var o = this && this.__extends || function() {
+var e = function(t, n) {
+return (e = Object.setPrototypeOf || {
+__proto__: []
+} instanceof Array && function(e, t) {
+e.__proto__ = t;
+} || function(e, t) {
+for (var n in t) t.hasOwnProperty(n) && (e[n] = t[n]);
+})(t, n);
+};
+return function(t, n) {
+e(t, n);
+function o() {
+this.constructor = t;
+}
+t.prototype = null === n ? Object.create(n) : (o.prototype = n.prototype, new o());
+};
+}(), r = this && this.__decorate || function(e, t, n, o) {
+var r, a = arguments.length, i = a < 3 ? t : null === o ? o = Object.getOwnPropertyDescriptor(t, n) : o;
+if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) i = Reflect.decorate(e, t, n, o); else for (var c = e.length - 1; c >= 0; c--) (r = e[c]) && (i = (a < 3 ? r(i) : a > 3 ? r(t, n, i) : r(t, n)) || i);
+return a > 3 && i && Object.defineProperty(t, n, i), i;
+};
+Object.defineProperty(n, "__esModule", {
+value: !0
+});
+var a = e("../../core/audio/AudioConst"), i = e("../../core/gameState/GameState"), c = e("../../core/interfaces/InterfaceManager"), s = e("../../core/ui/BaseScreen"), u = cc._decorator, p = u.ccclass, l = u.property, f = function(e) {
+o(t, e);
+function t() {
+var t = null !== e && e.apply(this, arguments) || this;
+t.playButton = null;
+t.tutorialButton = null;
+t.musicButton = null;
+return t;
+}
+t.prototype.onInit = function() {
+this.gameState = i.GameState.Home;
+};
+t.prototype.onShow = function() {
+e.prototype.onShow.call(this);
+this.gameStateManager = c.default.Instance.getInterface("GameStateManager");
+this.audioManager = c.default.Instance.getInterface("AudioManager");
+this.playButton && this.playButton.node.on(cc.Node.EventType.TOUCH_END, this.onPlayClicked, this);
+this.tutorialButton && this.tutorialButton.node.on(cc.Node.EventType.TOUCH_END, this.onTutorialClicked, this);
+this.musicButton && this.musicButton.node.on("toggle", this.onMusicClicked, this);
+};
+t.prototype.onHide = function() {
+e.prototype.onHide.call(this);
+this.playButton && this.playButton.node.off(cc.Node.EventType.TOUCH_END, this.onPlayClicked, this);
+this.tutorialButton && this.tutorialButton.node.off(cc.Node.EventType.TOUCH_END, this.onTutorialClicked, this);
+this.musicButton && this.musicButton.node.off("toggle", this.onMusicClicked, this);
+};
+t.prototype.onPlayClicked = function() {
+this.audioManager.playSFX(a.default.ButtonClick);
+this.gameStateManager.forceChangeGameState(i.GameState.Gameplay);
+};
+t.prototype.onTutorialClicked = function() {
+this.audioManager.playSFX(a.default.ButtonClick);
+this.gameStateManager.forceChangeGameState(i.GameState.Tutorial);
+};
+t.prototype.onMusicClicked = function() {
+this.audioManager.playSFX(a.default.ButtonClick);
+this.audioManager.mute(this.musicButton.isChecked);
+};
+r([ l(cc.Button) ], t.prototype, "playButton", void 0);
+r([ l(cc.Button) ], t.prototype, "tutorialButton", void 0);
+r([ l(cc.Toggle) ], t.prototype, "musicButton", void 0);
+return t = r([ p ], t);
+}(s.default);
+n.default = f;
+cc._RF.pop();
+}, {
+"../../core/audio/AudioConst": "AudioConst",
+"../../core/gameState/GameState": "GameState",
+"../../core/interfaces/InterfaceManager": "InterfaceManager",
+"../../core/ui/BaseScreen": "BaseScreen"
+} ],
+IAudioManager: [ function(e, t, n) {
+"use strict";
+cc._RF.push(t, "c86d8FXez5BR6H1FiYw3pUl", "IAudioManager");
+Object.defineProperty(n, "__esModule", {
+value: !0
+});
+cc._RF.pop();
+}, {} ],
+IBase: [ function(e, t, n) {
+"use strict";
+cc._RF.push(t, "1b478SQijZCV7HKlAmUK4Zt", "IBase");
+Object.defineProperty(n, "__esModule", {
+value: !0
+});
+cc._RF.pop();
+}, {} ],
+IBootStrapListener: [ function(e, t, n) {
+"use strict";
+cc._RF.push(t, "534fbcXoblEkoYuof6y+CZw", "IBootStrapListener");
+Object.defineProperty(n, "__esModule", {
+value: !0
+});
+cc._RF.pop();
+}, {} ],
+IGameStateManager: [ function(e, t, n) {
+"use strict";
+cc._RF.push(t, "05b35K8gPFEw7HR2ZcoDQW9", "IGameStateManager");
+Object.defineProperty(n, "__esModule", {
+value: !0
+});
+cc._RF.pop();
+}, {} ],
+IGameplayManager: [ function(e, t, n) {
+"use strict";
+cc._RF.push(t, "b6139LaAmVJdqK+MdIjKMKH", "IGameplayManager");
+Object.defineProperty(n, "__esModule", {
+value: !0
+});
+cc._RF.pop();
+}, {} ],
+IUiManager: [ function(e, t, n) {
+"use strict";
+cc._RF.push(t, "15e5ecY7UVBdYFow6lz/pI5", "IUiManager");
+Object.defineProperty(n, "__esModule", {
+value: !0
+});
+var o = cc._decorator;
+o.ccclass, o.property;
+cc._RF.pop();
+}, {} ],
+InterfaceManager: [ function(e, t, n) {
+"use strict";
+cc._RF.push(t, "561d9eA/2hP/oADKkeMcX4e", "InterfaceManager");
+var o = this && this.__decorate || function(e, t, n, o) {
+var r, a = arguments.length, i = a < 3 ? t : null === o ? o = Object.getOwnPropertyDescriptor(t, n) : o;
+if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) i = Reflect.decorate(e, t, n, o); else for (var c = e.length - 1; c >= 0; c--) (r = e[c]) && (i = (a < 3 ? r(i) : a > 3 ? r(t, n, i) : r(t, n)) || i);
+return a > 3 && i && Object.defineProperty(t, n, i), i;
+};
+Object.defineProperty(n, "__esModule", {
+value: !0
+});
+var r = e("../utils/Dictionary"), a = cc._decorator, i = a.ccclass, c = (a.property,
+function() {
+function e() {
+this._interfaceDictionary = new r.Dictionary();
+}
+t = e;
+Object.defineProperty(e, "Instance", {
+get: function() {
+this._instance || (this._instance = new t());
+return this._instance;
+},
+enumerable: !0,
+configurable: !0
+});
+e.prototype.registerInterface = function(e) {
+var t = e.getClassName();
+this._interfaceDictionary.has(t) || this._interfaceDictionary.set(t, e);
+};
+e.prototype.getInterface = function(e) {
+var t = this._interfaceDictionary.get(e);
+if (t) return t;
+};
+var t;
+return e = t = o([ i ], e);
+}());
+n.default = c;
+cc._RF.pop();
+}, {
+"../utils/Dictionary": "Dictionary"
+} ],
+ResultScreen: [ function(e, t, n) {
+"use strict";
+cc._RF.push(t, "6af31PJ8dxKwKdl4byG6WMF", "ResultScreen");
+var o = this && this.__extends || function() {
+var e = function(t, n) {
+return (e = Object.setPrototypeOf || {
+__proto__: []
+} instanceof Array && function(e, t) {
+e.__proto__ = t;
+} || function(e, t) {
+for (var n in t) t.hasOwnProperty(n) && (e[n] = t[n]);
+})(t, n);
+};
+return function(t, n) {
+e(t, n);
+function o() {
+this.constructor = t;
+}
+t.prototype = null === n ? Object.create(n) : (o.prototype = n.prototype, new o());
+};
+}(), r = this && this.__decorate || function(e, t, n, o) {
+var r, a = arguments.length, i = a < 3 ? t : null === o ? o = Object.getOwnPropertyDescriptor(t, n) : o;
+if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) i = Reflect.decorate(e, t, n, o); else for (var c = e.length - 1; c >= 0; c--) (r = e[c]) && (i = (a < 3 ? r(i) : a > 3 ? r(t, n, i) : r(t, n)) || i);
+return a > 3 && i && Object.defineProperty(t, n, i), i;
+};
+Object.defineProperty(n, "__esModule", {
+value: !0
+});
+var a = e("../../core/audio/AudioConst"), i = e("../../core/gameState/GameState"), c = e("../../core/interfaces/InterfaceManager"), s = e("../../core/ui/BaseScreen"), u = cc._decorator, p = u.ccclass, l = u.property, f = function(e) {
+o(t, e);
+function t() {
+var t = null !== e && e.apply(this, arguments) || this;
+t.homeButton = null;
+t.restartButton = null;
+t.score = null;
+t.bestScore = null;
+t.gameStateManager = null;
+t.audioManager = null;
+t.scoreManager = null;
+return t;
+}
+t.prototype.onInit = function() {
+this.gameState = i.GameState.Result;
+};
+t.prototype.onShow = function() {
+e.prototype.onShow.call(this);
+this.gameStateManager = c.default.Instance.getInterface("GameStateManager");
+this.audioManager = c.default.Instance.getInterface("AudioManager");
+this.scoreManager = c.default.Instance.getInterface("ScoreManager");
+this.homeButton && this.homeButton.node.on(cc.Node.EventType.TOUCH_END, this.onHomeClicked, this);
+this.restartButton && this.restartButton.node.on(cc.Node.EventType.TOUCH_END, this.onRestartClicked, this);
+this.score.string = this.scoreManager.getScore().toString();
+this.bestScore.string = parseInt(localStorage.getItem("score") || "0").toString();
+};
+t.prototype.onHide = function() {
+e.prototype.onHide.call(this);
+this.homeButton && this.homeButton.node.off(cc.Node.EventType.TOUCH_END, this.onHomeClicked, this);
+this.restartButton && this.restartButton.node.off(cc.Node.EventType.TOUCH_END, this.onRestartClicked, this);
+};
+t.prototype.onHomeClicked = function() {
+this.audioManager.playSFX(a.default.ButtonClick);
+this.gameStateManager.forceChangeGameState(i.GameState.Home);
+};
+t.prototype.onRestartClicked = function() {
+this.audioManager.playSFX(a.default.ButtonClick);
+this.gameStateManager.forceChangeGameState(i.GameState.Gameplay);
+};
+r([ l(cc.Button) ], t.prototype, "homeButton", void 0);
+r([ l(cc.Button) ], t.prototype, "restartButton", void 0);
+r([ l(cc.Label) ], t.prototype, "score", void 0);
+r([ l(cc.Label) ], t.prototype, "bestScore", void 0);
+return t = r([ p ], t);
+}(s.default);
+n.default = f;
+cc._RF.pop();
+}, {
+"../../core/audio/AudioConst": "AudioConst",
+"../../core/gameState/GameState": "GameState",
+"../../core/interfaces/InterfaceManager": "InterfaceManager",
+"../../core/ui/BaseScreen": "BaseScreen"
+} ],
+ScoreManager: [ function(e, t, n) {
+"use strict";
+cc._RF.push(t, "4fcc8dmW45JLbzvA09Xw0iM", "ScoreManager");
+var o = this && this.__extends || function() {
+var e = function(t, n) {
+return (e = Object.setPrototypeOf || {
+__proto__: []
+} instanceof Array && function(e, t) {
+e.__proto__ = t;
+} || function(e, t) {
+for (var n in t) t.hasOwnProperty(n) && (e[n] = t[n]);
+})(t, n);
+};
+return function(t, n) {
+e(t, n);
+function o() {
+this.constructor = t;
+}
+t.prototype = null === n ? Object.create(n) : (o.prototype = n.prototype, new o());
+};
+}(), r = this && this.__decorate || function(e, t, n, o) {
+var r, a = arguments.length, i = a < 3 ? t : null === o ? o = Object.getOwnPropertyDescriptor(t, n) : o;
+if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) i = Reflect.decorate(e, t, n, o); else for (var c = e.length - 1; c >= 0; c--) (r = e[c]) && (i = (a < 3 ? r(i) : a > 3 ? r(t, n, i) : r(t, n)) || i);
+return a > 3 && i && Object.defineProperty(t, n, i), i;
+};
+Object.defineProperty(n, "__esModule", {
+value: !0
+});
+var a = e("../../core/events/GameEvents"), i = e("../../core/interfaces/InterfaceManager"), c = e("../Tile/TileType"), s = cc._decorator, u = s.ccclass, p = (s.property,
+function(e) {
+o(t, e);
+function t() {
+var t = null !== e && e.apply(this, arguments) || this;
+t.score = 0;
+return t;
+}
+t.prototype.initialise = function() {
+var e = this;
+i.default.Instance.registerInterface(this);
+a.default.onScoreChange.on(function(t) {
+var n = t.tiletype;
+e.gameEventsOnScoreChange(n);
+});
+};
+t.prototype.resolveDependencies = function() {};
+t.prototype.terminate = function() {
+var e = this;
+a.default.onScoreChange.on(function(t) {
+var n = t.tiletype;
+e.gameEventsOnScoreChange(n);
+});
+};
+t.prototype.isTypeOfBootStrapListener = function() {
+return !0;
+};
+t.prototype.getClassName = function() {
+return "ScoreManager";
+};
+t.prototype.gameEventsOnScoreChange = function(e) {
+switch (e) {
+case c.TileType.Diamond:
+this.updateScore(500);
+break;
+
+case c.TileType.GreenStone:
+this.updateScore(100);
+break;
+
+case c.TileType.BonePile:
+case c.TileType.GreenStone:
+this.updateScore(-50);
+break;
+
+case c.TileType.SpikedCrystal:
+case c.TileType.Skull:
+}
+};
+t.prototype.updateScore = function(e) {
+this.score = Math.max(0, this.score + e);
+};
+t.prototype.resetScore = function() {
+this.score = 0;
+};
+t.prototype.getScore = function() {
+return this.score;
+};
+return t = r([ u ], t);
+}(cc.Component));
+n.default = p;
+cc._RF.pop();
+}, {
+"../../core/events/GameEvents": "GameEvents",
+"../../core/interfaces/InterfaceManager": "InterfaceManager",
+"../Tile/TileType": "TileType"
+} ],
+TileGridManager: [ function(e, t, n) {
+"use strict";
+cc._RF.push(t, "813151XGj9NzpXno+dgpkMi", "TileGridManager");
+var o = this && this.__extends || function() {
+var e = function(t, n) {
+return (e = Object.setPrototypeOf || {
+__proto__: []
+} instanceof Array && function(e, t) {
+e.__proto__ = t;
+} || function(e, t) {
+for (var n in t) t.hasOwnProperty(n) && (e[n] = t[n]);
+})(t, n);
+};
+return function(t, n) {
+e(t, n);
+function o() {
+this.constructor = t;
+}
+t.prototype = null === n ? Object.create(n) : (o.prototype = n.prototype, new o());
+};
+}(), r = this && this.__decorate || function(e, t, n, o) {
+var r, a = arguments.length, i = a < 3 ? t : null === o ? o = Object.getOwnPropertyDescriptor(t, n) : o;
+if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) i = Reflect.decorate(e, t, n, o); else for (var c = e.length - 1; c >= 0; c--) (r = e[c]) && (i = (a < 3 ? r(i) : a > 3 ? r(t, n, i) : r(t, n)) || i);
+return a > 3 && i && Object.defineProperty(t, n, i), i;
+};
+Object.defineProperty(n, "__esModule", {
+value: !0
+});
+var a = e("./TilePoolManager"), i = e("./BaseTile"), c = e("./TileType"), s = e("../../core/events/GameEvents"), u = e("../../core/interfaces/InterfaceManager"), p = e("../../core/gameState/GameState"), l = e("../utils/CountdownTimer"), f = e("../../core/audio/AudioConst"), h = cc._decorator, y = h.ccclass, d = h.property, m = function(e) {
+o(t, e);
+function t() {
+var t = null !== e && e.apply(this, arguments) || this;
+t.tilePoolManager = null;
+t.timer = null;
+t.gridRoot = null;
+t.columns = 4;
+t.rows = 5;
+t.tileSize = new cc.Vec2(150, 150);
+t.grid = [];
+t.rowTappedFlags = [];
+t.inputLocked = !1;
+t.gameOver = !1;
+t.gameStateManager = null;
+t.audioManager = null;
+return t;
+}
+t.prototype.initialise = function() {
+var e = this;
+u.default.Instance.registerInterface(this);
+s.default.onTileTapped.on(function(t) {
+var n = t.tiletype, o = t.tile;
+e.onTileTapped(n, o);
+});
+s.default.onGameTimerComplete.on(function() {
+e.onGameTimerComplete();
+});
+s.default.onGameChanceOver.on(function() {
+e.onGameTimerComplete();
+});
+};
+t.prototype.resolveDependencies = function() {
+this.tilePoolManager = u.default.Instance.getInterface("TilePoolManager");
+this.gameStateManager = u.default.Instance.getInterface("GameStateManager");
+this.audioManager = u.default.Instance.getInterface("AudioManager");
+};
+t.prototype.terminate = function() {
+var e = this;
+s.default.onTileTapped.off(function(t) {
+var n = t.tiletype, o = t.tile;
+e.onTileTapped(n, o);
+});
+s.default.onGameTimerComplete.off(function() {
+e.onGameTimerComplete();
+});
+s.default.onGameChanceOver.off(function() {
+e.onGameTimerComplete();
+});
+};
+t.prototype.isTypeOfBootStrapListener = function() {
+return !0;
+};
+t.prototype.getClassName = function() {
+return "TileGridManager";
+};
+t.prototype.loadGame = function() {
+this.resetGame();
+this.spawnInitialGrid();
+this.updateRowInteractions();
+this.gameOver = !1;
+this.timer.startTimer();
+};
+t.prototype.spawnInitialGrid = function() {
+for (var e = 0; e < this.rows; e++) this.spawnRowAt(e);
+};
+t.prototype.spawnRowAt = function(e) {
+for (var t = [ c.TileType.GreenStone, c.TileType.Diamond ], n = [ c.TileType.Skull, c.TileType.BonePile, c.TileType.SpikedCrystal ], o = t[Math.floor(Math.random() * t.length)], r = Math.floor(Math.random() * this.columns), a = [], s = 0; s < this.columns; s++) {
+var u = s === r ? o : n[Math.floor(Math.random() * n.length)], p = this.tilePoolManager.getTile(u);
+p.parent = this.gridRoot;
+var l = (s - (this.columns - 1) / 2) * this.tileSize.x, f = e * this.tileSize.y;
+p.setPosition(l, f);
+var h = p.getComponent(i.default);
+h.tileType = u;
+h.reset();
+a.push(p);
+}
+this.grid[e] = a;
+this.rowTappedFlags[e] = !1;
+};
+t.prototype.onTileTapped = function(e, t) {
+var n = this;
+if (!this.inputLocked && !this.gameOver) {
+if (!this.rowTappedFlags[0]) {
+this.rowTappedFlags[0] = !0;
+this.updateRowInteractions();
+var o = cc.sequence(cc.scaleTo(.05, 1.1), cc.scaleTo(.05, 1));
+t.runAction(o);
+for (var r = 0, a = this.grid[0]; r < a.length; r++) {
+a[r].getComponent(i.default).setInteractive(!1);
+}
+e === c.TileType.GreenStone || e === c.TileType.Diamond ? this.audioManager.playSFX(f.default.CorrectChoice) : this.audioManager.playSFX(f.default.WrongChoice);
+if (e !== c.TileType.Skull) {
+this.inputLocked = !0;
+this.fadeAndRemoveRow(0, function() {
+n.shiftGridReferencesDown();
+n.spawnRowAt(n.rows - 1);
+n.updateRowInteractions();
+n.inputLocked = !1;
+});
+} else {
+this.gameStateManager.forceChangeGameState(p.GameState.Result);
+this.gameOver = !0;
+}
+}
+}
+};
+t.prototype.fadeAndRemoveRow = function(e, t) {
+for (var n = this, o = this.grid[e], r = 0, a = function(a) {
+var s = cc.fadeOut(.2), u = cc.sequence(s, cc.callFunc(function() {
+var c = a.getComponent(i.default);
+n.tilePoolManager.putTile(a, c.tileType);
+if (++r === o.length) {
+n.grid.splice(e, 1);
+n.rowTappedFlags.splice(e, 1);
+t();
+}
+}, c));
+a.runAction(u);
+}, c = this, s = 0, u = o; s < u.length; s++) {
+a(u[s]);
+}
+};
+t.prototype.shiftGridReferencesDown = function() {
+for (var e = 0; e < this.grid.length; e++) for (var t = 0, n = this.grid[e]; t < n.length; t++) {
+var o = n[t], r = o.x, a = e * this.tileSize.y;
+o.setPosition(r, a);
+}
+};
+t.prototype.updateRowInteractions = function() {
+for (var e = 0; e < this.grid.length; e++) for (var t = 0 === e, n = this.rowTappedFlags[e], o = 0, r = this.grid[e]; o < r.length; o++) {
+r[o].getComponent(i.default).setInteractive(t && !n);
+}
+};
+t.prototype.resetGame = function() {
+for (var e = 0, t = this.grid; e < t.length; e++) for (var n = 0, o = t[e]; n < o.length; n++) {
+var r = o[n];
+r.stopAllActions();
+var a = r.getComponent(i.default);
+this.tilePoolManager.putTile(r, a.tileType);
+}
+this.grid = [];
+this.rowTappedFlags = [];
+this.inputLocked = !1;
+};
+t.prototype.onGameTimerComplete = function() {
+this.gameOver = !0;
+this.inputLocked = !0;
+for (var e = 0, t = this.grid; e < t.length; e++) for (var n = 0, o = t[e]; n < o.length; n++) {
+var r = o[n];
+r.stopAllActions();
+r.getComponent(i.default).setInteractive(!1);
+}
+this.gameStateManager.forceChangeGameState(p.GameState.Result);
+};
+r([ d(a.default) ], t.prototype, "tilePoolManager", void 0);
+r([ d(l.default) ], t.prototype, "timer", void 0);
+r([ d(cc.Node) ], t.prototype, "gridRoot", void 0);
+r([ d ], t.prototype, "columns", void 0);
+r([ d ], t.prototype, "rows", void 0);
+r([ d(cc.Vec2) ], t.prototype, "tileSize", void 0);
+return t = r([ y ], t);
+}(cc.Component);
+n.default = m;
+cc._RF.pop();
+}, {
+"../../core/audio/AudioConst": "AudioConst",
+"../../core/events/GameEvents": "GameEvents",
+"../../core/gameState/GameState": "GameState",
+"../../core/interfaces/InterfaceManager": "InterfaceManager",
+"../utils/CountdownTimer": "CountdownTimer",
+"./BaseTile": "BaseTile",
+"./TilePoolManager": "TilePoolManager",
+"./TileType": "TileType"
+} ],
+TilePoolManager: [ function(e, t, n) {
+"use strict";
+cc._RF.push(t, "ffc47yK4EFJ9J6T6TaBT+fZ", "TilePoolManager");
+var o = this && this.__extends || function() {
+var e = function(t, n) {
+return (e = Object.setPrototypeOf || {
+__proto__: []
+} instanceof Array && function(e, t) {
+e.__proto__ = t;
+} || function(e, t) {
+for (var n in t) t.hasOwnProperty(n) && (e[n] = t[n]);
+})(t, n);
+};
+return function(t, n) {
+e(t, n);
+function o() {
+this.constructor = t;
+}
+t.prototype = null === n ? Object.create(n) : (o.prototype = n.prototype, new o());
+};
+}(), r = this && this.__decorate || function(e, t, n, o) {
+var r, a = arguments.length, i = a < 3 ? t : null === o ? o = Object.getOwnPropertyDescriptor(t, n) : o;
+if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) i = Reflect.decorate(e, t, n, o); else for (var c = e.length - 1; c >= 0; c--) (r = e[c]) && (i = (a < 3 ? r(i) : a > 3 ? r(t, n, i) : r(t, n)) || i);
+return a > 3 && i && Object.defineProperty(t, n, i), i;
+};
+Object.defineProperty(n, "__esModule", {
+value: !0
+});
+var a = e("../../core/interfaces/InterfaceManager"), i = cc._decorator, c = i.ccclass, s = i.property, u = function(e) {
+o(t, e);
+function t() {
+var t = null !== e && e.apply(this, arguments) || this;
+t.tilePrefabs = [];
+t.pools = [];
+return t;
+}
+t.prototype.initialise = function() {
+a.default.Instance.registerInterface(this);
+this.createPool();
+};
+t.prototype.resolveDependencies = function() {};
+t.prototype.terminate = function() {};
+t.prototype.isTypeOfBootStrapListener = function() {
+return !0;
+};
+t.prototype.getClassName = function() {
+return "TilePoolManager";
+};
+t.prototype.createPool = function() {
+for (var e = 0; e < this.tilePrefabs.length; e++) {
+for (var t = new cc.NodePool(), n = 0; n < 10; n++) {
+var o = cc.instantiate(this.tilePrefabs[e]);
+t.put(o);
+}
+this.pools[e] = t;
+}
+};
+t.prototype.getTile = function(e) {
+var t = this.pools[e];
+return t && t.size() > 0 ? t.get() : cc.instantiate(this.tilePrefabs[e]);
+};
+t.prototype.putTile = function(e, t) {
+var n = this.pools[t];
+if (n) {
+e.removeFromParent(!1);
+n.put(e);
+} else e.destroy();
+};
+r([ s({
+type: [ cc.Prefab ]
+}) ], t.prototype, "tilePrefabs", void 0);
+return t = r([ c ], t);
+}(cc.Component);
+n.default = u;
+cc._RF.pop();
+}, {
+"../../core/interfaces/InterfaceManager": "InterfaceManager"
+} ],
+TileType: [ function(e, t, n) {
+"use strict";
+cc._RF.push(t, "af4adITxspHgJDpCoJTJP7e", "TileType");
+Object.defineProperty(n, "__esModule", {
+value: !0
+});
+(function(e) {
+e[e.GreenStone = 0] = "GreenStone";
+e[e.Diamond = 1] = "Diamond";
+e[e.SpikedCrystal = 2] = "SpikedCrystal";
+e[e.BonePile = 3] = "BonePile";
+e[e.Skull = 4] = "Skull";
+})(n.TileType || (n.TileType = {}));
+cc._RF.pop();
+}, {} ],
+TutorialScreen: [ function(e, t, n) {
+"use strict";
+cc._RF.push(t, "f400are055HoI5MVT5w+0HO", "TutorialScreen");
+var o = this && this.__extends || function() {
+var e = function(t, n) {
+return (e = Object.setPrototypeOf || {
+__proto__: []
+} instanceof Array && function(e, t) {
+e.__proto__ = t;
+} || function(e, t) {
+for (var n in t) t.hasOwnProperty(n) && (e[n] = t[n]);
+})(t, n);
+};
+return function(t, n) {
+e(t, n);
+function o() {
+this.constructor = t;
+}
+t.prototype = null === n ? Object.create(n) : (o.prototype = n.prototype, new o());
+};
+}(), r = this && this.__decorate || function(e, t, n, o) {
+var r, a = arguments.length, i = a < 3 ? t : null === o ? o = Object.getOwnPropertyDescriptor(t, n) : o;
+if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) i = Reflect.decorate(e, t, n, o); else for (var c = e.length - 1; c >= 0; c--) (r = e[c]) && (i = (a < 3 ? r(i) : a > 3 ? r(t, n, i) : r(t, n)) || i);
+return a > 3 && i && Object.defineProperty(t, n, i), i;
+};
+Object.defineProperty(n, "__esModule", {
+value: !0
+});
+var a = e("../../core/audio/AudioConst"), i = e("../../core/gameState/GameState"), c = e("../../core/interfaces/InterfaceManager"), s = e("../../core/ui/BaseScreen"), u = cc._decorator, p = u.ccclass, l = u.property, f = function(e) {
+o(t, e);
+function t() {
+var t = null !== e && e.apply(this, arguments) || this;
+t.homeButton = null;
+return t;
+}
+t.prototype.onInit = function() {
+this.gameState = i.GameState.Tutorial;
+};
+t.prototype.onShow = function() {
+e.prototype.onShow.call(this);
+this.gameStateManager = c.default.Instance.getInterface("GameStateManager");
+this.audioManager = c.default.Instance.getInterface("AudioManager");
+this.homeButton && this.homeButton.node.on(cc.Node.EventType.TOUCH_END, this.onHomeClicked, this);
+};
+t.prototype.onHide = function() {
+e.prototype.onHide.call(this);
+this.homeButton && this.homeButton.node.off(cc.Node.EventType.TOUCH_END, this.onHomeClicked, this);
+};
+t.prototype.onHomeClicked = function() {
+this.audioManager.playSFX(a.default.ButtonClick);
+this.gameStateManager.forceChangeGameState(i.GameState.Home);
+};
+r([ l(cc.Button) ], t.prototype, "homeButton", void 0);
+return t = r([ p ], t);
+}(s.default);
+n.default = f;
+cc._RF.pop();
+}, {
+"../../core/audio/AudioConst": "AudioConst",
+"../../core/gameState/GameState": "GameState",
+"../../core/interfaces/InterfaceManager": "InterfaceManager",
+"../../core/ui/BaseScreen": "BaseScreen"
+} ],
+UiManager: [ function(e, t, n) {
+"use strict";
+cc._RF.push(t, "0bb0b9bOGBLjJ8OHGVHG16B", "UiManager");
+var o = this && this.__extends || function() {
+var e = function(t, n) {
+return (e = Object.setPrototypeOf || {
+__proto__: []
+} instanceof Array && function(e, t) {
+e.__proto__ = t;
+} || function(e, t) {
+for (var n in t) t.hasOwnProperty(n) && (e[n] = t[n]);
+})(t, n);
+};
+return function(t, n) {
+e(t, n);
+function o() {
+this.constructor = t;
+}
+t.prototype = null === n ? Object.create(n) : (o.prototype = n.prototype, new o());
+};
+}(), r = this && this.__decorate || function(e, t, n, o) {
+var r, a = arguments.length, i = a < 3 ? t : null === o ? o = Object.getOwnPropertyDescriptor(t, n) : o;
+if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) i = Reflect.decorate(e, t, n, o); else for (var c = e.length - 1; c >= 0; c--) (r = e[c]) && (i = (a < 3 ? r(i) : a > 3 ? r(t, n, i) : r(t, n)) || i);
+return a > 3 && i && Object.defineProperty(t, n, i), i;
+};
+Object.defineProperty(n, "__esModule", {
+value: !0
+});
+var a = e("../events/GameEvents"), i = e("../gameState/GameState"), c = e("../interfaces/InterfaceManager"), s = e("../utils/Dictionary"), u = e("./BaseScreen"), p = cc._decorator, l = p.ccclass, f = p.property, h = function(e) {
+o(t, e);
+function t() {
+var t = null !== e && e.apply(this, arguments) || this;
+t.assignableScreens = [];
+t.availableScreens = new s.Dictionary();
+t.stateScreenMap = new s.Dictionary();
+t.wasOverlayState = !1;
+return t;
+}
+t.prototype.initialise = function() {
+var e = this;
+this.configure();
+c.default.Instance.registerInterface(this);
+this.stateScreenMap.set(i.GameState.Home, this.getScreen(i.GameState.Home));
+this.stateScreenMap.set(i.GameState.Gameplay, this.getScreen(i.GameState.Gameplay));
+this.stateScreenMap.set(i.GameState.Result, this.getScreen(i.GameState.Result));
+this.stateScreenMap.set(i.GameState.Tutorial, this.getScreen(i.GameState.Tutorial));
+a.default.onGameStateChange.on(function(t) {
+var n = t.prevState, o = t.newState, r = t.isOverlayState;
+e.gameEventsOnOnGameStateChange(n, o, r);
+});
+};
+t.prototype.resolveDependencies = function() {};
+t.prototype.terminate = function() {
+var e = this;
+a.default.onGameStateChange.off(function(t) {
+var n = t.prevState, o = t.newState, r = t.isOverlayState;
+e.gameEventsOnOnGameStateChange(n, o, r);
+});
+};
+t.prototype.isTypeOfBootStrapListener = function() {
+return !0;
+};
+t.prototype.getClassName = function() {
+return "UiManager";
+};
+t.prototype.activate = function(e) {
+this.availableScreens.get(e).activate();
+};
+t.prototype.deactivate = function(e) {
+this.availableScreens.get(e).deactivate();
+};
+t.prototype.getScreen = function(e) {
+return this.availableScreens.get(e);
+};
+t.prototype.configure = function() {
+var e = this;
+this.availableScreens = new s.Dictionary();
+this.assignableScreens.forEach(function(t) {
+var n = t.getComponent(u.default);
+n.deactivate();
+n.initialize();
+e.availableScreens.set(n.gameState, n);
+});
+};
+t.prototype.gameEventsOnOnGameStateChange = function(e, t, n) {
+if (!n) {
+var o = this.stateScreenMap.get(e);
+o && o.deactivate();
+}
+if (!this.wasOverlayState) {
+var r = this.stateScreenMap.get(t);
+r && r.activate();
+}
+this.wasOverlayState = n;
+};
+r([ f([ cc.Node ]) ], t.prototype, "assignableScreens", void 0);
+return t = r([ l ], t);
+}(cc.Component);
+n.default = h;
+cc._RF.pop();
+}, {
+"../events/GameEvents": "GameEvents",
+"../gameState/GameState": "GameState",
+"../interfaces/InterfaceManager": "InterfaceManager",
+"../utils/Dictionary": "Dictionary",
+"./BaseScreen": "BaseScreen"
+} ]
+}, {}, [ "AudioConst", "AudioLibrary", "AudioManager", "IAudioManager", "BootStrap", "IBootStrapListener", "EventEmitter", "GameEvents", "GameState", "GameStateManager", "IGameStateManager", "IBase", "InterfaceManager", "BaseScreen", "IUiManager", "UiManager", "Dictionary", "BaseTile", "TileGridManager", "TilePoolManager", "TileType", "GameplayManager", "IGameplayManager", "ScoreManager", "GameplayScreen", "HomeScreen", "ResultScreen", "TutorialScreen", "CameraShake", "CountdownTimer" ]);
\ No newline at end of file
diff --git a/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/js backups (useful for debugging)/settings.js b/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/js backups (useful for debugging)/settings.js
new file mode 100644
index 0000000..986aabf
--- /dev/null
+++ b/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/js backups (useful for debugging)/settings.js
@@ -0,0 +1 @@
+window._CCSettings={platform:"ios",groupList:["default"],collisionMatrix:[[true]],rawAssets:{assets:{},internal:{"14TDKXr2NJ6LjvHPops74o":["effects/builtin-2d-gray-sprite.effect",0],"0ek66qC1NOQLjgYmi04HvX":["effects/builtin-2d-spine.effect",0],"28dPjdQWxEQIG3VVl1Qm6T":["effects/builtin-2d-sprite.effect",0],c0BAyVxX9JzZy8EjFrc9DU:["effects/builtin-clear-stencil.effect",0],"796vrvt+9F2Zw/WR3INvx6":["effects/builtin-unlit-transparent.effect",0],"6dkeWRTOBGXICfYQ7JUBnG":["effects/builtin-unlit.effect",0],"6fgBCSDDdPMInvyNlggls2":["materials/builtin-2d-base.mtl",1],"3ae7efMv1CLq2ilvUY/tQi":["materials/builtin-2d-gray-sprite.mtl",1],"7a/QZLET9IDreTiBfRn2PD":["materials/builtin-2d-spine.mtl",1],"ecpdLyjvZBwrvm+cedCcQy":["materials/builtin-2d-sprite.mtl",1],cffgu4qBxEqa150o1DmRAy:["materials/builtin-clear-stencil.mtl",1],"2aKWBXJHxKHLvrBUi2yYZQ":["materials/builtin-unlit.mtl",1]}},assetTypes:["cc.EffectAsset","cc.Material"],launchScene:"db://assets/Artifacts/Scene/StepOfDoom.fire",scenes:[{url:"db://assets/Artifacts/Scene/StepOfDoom.fire",uuid:0}],packedAssets:{"013fee4c6":["9ch7dfxwFAjJtmqFZlEczL",4],"03509fa71":["02delMVqdBD70a/HSD99FK","25CVJHuldK3qRGNH8mEf1N","272qL8GtxL+K2zJQcf6t/9","393UR9K4NHxIHRZkRgnU90","3e32iPfRVK0ZN+p/UW6mTj","45TnYhEcRJWqJt2bJwcSAY","4bBOApOT9PPpM539BGVWbG","5eVio4JPRBG5V9axGICIeZ","71VhFCTINJM6/Ky3oX9nBT","79WgtFfS5GWIaGDterE4Rh","7b7MQnWIBPJI+AD6Nxmlrm","8ft9ixM1tKrbNVrj+FIpm8","b4P/PCArtIdIH38t6mlw8Y","b5Y42G+SBE3LY8wWNc6CTq","c4BNbuIKVH/I0CF0Ccf9nv","c6XjAC+TdHAa1AfKLS3Ktc","d8HsitJHxOYqo801xBk8ev","deU2NBkaFP/7F/HyYWWL2J","e8Ueib+qJEhL6mXAHdnwbi","ebq3dnF5hNSYJKQ0u3223c","f5SgcmqmxBMpqponAHCr5q","f8QPG+4ypFvrlknDxXyVgW"],"05b8387d4":["49UV4iAkFNJqgzP2bFjcx8",1],"07bf3f1e8":[3,"f4AdwTj2pCd5nbAqQzirGN"],"07f75f594":["30rwV39bFPl5vxjQXwvewJ",2],"0a2fc7fe9":["06/R3oIf5IuLKgS09DkfQ1","0cuVnu4/1Iw5sdljl4hHzw","29FYIk+N1GYaeWH/q1NxQO","4dOVMpuapC14EgLzRwnDz9","4fgzxTFtRLvKTQpMimZh7B","72J8arbXJOW7lmTtqizsU2",0,1,"8bctp+O/dJH4PKdG0PN+b7","8eYYdH8pNEoqTjDDRz7yGa","90H0qyJrJAFrruOD/dPEya","9bvaMerUlDyary99mJa6xp","a2MjXRFdtLlYQ5ouAFv/+R",5,2,3,"c7FjGs6JZAWYNXFWB+YeKI","d44ALIR9xKGLBN4dA33OOG","e97GVMl6JHh5Ml5qEDdSGa",4,"edrT2jT5BHwrSKFxvJ2QtF","f0BIwQ8D5Ml7nTNQbh1YlS","f141HWxi5EOpGhMei8RSbj"],"0d3585312":["2d0axDjqRAyK16dy6NQSHv",5]},md5AssetsMap:{},orientation:"",debug:false,subpackages:{},uuids:["76ZbKpK9dHqIaIIS7A9PsN","88g2KF+RNMUr1ElanxVnIs","bcG/DYWUpDU7Gqv3wdsjgd","bfZmvjxg5NGY+JKnpSLTgY","ea9gdg70hAzoIygF94ys/K","af/oGJlNZNg6OKH0Stj3ce"]};
\ No newline at end of file
diff --git a/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/jsb-adapter/jsb-builtin.js b/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/jsb-adapter/jsb-builtin.js
new file mode 100644
index 0000000..8a2d868
--- /dev/null
+++ b/GameUploadDocuments/2.StepOfDoom/Build/jsb-link/jsb-adapter/jsb-builtin.js
@@ -0,0 +1,8227 @@
+(function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c="function"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error("Cannot find module '"+i+"'");throw a.code="MODULE_NOT_FOUND",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u="function"==typeof require&&require,i=0;i 1 ? end : this.data.length), type, this.encoding);
+ };
+ FB_proto.toString = function () {
+ return "[object Blob]";
+ };
+ FB_proto.close = function () {
+ this.size = 0;
+ delete this.data;
+ };
+ return FakeBlobBuilder;
+ }();
+
+ exports.Blob = function (blobParts, options) {
+ var type = options ? options.type || "" : "";
+ var builder = new BlobBuilder();
+ if (blobParts) {
+ for (var i = 0, len = blobParts.length; i < len; i++) {
+ if (Uint8Array && blobParts[i] instanceof Uint8Array) {
+ builder.append(blobParts[i].buffer);
+ } else {
+ builder.append(blobParts[i]);
+ }
+ }
+ }
+ var blob = builder.getBlob(type);
+ if (!blob.slice && blob.webkitSlice) {
+ blob.slice = blob.webkitSlice;
+ }
+ return blob;
+ };
+
+ var getPrototypeOf = Object.getPrototypeOf || function (object) {
+ return object.__proto__;
+ };
+ exports.Blob.prototype = getPrototypeOf(new exports.Blob());
+ });
+})(typeof self !== "undefined" && self || typeof window !== "undefined" && window || typeof global !== "undefined" && global || undefined.content || undefined);
+
+}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
+},{}],2:[function(require,module,exports){
+"use strict";
+
+!function () {
+ function e(e) {
+ this.message = e;
+ }var t = "undefined" != typeof exports ? exports : "undefined" != typeof self ? self : $.global,
+ r = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";e.prototype = new Error(), e.prototype.name = "InvalidCharacterError", t.btoa || (t.btoa = function (t) {
+ for (var o, n, a = String(t), i = 0, f = r, c = ""; a.charAt(0 | i) || (f = "=", i % 1); c += f.charAt(63 & o >> 8 - i % 1 * 8)) {
+ if (n = a.charCodeAt(i += .75), n > 255) throw new e("'btoa' failed: The string to be encoded contains characters outside of the Latin1 range.");o = o << 8 | n;
+ }return c;
+ }), t.atob || (t.atob = function (t) {
+ var o = String(t).replace(/[=]+$/, "");if (o.length % 4 == 1) throw new e("'atob' failed: The string to be decoded is not correctly encoded.");for (var n, a, i = 0, f = 0, c = ""; a = o.charAt(f++); ~a && (n = i % 4 ? 64 * n + a : a, i++ % 4) ? c += String.fromCharCode(255 & n >> (-2 * i & 6)) : 0) {
+ a = r.indexOf(a);
+ }return c;
+ });
+}();
+
+},{}],3:[function(require,module,exports){
+'use strict';
+
+var GL_COMMAND_ACTIVE_TEXTURE = 0;
+var GL_COMMAND_ATTACH_SHADER = 1;
+var GL_COMMAND_BIND_ATTRIB_LOCATION = 2;
+var GL_COMMAND_BIND_BUFFER = 3;
+var GL_COMMAND_BIND_FRAME_BUFFER = 4;
+var GL_COMMAND_BIND_RENDER_BUFFER = 5;
+var GL_COMMAND_BIND_TEXTURE = 6;
+var GL_COMMAND_BLEND_COLOR = 7;
+var GL_COMMAND_BLEND_EQUATION = 8;
+var GL_COMMAND_BLEND_EQUATION_SEPARATE = 9;
+var GL_COMMAND_BLEND_FUNC = 10;
+var GL_COMMAND_BLEND_FUNC_SEPARATE = 11;
+var GL_COMMAND_BUFFER_DATA = 12;
+var GL_COMMAND_BUFFER_SUB_DATA = 13;
+var GL_COMMAND_CLEAR = 14;
+var GL_COMMAND_CLEAR_COLOR = 15;
+var GL_COMMAND_CLEAR_DEPTH = 16;
+var GL_COMMAND_CLEAR_STENCIL = 17;
+var GL_COMMAND_COLOR_MASK = 18;
+var GL_COMMAND_COMMIT = 19;
+var GL_COMMAND_COMPILE_SHADER = 20;
+var GL_COMMAND_COMPRESSED_TEX_IMAGE_2D = 21;
+var GL_COMMAND_COMPRESSED_TEX_SUB_IMAGE_2D = 22;
+var GL_COMMAND_COPY_TEX_IMAGE_2D = 23;
+var GL_COMMAND_COPY_TEX_SUB_IMAGE_2D = 24;
+var GL_COMMAND_CULL_FACE = 25;
+var GL_COMMAND_DELETE_BUFFER = 26;
+var GL_COMMAND_DELETE_FRAME_BUFFER = 27;
+var GL_COMMAND_DELETE_PROGRAM = 28;
+var GL_COMMAND_DELETE_RENDER_BUFFER = 29;
+var GL_COMMAND_DELETE_SHADER = 30;
+var GL_COMMAND_DELETE_TEXTURE = 31;
+var GL_COMMAND_DEPTH_FUNC = 32;
+var GL_COMMAND_DEPTH_MASK = 33;
+var GL_COMMAND_DEPTH_RANGE = 34;
+var GL_COMMAND_DETACH_SHADER = 35;
+var GL_COMMAND_DISABLE = 36;
+var GL_COMMAND_DISABLE_VERTEX_ATTRIB_ARRAY = 37;
+var GL_COMMAND_DRAW_ARRAYS = 38;
+var GL_COMMAND_DRAW_ELEMENTS = 39;
+var GL_COMMAND_ENABLE = 40;
+var GL_COMMAND_ENABLE_VERTEX_ATTRIB_ARRAY = 41;
+var GL_COMMAND_FINISH = 42;
+var GL_COMMAND_FLUSH = 43;
+var GL_COMMAND_FRAME_BUFFER_RENDER_BUFFER = 44;
+var GL_COMMAND_FRAME_BUFFER_TEXTURE_2D = 45;
+var GL_COMMAND_FRONT_FACE = 46;
+var GL_COMMAND_GENERATE_MIPMAP = 47;
+var GL_COMMAND_HINT = 48;
+var GL_COMMAND_LINE_WIDTH = 49;
+var GL_COMMAND_LINK_PROGRAM = 50;
+var GL_COMMAND_PIXEL_STOREI = 51;
+var GL_COMMAND_POLYGON_OFFSET = 52;
+var GL_COMMAND_RENDER_BUFFER_STORAGE = 53;
+var GL_COMMAND_SAMPLE_COVERAGE = 54;
+var GL_COMMAND_SCISSOR = 55;
+var GL_COMMAND_SHADER_SOURCE = 56;
+var GL_COMMAND_STENCIL_FUNC = 57;
+var GL_COMMAND_STENCIL_FUNC_SEPARATE = 58;
+var GL_COMMAND_STENCIL_MASK = 59;
+var GL_COMMAND_STENCIL_MASK_SEPARATE = 60;
+var GL_COMMAND_STENCIL_OP = 61;
+var GL_COMMAND_STENCIL_OP_SEPARATE = 62;
+var GL_COMMAND_TEX_IMAGE_2D = 63;
+var GL_COMMAND_TEX_PARAMETER_F = 64;
+var GL_COMMAND_TEX_PARAMETER_I = 65;
+var GL_COMMAND_TEX_SUB_IMAGE_2D = 66;
+var GL_COMMAND_UNIFORM_1F = 67;
+var GL_COMMAND_UNIFORM_1FV = 68;
+var GL_COMMAND_UNIFORM_1I = 69;
+var GL_COMMAND_UNIFORM_1IV = 70;
+var GL_COMMAND_UNIFORM_2F = 71;
+var GL_COMMAND_UNIFORM_2FV = 72;
+var GL_COMMAND_UNIFORM_2I = 73;
+var GL_COMMAND_UNIFORM_2IV = 74;
+var GL_COMMAND_UNIFORM_3F = 75;
+var GL_COMMAND_UNIFORM_3FV = 76;
+var GL_COMMAND_UNIFORM_3I = 77;
+var GL_COMMAND_UNIFORM_3IV = 78;
+var GL_COMMAND_UNIFORM_4F = 79;
+var GL_COMMAND_UNIFORM_4FV = 80;
+var GL_COMMAND_UNIFORM_4I = 81;
+var GL_COMMAND_UNIFORM_4IV = 82;
+var GL_COMMAND_UNIFORM_MATRIX_2FV = 83;
+var GL_COMMAND_UNIFORM_MATRIX_3FV = 84;
+var GL_COMMAND_UNIFORM_MATRIX_4FV = 85;
+var GL_COMMAND_USE_PROGRAM = 86;
+var GL_COMMAND_VALIDATE_PROGRAM = 87;
+var GL_COMMAND_VERTEX_ATTRIB_1F = 88;
+var GL_COMMAND_VERTEX_ATTRIB_2F = 89;
+var GL_COMMAND_VERTEX_ATTRIB_3F = 90;
+var GL_COMMAND_VERTEX_ATTRIB_4F = 91;
+var GL_COMMAND_VERTEX_ATTRIB_1FV = 92;
+var GL_COMMAND_VERTEX_ATTRIB_2FV = 93;
+var GL_COMMAND_VERTEX_ATTRIB_3FV = 94;
+var GL_COMMAND_VERTEX_ATTRIB_4FV = 95;
+var GL_COMMAND_VERTEX_ATTRIB_POINTER = 96;
+var GL_COMMAND_VIEW_PORT = 97;
+
+var gl = __gl;
+
+// _gl save the orignal gl functions.
+var _gl = {};
+for (var k in gl) {
+ _gl[k] = gl[k];
+}
+
+var total_size = 100000;
+var next_index = 0;
+var buffer_data;
+var commandCount = 0;
+
+// Batch GL commands is enabled by default.
+function batchGLCommandsToNative() {
+ if (gl._flushCommands) {
+ if (isSupportTypeArray()) {
+ console.log('Enable batch GL commands optimization!');
+ attachMethodOpt();
+ buffer_data = new Float32Array(total_size);
+ } else {
+ console.log('Disable batch GL commands, TypedArray Native API isn\'t supported!');
+ }
+ } else {
+ console.log('Disable batch GL commands, _flushCommands isn\'t binded!');
+ }
+}
+
+function disableBatchGLCommandsToNative() {
+ // Reset __gl variable to the default one.
+ flushCommands();
+ for (var k in _gl) {
+ __gl[k] = _gl[k];
+ }
+ console.log('Disable batch GL commands optimization!');
+ jsb.disableBatchGLCommandsToNative();
+}
+
+function flushCommands() {
+ if (next_index > 0) {
+ gl._flushCommands(next_index, buffer_data, commandCount);
+ next_index = 0;
+ commandCount = 0;
+ }
+}
+
+function activeTextureOpt(texture) {
+ // console.log('GLOpt: activeTexture');
+ if (next_index + 2 > total_size) {
+ flushCommands();
+ }
+ buffer_data[next_index] = GL_COMMAND_ACTIVE_TEXTURE;
+ buffer_data[next_index + 1] = texture;
+ next_index += 2;
+ ++commandCount;
+}
+
+function attachShaderOpt(program, shader) {
+ // console.log('GLOpt: attachShader');
+ if (next_index + 3 > total_size) {
+ flushCommands();
+ }
+ buffer_data[next_index] = GL_COMMAND_ATTACH_SHADER;
+ buffer_data[next_index + 1] = program ? program._id : 0;
+ buffer_data[next_index + 2] = shader ? shader._id : 0;
+ next_index += 3;
+ ++commandCount;
+}
+
+function bindAttribLocationOpt(program, index, name) {
+ // console.log('GLOpt: bindAttribLocation');
+ flushCommands();
+ _gl.bindAttribLocation(program, index, name);
+}
+
+function bindBufferOpt(target, buffer) {
+ // console.log('GLOpt: bindBuffer: ' + (buffer? buffer._id : null));
+ if (next_index + 3 > total_size) {
+ flushCommands();
+ }
+ buffer_data[next_index] = GL_COMMAND_BIND_BUFFER;
+ buffer_data[next_index + 1] = target;
+ buffer_data[next_index + 2] = buffer ? buffer._id : 0;
+ next_index += 3;
+ ++commandCount;
+}
+
+function bindFramebufferOpt(target, framebuffer) {
+ // console.log('GLOpt: bindFramebuffer');
+ if (next_index + 3 > total_size) {
+ flushCommands();
+ }
+ buffer_data[next_index] = GL_COMMAND_BIND_FRAME_BUFFER;
+ buffer_data[next_index + 1] = target;
+ buffer_data[next_index + 2] = framebuffer ? framebuffer._id : 0;
+ next_index += 3;
+ ++commandCount;
+}
+
+function bindRenderbufferOpt(target, renderbuffer) {
+ // console.log('GLOpt: bindRenderbuffer');
+ if (next_index + 3 > total_size) {
+ flushCommands();
+ }
+ buffer_data[next_index] = GL_COMMAND_BIND_RENDER_BUFFER;
+ buffer_data[next_index + 1] = target;
+ buffer_data[next_index + 2] = renderbuffer ? renderbuffer._id : 0;
+ next_index += 3;
+ ++commandCount;
+}
+
+function bindTextureOpt(target, texture) {
+ // console.log('GLOpt: bindTexture');
+ if (next_index + 3 > total_size) {
+ flushCommands();
+ }
+ buffer_data[next_index] = GL_COMMAND_BIND_TEXTURE;
+ buffer_data[next_index + 1] = target;
+ buffer_data[next_index + 2] = texture ? texture._id : 0;
+ next_index += 3;
+ ++commandCount;
+}
+
+function blendColorOpt(red, green, blue, alpha) {
+ // console.log('GLOpt: blendColor');
+ if (next_index + 5 > total_size) {
+ flushCommands();
+ }
+ buffer_data[next_index] = GL_COMMAND_BLEND_COLOR;
+ buffer_data[next_index + 1] = red;
+ buffer_data[next_index + 2] = green;
+ buffer_data[next_index + 3] = blue;
+ buffer_data[next_index + 4] = alpha;
+ next_index += 5;
+ ++commandCount;
+}
+
+function blendEquationOpt(mode) {
+ // console.log('GLOpt: blendEquation');
+ if (next_index + 2 > total_size) {
+ flushCommands();
+ }
+ buffer_data[next_index] = GL_COMMAND_BLEND_EQUATION;
+ buffer_data[next_index + 1] = mode;
+ next_index += 2;
+ ++commandCount;
+}
+
+function blendEquationSeparateOpt(modeRGB, modeAlpha) {
+ // console.log('GLOpt: blendEquationSeparate');
+ if (next_index + 3 > total_size) {
+ flushCommands();
+ }
+ buffer_data[next_index] = GL_COMMAND_BLEND_EQUATION_SEPARATE;
+ buffer_data[next_index + 1] = modeRGB;
+ buffer_data[next_index + 2] = modeAlpha;
+ next_index += 3;
+ ++commandCount;
+}
+
+function blendFuncOpt(sfactor, dfactor) {
+ // console.log('GLOpt: blendFunc');
+ if (next_index + 3 > total_size) {
+ flushCommands();
+ }
+ buffer_data[next_index] = GL_COMMAND_BLEND_FUNC;
+ buffer_data[next_index + 1] = sfactor;
+ buffer_data[next_index + 2] = dfactor;
+ next_index += 3;
+ ++commandCount;
+}
+
+function blendFuncSeparateOpt(srcRGB, dstRGB, srcAlpha, dstAlpha) {
+ // console.log('GLOpt: blendFuncSeparate');
+ if (next_index + 5 > total_size) {
+ flushCommands();
+ }
+ buffer_data[next_index] = GL_COMMAND_BLEND_FUNC_SEPARATE;
+ buffer_data[next_index + 1] = srcRGB;
+ buffer_data[next_index + 2] = dstRGB;
+ buffer_data[next_index + 3] = srcAlpha;
+ buffer_data[next_index + 4] = dstAlpha;
+ next_index += 5;
+ ++commandCount;
+}
+
+function bufferDataOpt(target, data, usage) {
+ flushCommands();
+ // console.log('GLOpt: bufferData');
+ _gl.bufferData(target, data, usage);
+}
+
+function bufferSubDataOpt(target, offset, data) {
+ flushCommands();
+ // console.log('GLOpt: bufferSubData');
+ _gl.bufferSubData(target, offset, data);
+}
+
+function checkFramebufferStatusOpt(target) {
+ flushCommands();
+ // console.log('GLOpt: checkFramebufferStatus');
+ return _gl.checkFramebufferStatus(target);
+}
+
+function clearOpt(mask) {
+ // console.log('GLOpt: clear');
+ if (next_index + 2 > total_size) {
+ flushCommands();
+ }
+ buffer_data[next_index] = GL_COMMAND_CLEAR;
+ buffer_data[next_index + 1] = mask;
+ next_index += 2;
+ ++commandCount;
+}
+
+function clearColorOpt(red, green, blue, alpha) {
+ // console.log('GLOpt: clearColor');
+ if (next_index + 5 > total_size) {
+ flushCommands();
+ }
+ buffer_data[next_index] = GL_COMMAND_CLEAR_COLOR;
+ buffer_data[next_index + 1] = red;
+ buffer_data[next_index + 2] = green;
+ buffer_data[next_index + 3] = blue;
+ buffer_data[next_index + 4] = alpha;
+ next_index += 5;
+ ++commandCount;
+}
+
+function clearDepthOpt(depth) {
+ // console.log('GLOpt: clearDepth');
+ if (next_index + 2 > total_size) {
+ flushCommands();
+ }
+ buffer_data[next_index] = GL_COMMAND_CLEAR_DEPTH;
+ buffer_data[next_index + 1] = depth;
+ next_index += 2;
+ ++commandCount;
+}
+
+function clearStencilOpt(s) {
+ // console.log('GLOpt: clearStencil');
+ if (next_index + 2 > total_size) {
+ flushCommands();
+ }
+ buffer_data[next_index] = GL_COMMAND_CLEAR_STENCIL;
+ buffer_data[next_index + 1] = s;
+ next_index += 2;
+ ++commandCount;
+}
+
+function colorMaskOpt(red, green, blue, alpha) {
+ // console.log('GLOpt: colorMask');
+ if (next_index + 5 > total_size) {
+ flushCommands();
+ }
+ buffer_data[next_index] = GL_COMMAND_COLOR_MASK;
+ buffer_data[next_index + 1] = red ? 1 : 0;
+ buffer_data[next_index + 2] = green ? 1 : 0;
+ buffer_data[next_index + 3] = blue ? 1 : 0;
+ buffer_data[next_index + 4] = alpha ? 1 : 0;
+ next_index += 5;
+ ++commandCount;
+}
+
+function compileShaderOpt(shader) {
+ // console.log('GLOpt: compileShader');
+ if (next_index + 2 > total_size) {
+ flushCommands();
+ }
+ buffer_data[next_index] = GL_COMMAND_COMPILE_SHADER;
+ buffer_data[next_index + 1] = shader ? shader._id : 0;
+ next_index += 2;
+ ++commandCount;
+}
+
+function compressedTexImage2DOpt(target, level, internalformat, width, height, border, data) {
+ // console.log('GLOpt: compressedTexImage2D');
+ flushCommands();
+ _gl.compressedTexImage2D(target, level, internalformat, width, height, border, data);
+}
+
+function compressedTexSubImage2DOpt(target, level, xoffset, yoffset, width, height, format, data) {
+ // console.log('GLOpt: compressedTexSubImage2D');
+ flushCommands();
+ _gl.compressedTexSubImage2D(target, level, xoffset, yoffset, width, height, format, data);
+}
+
+function copyTexImage2DOpt(target, level, internalformat, x, y, width, height, border) {
+ // console.log('GLOpt: copyTexImage2D');
+ if (next_index + 9 > total_size) {
+ flushCommands();
+ }
+ buffer_data[next_index] = GL_COMMAND_COPY_TEX_IMAGE_2D;
+ buffer_data[next_index + 1] = target;
+ buffer_data[next_index + 2] = level;
+ buffer_data[next_index + 3] = internalformat;
+ buffer_data[next_index + 4] = x;
+ buffer_data[next_index + 5] = y;
+ buffer_data[next_index + 6] = width;
+ buffer_data[next_index + 7] = height;
+ buffer_data[next_index + 8] = border;
+ next_index += 9;
+ ++commandCount;
+}
+
+function copyTexSubImage2DOpt(target, level, xoffset, yoffset, x, y, width, height) {
+ // console.log('GLOpt: copyTexSubImage2D');
+ if (next_index + 9 > total_size) {
+ flushCommands();
+ }
+ buffer_data[next_index] = GL_COMMAND_COPY_TEX_SUB_IMAGE_2D;
+ buffer_data[next_index + 1] = target;
+ buffer_data[next_index + 2] = level;
+ buffer_data[next_index + 3] = xoffset;
+ buffer_data[next_index + 4] = yoffset;
+ buffer_data[next_index + 5] = x;
+ buffer_data[next_index + 6] = y;
+ buffer_data[next_index + 7] = width;
+ buffer_data[next_index + 8] = height;
+ next_index += 9;
+ ++commandCount;
+}
+
+function createBufferOpt() {
+ flushCommands();
+
+ var ret = _gl.createBuffer();
+ // console.log('GLOpt: createBuffer: ' + ret._id);
+ return ret;
+}
+
+function createFramebufferOpt() {
+ flushCommands();
+ // console.log('GLOpt: createFramebuffer');
+ return _gl.createFramebuffer();
+}
+
+function createProgramOpt() {
+ flushCommands();
+ // console.log('GLOpt: createProgram');
+ return _gl.createProgram();
+}
+
+function createRenderbufferOpt() {
+ flushCommands();
+ // console.log('GLOpt: createRenderbuffer');
+ return _gl.createRenderbuffer();
+}
+
+function createShaderOpt(type) {
+ // console.log('GLOpt: createShader');
+ flushCommands();
+ return _gl.createShader(type);
+}
+
+function createTextureOpt() {
+ flushCommands();
+ // console.log('GLOpt: createTexture');
+ return _gl.createTexture();
+}
+
+function cullFaceOpt(mode) {
+ // console.log('GLOpt: cullFace');
+ if (next_index + 2 >= total_size) {
+ flushCommands();
+ }
+ buffer_data[next_index] = GL_COMMAND_CULL_FACE;
+ buffer_data[next_index + 1] = mode;
+ next_index += 2;
+ ++commandCount;
+}
+
+function deleteBufferOpt(buffer) {
+ // console.log('GLOpt: deleteBuffer');
+ if (next_index + 2 >= total_size) {
+ flushCommands();
+ }
+ buffer_data[next_index] = GL_COMMAND_DELETE_BUFFER;
+ buffer_data[next_index + 1] = buffer ? buffer._id : 0;
+ next_index += 2;
+ ++commandCount;
+}
+
+function deleteFramebufferOpt(framebuffer) {
+ // console.log('GLOpt: deleteFramebuffer');
+ if (next_index + 2 >= total_size) {
+ flushCommands();
+ }
+ buffer_data[next_index] = GL_COMMAND_DELETE_FRAME_BUFFER;
+ buffer_data[next_index + 1] = framebuffer ? framebuffer._id : 0;
+ next_index += 2;
+ ++commandCount;
+}
+
+function deleteProgramOpt(program) {
+ // console.log('GLOpt: deleteProgram');
+ if (next_index + 2 >= total_size) {
+ flushCommands();
+ }
+ buffer_data[next_index] = GL_COMMAND_DELETE_PROGRAM;
+ buffer_data[next_index + 1] = program ? program._id : 0;
+ next_index += 2;
+ ++commandCount;
+}
+
+function deleteRenderbufferOpt(renderbuffer) {
+ // console.log('GLOpt: deleteRenderbuffer');
+ if (next_index + 2 >= total_size) {
+ flushCommands();
+ }
+ buffer_data[next_index] = GL_COMMAND_DELETE_RENDER_BUFFER;
+ buffer_data[next_index + 1] = renderbuffer ? renderbuffer._id : 0;
+ next_index += 2;
+ ++commandCount;
+}
+
+function deleteShaderOpt(shader) {
+ // console.log('GLOpt: deleteShader');
+ if (next_index + 2 >= total_size) {
+ flushCommands();
+ }
+ buffer_data[next_index] = GL_COMMAND_DELETE_SHADER;
+ buffer_data[next_index + 1] = shader ? shader._id : 0;
+ next_index += 2;
+ ++commandCount;
+}
+
+function deleteTextureOpt(texture) {
+ // console.log('GLOpt: deleteTexture');
+ if (next_index + 2 >= total_size) {
+ flushCommands();
+ }
+ buffer_data[next_index] = GL_COMMAND_DELETE_TEXTURE;
+ buffer_data[next_index + 1] = texture ? texture._id : 0;
+ next_index += 2;
+ ++commandCount;
+}
+
+function depthFuncOpt(func) {
+ // console.log('GLOpt: depthFunc');
+ if (next_index + 2 >= total_size) {
+ flushCommands();
+ }
+ buffer_data[next_index] = GL_COMMAND_DEPTH_FUNC;
+ buffer_data[next_index + 1] = func;
+ next_index += 2;
+ ++commandCount;
+}
+
+function depthMaskOpt(flag) {
+ // console.log('GLOpt: depthMask');
+ if (next_index + 2 >= total_size) {
+ flushCommands();
+ }
+ buffer_data[next_index] = GL_COMMAND_DEPTH_MASK;
+ buffer_data[next_index + 1] = flag ? 1 : 0;
+ next_index += 2;
+ ++commandCount;
+}
+
+function depthRangeOpt(zNear, zFar) {
+ // console.log('GLOpt: depthRange');
+ if (next_index + 3 >= total_size) {
+ flushCommands();
+ }
+ buffer_data[next_index] = GL_COMMAND_DEPTH_RANGE;
+ buffer_data[next_index + 1] = zNear;
+ buffer_data[next_index + 2] = zFar;
+ next_index += 3;
+ ++commandCount;
+}
+
+function detachShaderOpt(program, shader) {
+ // console.log('GLOpt: detachShader');
+ if (next_index + 3 >= total_size) {
+ flushCommands();
+ }
+ buffer_data[next_index] = GL_COMMAND_DETACH_SHADER;
+ buffer_data[next_index + 1] = program ? program._id : 0;
+ buffer_data[next_index + 2] = shader ? shader._id : 0;
+ next_index += 3;
+ ++commandCount;
+}
+
+function disableOpt(cap) {
+ // console.log('GLOpt: disable');
+ if (next_index + 2 >= total_size) {
+ flushCommands();
+ }
+ buffer_data[next_index] = GL_COMMAND_DISABLE;
+ buffer_data[next_index + 1] = cap;
+ next_index += 2;
+ ++commandCount;
+}
+
+function disableVertexAttribArrayOpt(index) {
+ // console.log('GLOpt: disableVertexAttribArray');
+ if (next_index + 2 >= total_size) {
+ flushCommands();
+ }
+ buffer_data[next_index] = GL_COMMAND_DISABLE_VERTEX_ATTRIB_ARRAY;
+ buffer_data[next_index + 1] = index;
+ next_index += 2;
+ ++commandCount;
+}
+
+function drawArraysOpt(mode, first, count) {
+ // console.log('GLOpt: drawArrays');
+ if (next_index + 4 >= total_size) {
+ flushCommands();
+ }
+ buffer_data[next_index] = GL_COMMAND_DRAW_ARRAYS;
+ buffer_data[next_index + 1] = mode;
+ buffer_data[next_index + 2] = first;
+ buffer_data[next_index + 3] = count;
+ next_index += 4;
+ ++commandCount;
+}
+
+function drawElementsOpt(mode, count, type, offset) {
+ // console.log('GLOpt: drawElements');
+ if (next_index + 5 >= total_size) {
+ flushCommands();
+ }
+ buffer_data[next_index] = GL_COMMAND_DRAW_ELEMENTS;
+ buffer_data[next_index + 1] = mode;
+ buffer_data[next_index + 2] = count;
+ buffer_data[next_index + 3] = type;
+ buffer_data[next_index + 4] = offset ? offset : 0;
+ next_index += 5;
+ ++commandCount;
+}
+
+function enableOpt(cap) {
+ // console.log('GLOpt: enable');
+ if (next_index + 2 >= total_size) {
+ flushCommands();
+ }
+ buffer_data[next_index] = GL_COMMAND_ENABLE;
+ buffer_data[next_index + 1] = cap;
+ next_index += 2;
+ ++commandCount;
+}
+
+function enableVertexAttribArrayOpt(index) {
+ // console.log('GLOpt: enableVertexAttribArray');
+ if (next_index + 2 >= total_size) {
+ flushCommands();
+ }
+ buffer_data[next_index] = GL_COMMAND_ENABLE_VERTEX_ATTRIB_ARRAY;
+ buffer_data[next_index + 1] = index;
+ next_index += 2;
+ ++commandCount;
+}
+
+function finishOpt() {
+ // console.log('GLOpt: finish');
+ if (next_index + 1 >= total_size) {
+ flushCommands();
+ }
+ buffer_data[next_index] = GL_COMMAND_FINISH;
+ next_index += 1;
+ ++commandCount;
+}
+
+function flushOpt() {
+ // console.log('GLOpt: flush');
+ if (next_index + 1 >= total_size) {
+ flushCommands();
+ }
+ buffer_data[next_index] = GL_COMMAND_FLUSH;
+ next_index += 1;
+ ++commandCount;
+}
+
+function framebufferRenderbufferOpt(target, attachment, renderbuffertarget, renderbuffer) {
+ // console.log('GLOpt: framebufferRenderbuffer');
+ if (next_index + 5 >= total_size) {
+ flushCommands();
+ }
+ buffer_data[next_index] = GL_COMMAND_FRAME_BUFFER_RENDER_BUFFER;
+ buffer_data[next_index + 1] = target;
+ buffer_data[next_index + 2] = attachment;
+ buffer_data[next_index + 3] = renderbuffertarget;
+ buffer_data[next_index + 4] = renderbuffer ? renderbuffer._id : 0;
+ next_index += 5;
+ ++commandCount;
+}
+
+function framebufferTexture2DOpt(target, attachment, textarget, texture, level) {
+ // console.log('GLOpt: framebufferTexture2D');
+ if (next_index + 6 >= total_size) {
+ flushCommands();
+ }
+ buffer_data[next_index] = GL_COMMAND_FRAME_BUFFER_TEXTURE_2D;
+ buffer_data[next_index + 1] = target;
+ buffer_data[next_index + 2] = attachment;
+ buffer_data[next_index + 3] = textarget;
+ buffer_data[next_index + 4] = texture ? texture._id : 0;
+ buffer_data[next_index + 5] = level;
+ next_index += 6;
+ ++commandCount;
+}
+
+function frontFaceOpt(mode) {
+ // console.log('GLOpt: frontFace');
+ if (next_index + 2 >= total_size) {
+ flushCommands();
+ }
+ buffer_data[next_index] = GL_COMMAND_FRONT_FACE;
+ buffer_data[next_index + 1] = mode;
+ next_index += 2;
+ ++commandCount;
+}
+
+function generateMipmapOpt(target) {
+ // console.log('GLOpt: generateMipmap');
+ if (next_index + 2 >= total_size) {
+ flushCommands();
+ }
+ buffer_data[next_index] = GL_COMMAND_GENERATE_MIPMAP;
+ buffer_data[next_index + 1] = target;
+ next_index += 2;
+ ++commandCount;
+}
+
+function getActiveAttribOpt(program, index) {
+ // console.log('GLOpt: getActiveAttrib');
+ flushCommands();
+ return _gl.getActiveAttrib(program, index);
+}
+
+function getActiveUniformOpt(program, index) {
+ // console.log('GLOpt: getActiveUniform');
+ flushCommands();
+ return _gl.getActiveUniform(program, index);
+}
+
+function getAttachedShadersOpt(program) {
+ // console.log('GLOpt: getAttachedShaders');
+ flushCommands();
+ return _gl.getAttachedShaders(program);
+}
+
+function getAttribLocationOpt(program, name) {
+ // console.log('GLOpt: getAttribLocation');
+ flushCommands();
+ return _gl.getAttribLocation(program, name);
+}
+
+function getBufferParameterOpt(target, pname) {
+ // console.log('GLOpt: getBufferParameter');
+ flushCommands();
+ return _gl.getBufferParameter(target, pname);
+}
+
+function getParameterOpt(pname) {
+ // console.log('GLOpt: getParameter');
+ flushCommands();
+ return _gl.getParameter(pname);
+}
+
+function getErrorOpt() {
+ // console.log('GLOpt: getError');
+ flushCommands();
+ return _gl.getError();
+}
+
+function getFramebufferAttachmentParameterOpt(target, attachment, pname) {
+ // console.log('GLOpt: getFramebufferAttachmentParameter');
+ flushCommands();
+ return _gl.getFramebufferAttachmentParameter(target, attachment, pname);
+}
+
+function getProgramParameterOpt(program, pname) {
+ // console.log('GLOpt: getProgramParameter');
+ flushCommands();
+ return _gl.getProgramParameter(program, pname);
+}
+
+function getProgramInfoLogOpt(program) {
+ // console.log('GLOpt: getProgramInfoLog');
+ flushCommands();
+ return _gl.getProgramInfoLog(program);
+}
+
+function getRenderbufferParameterOpt(target, pname) {
+ // console.log('GLOpt: getRenderbufferParameter');
+ flushCommands();
+ return _gl.getRenderbufferParameter(target, pname);
+}
+
+function getShaderParameterOpt(shader, pname) {
+ // console.log('GLOpt: getShaderParameter');
+ flushCommands();
+ return _gl.getShaderParameter(shader, pname);
+}
+
+function getShaderPrecisionFormatOpt(shadertype, precisiontype) {
+ // console.log('GLOpt: getShaderPrecisionFormat');
+ flushCommands();
+ return _gl.getShaderPrecisionFormat(shadertype, precisiontype);
+}
+
+function getShaderInfoLogOpt(shader) {
+ // console.log('GLOpt: getShaderInfoLog');
+ flushCommands();
+ return _gl.getShaderInfoLog(shader);
+}
+
+function getShaderSourceOpt(shader) {
+ // console.log('GLOpt: getShaderSource');
+ flushCommands();
+ return _gl.getShaderSource(shader);
+}
+
+function getTexParameterOpt(target, pname) {
+ // console.log('GLOpt: getTexParameter');
+ flushCommands();
+ return _gl.getTexParameter(target, pname);
+}
+
+function getUniformOpt(program, location) {
+ // console.log('GLOpt: getUniform');
+ flushCommands();
+ return _gl.getUniform(program, location);
+}
+
+function getUniformLocationOpt(program, name) {
+ // console.log('GLOpt: getUniformLocation');
+ flushCommands();
+ return _gl.getUniformLocation(program, name);
+}
+
+function getVertexAttribOpt(index, pname) {
+ // console.log('GLOpt: getVertexAttrib');
+ flushCommands();
+ return _gl.getVertexAttrib(index, pname);
+}
+
+function getVertexAttribOffsetOpt(index, pname) {
+ // console.log('GLOpt: getVertexAttribOffset');
+ flushCommands();
+ return _gl.getVertexAttribOffset(index, pname);
+}
+
+function hintOpt(target, mode) {
+ // console.log('GLOpt: hint');
+ if (next_index + 3 >= total_size) {
+ flushCommands();
+ }
+ buffer_data[next_index] = GL_COMMAND_HINT;
+ buffer_data[next_index + 1] = target;
+ buffer_data[next_index + 2] = mode;
+ next_index += 3;
+ ++commandCount;
+}
+
+function isBufferOpt(buffer) {
+ // console.log('GLOpt: isBuffer');
+ flushCommands();
+ return _gl.isBuffer(buffer);
+}
+
+function isEnabledOpt(cap) {
+ // console.log('GLOpt: isEnabled');
+ flushCommands();
+ return _gl.isEnabled(cap);
+}
+
+function isFramebufferOpt(framebuffer) {
+ // console.log('GLOpt: isFramebuffer');
+ flushCommands();
+ return _gl.isFramebuffer(framebuffer);
+}
+
+function isProgramOpt(program) {
+ // console.log('GLOpt: isProgram');
+ flushCommands();
+ return _gl.isProgram(program);
+}
+
+function isRenderbufferOpt(renderbuffer) {
+ // console.log('GLOpt: isRenderbuffer');
+ flushCommands();
+ return _gl.isRenderbuffer(renderbuffer);
+}
+
+function isShaderOpt(shader) {
+ // console.log('GLOpt: isShader');
+ flushCommands();
+ return _gl.isShader(shader);
+}
+
+function isTextureOpt(texture) {
+ // console.log('GLOpt: isTexture');
+ flushCommands();
+ return _gl.isTexture(texture);
+}
+
+function lineWidthOpt(width) {
+ // console.log('GLOpt: lineWidth');
+ if (next_index + 2 >= total_size) {
+ flushCommands();
+ }
+ buffer_data[next_index] = GL_COMMAND_LINE_WIDTH;
+ buffer_data[next_index + 1] = width;
+ next_index += 2;
+ ++commandCount;
+}
+
+function linkProgramOpt(program) {
+ // console.log('GLOpt: linkProgram');
+ if (next_index + 2 >= total_size) {
+ flushCommands();
+ }
+ buffer_data[next_index] = GL_COMMAND_LINK_PROGRAM;
+ buffer_data[next_index + 1] = program ? program._id : 0;
+ next_index += 2;
+ ++commandCount;
+}
+
+function pixelStoreiOpt(pname, param) {
+ // console.log('GLOpt: pixelStorei');
+ if (next_index + 3 >= total_size) {
+ flushCommands();
+ }
+ buffer_data[next_index] = GL_COMMAND_PIXEL_STOREI;
+ buffer_data[next_index + 1] = pname;
+ buffer_data[next_index + 2] = param;
+ next_index += 3;
+ ++commandCount;
+}
+
+function polygonOffsetOpt(factor, units) {
+ // console.log('GLOpt: polygonOffset');
+ if (next_index + 3 >= total_size) {
+ flushCommands();
+ }
+ buffer_data[next_index] = GL_COMMAND_POLYGON_OFFSET;
+ buffer_data[next_index + 1] = factor;
+ buffer_data[next_index + 2] = units;
+ next_index += 3;
+ ++commandCount;
+}
+
+function readPixelsOpt(x, y, width, height, format, type, pixels) {
+ // console.log('GLOpt: readPixels');
+ flushCommands();
+ _gl.readPixels(x, y, width, height, format, type, pixels);
+}
+
+function renderbufferStorageOpt(target, internalFormat, width, height) {
+ // console.log('GLOpt: renderbufferStorage');
+ if (next_index + 5 >= total_size) {
+ flushCommands();
+ }
+ buffer_data[next_index] = GL_COMMAND_RENDER_BUFFER_STORAGE;
+ buffer_data[next_index + 1] = target;
+ buffer_data[next_index + 2] = internalFormat;
+ buffer_data[next_index + 3] = width;
+ buffer_data[next_index + 4] = height;
+ next_index += 5;
+ ++commandCount;
+}
+
+function sampleCoverageOpt(value, invert) {
+ // console.log('GLOpt: sampleCoverage');
+ if (next_index + 3 >= total_size) {
+ flushCommands();
+ }
+ buffer_data[next_index] = GL_COMMAND_SAMPLE_COVERAGE;
+ buffer_data[next_index + 1] = value;
+ buffer_data[next_index + 2] = invert ? 1 : 0;
+ next_index += 3;
+ ++commandCount;
+}
+
+function scissorOpt(x, y, width, height) {
+ // console.log('GLOpt: scissor');
+ if (next_index + 5 >= total_size) {
+ flushCommands();
+ }
+ buffer_data[next_index] = GL_COMMAND_SCISSOR;
+ buffer_data[next_index + 1] = x;
+ buffer_data[next_index + 2] = y;
+ buffer_data[next_index + 3] = width;
+ buffer_data[next_index + 4] = height;
+ next_index += 5;
+ ++commandCount;
+}
+
+function shaderSourceOpt(shader, source) {
+ // console.log('GLOpt: shaderSource');
+ flushCommands();
+ _gl.shaderSource(shader, source);
+}
+
+function stencilFuncOpt(func, ref, mask) {
+ // console.log('GLOpt: stencilFunc');
+ if (next_index + 4 >= total_size) {
+ flushCommands();
+ }
+ buffer_data[next_index] = GL_COMMAND_STENCIL_FUNC;
+ buffer_data[next_index + 1] = func;
+ buffer_data[next_index + 2] = ref;
+ buffer_data[next_index + 3] = mask;
+ next_index += 4;
+ ++commandCount;
+}
+
+function stencilFuncSeparateOpt(face, func, ref, mask) {
+ // console.log('GLOpt: stencilFuncSeparate');
+ if (next_index + 5 >= total_size) {
+ flushCommands();
+ }
+ buffer_data[next_index] = GL_COMMAND_STENCIL_FUNC_SEPARATE;
+ buffer_data[next_index + 1] = face;
+ buffer_data[next_index + 2] = func;
+ buffer_data[next_index + 3] = ref;
+ buffer_data[next_index + 4] = mask;
+ next_index += 5;
+ ++commandCount;
+}
+
+function stencilMaskOpt(mask) {
+ // console.log('GLOpt: stencilMask');
+ if (next_index + 2 >= total_size) {
+ flushCommands();
+ }
+ buffer_data[next_index] = GL_COMMAND_STENCIL_MASK;
+ buffer_data[next_index + 1] = mask;
+ next_index += 2;
+ ++commandCount;
+}
+
+function stencilMaskSeparateOpt(face, mask) {
+ // console.log('GLOpt: stencilMaskSeparate');
+ if (next_index + 3 >= total_size) {
+ flushCommands();
+ }
+ buffer_data[next_index] = GL_COMMAND_STENCIL_MASK_SEPARATE;
+ buffer_data[next_index + 1] = face;
+ buffer_data[next_index + 2] = mask;
+ next_index += 3;
+ ++commandCount;
+}
+
+function stencilOpOpt(fail, zfail, zpass) {
+ // console.log('GLOpt: stencilOp');
+ if (next_index + 4 >= total_size) {
+ flushCommands();
+ }
+ buffer_data[next_index] = GL_COMMAND_STENCIL_OP;
+ buffer_data[next_index + 1] = fail;
+ buffer_data[next_index + 2] = zfail;
+ buffer_data[next_index + 3] = zpass;
+ next_index += 4;
+ ++commandCount;
+}
+
+function stencilOpSeparateOpt(face, fail, zfail, zpass) {
+ // console.log('GLOpt: stencilOpSeparate');
+ if (next_index + 5 >= total_size) {
+ flushCommands();
+ }
+ buffer_data[next_index] = GL_COMMAND_STENCIL_OP_SEPARATE;
+ buffer_data[next_index + 1] = face;
+ buffer_data[next_index + 2] = fail;
+ buffer_data[next_index + 3] = zfail;
+ buffer_data[next_index + 4] = zpass;
+ next_index += 5;
+ ++commandCount;
+}
+
+function texImage2DOpt() {
+ flushCommands();
+ // console.log('GLOpt: texImage2D');
+ var argCount = arguments.length;
+ if (argCount === 6) {
+ _gl.texImage2D(arguments[0], arguments[1], arguments[2], arguments[3], arguments[4], arguments[5]);
+ } else if (argCount === 9) {
+ _gl.texImage2D(arguments[0], arguments[1], arguments[2], arguments[3], arguments[4], arguments[5], arguments[6], arguments[7], arguments[8]);
+ } else {
+ console.log('texImage2DOpt: Wrong number of arguments, expected 6 or 9 but got ' + argCount);
+ }
+}
+
+function texParameterfOpt(target, pname, param) {
+ // console.log('GLOpt: texParameterf');
+ if (next_index + 4 >= total_size) {
+ flushCommands();
+ }
+ buffer_data[next_index] = GL_COMMAND_TEX_PARAMETER_F;
+ buffer_data[next_index + 1] = target;
+ buffer_data[next_index + 2] = pname;
+ buffer_data[next_index + 3] = param;
+ next_index += 4;
+ ++commandCount;
+}
+
+function texParameteriOpt(target, pname, param) {
+ // console.log('GLOpt: texParameteri');
+ if (next_index + 4 >= total_size) {
+ flushCommands();
+ }
+ buffer_data[next_index] = GL_COMMAND_TEX_PARAMETER_I;
+ buffer_data[next_index + 1] = target;
+ buffer_data[next_index + 2] = pname;
+ buffer_data[next_index + 3] = param;
+ next_index += 4;
+ ++commandCount;
+}
+
+function texSubImage2DOpt(target, level, xoffset, yoffset, width, height, format, type, pixels) {
+ flushCommands();
+ // console.log('GLOpt: texSubImage2D');
+ var argCount = arguments.length;
+ if (argCount === 7) {
+ _gl.texSubImage2D(arguments[0], arguments[1], arguments[2], arguments[3], arguments[4], arguments[5], arguments[6]);
+ } else if (argCount === 9) {
+ _gl.texSubImage2D(arguments[0], arguments[1], arguments[2], arguments[3], arguments[4], arguments[5], arguments[6], arguments[7], arguments[8]);
+ } else {
+ console.log('texSubImage2DOpt: Wrong number of arguments, expected 7 or 9 but got ' + argCount);
+ }
+}
+
+function uniform1fOpt(location, x) {
+ // console.log('GLOpt: uniform1f');
+ if (next_index + 3 >= total_size) {
+ flushCommands();
+ }
+ buffer_data[next_index] = GL_COMMAND_UNIFORM_1F;
+ buffer_data[next_index + 1] = location;
+ buffer_data[next_index + 2] = x;
+ next_index += 3;
+ ++commandCount;
+}
+
+function uniform2fOpt(location, x, y) {
+ // console.log('GLOpt: uniform2f');
+ if (next_index + 4 >= total_size) {
+ flushCommands();
+ }
+ buffer_data[next_index] = GL_COMMAND_UNIFORM_2F;
+ buffer_data[next_index + 1] = location;
+ buffer_data[next_index + 2] = x;
+ buffer_data[next_index + 3] = y;
+ next_index += 4;
+ ++commandCount;
+}
+
+function uniform3fOpt(location, x, y, z) {
+ // console.log('GLOpt: uniform3f');
+ if (next_index + 5 >= total_size) {
+ flushCommands();
+ }
+ buffer_data[next_index] = GL_COMMAND_UNIFORM_3F;
+ buffer_data[next_index + 1] = location;
+ buffer_data[next_index + 2] = x;
+ buffer_data[next_index + 3] = y;
+ buffer_data[next_index + 4] = z;
+ next_index += 5;
+ ++commandCount;
+}
+
+function uniform4fOpt(location, x, y, z, w) {
+ // console.log('GLOpt: uniform4f');
+ if (next_index + 6 >= total_size) {
+ flushCommands();
+ }
+ buffer_data[next_index] = GL_COMMAND_UNIFORM_4F;
+ buffer_data[next_index + 1] = location;
+ buffer_data[next_index + 2] = x;
+ buffer_data[next_index + 3] = y;
+ buffer_data[next_index + 4] = z;
+ buffer_data[next_index + 5] = w;
+ next_index += 6;
+ ++commandCount;
+}
+
+function uniform1iOpt(location, x) {
+ // console.log('GLOpt: uniform1i');
+ if (next_index + 3 >= total_size) {
+ flushCommands();
+ }
+ buffer_data[next_index] = GL_COMMAND_UNIFORM_1I;
+ buffer_data[next_index + 1] = location;
+ buffer_data[next_index + 2] = x;
+ next_index += 3;
+ ++commandCount;
+}
+
+function uniform2iOpt(location, x, y) {
+ // console.log('GLOpt: uniform2i');
+ if (next_index + 4 >= total_size) {
+ flushCommands();
+ }
+ buffer_data[next_index] = GL_COMMAND_UNIFORM_2I;
+ buffer_data[next_index + 1] = location;
+ buffer_data[next_index + 2] = x;
+ buffer_data[next_index + 3] = y;
+ next_index += 4;
+ ++commandCount;
+}
+
+function uniform3iOpt(location, x, y, z) {
+ // console.log('GLOpt: uniform3i');
+ if (next_index + 5 >= total_size) {
+ flushCommands();
+ }
+ buffer_data[next_index] = GL_COMMAND_UNIFORM_3I;
+ buffer_data[next_index + 1] = location;
+ buffer_data[next_index + 2] = x;
+ buffer_data[next_index + 3] = y;
+ buffer_data[next_index + 4] = z;
+ next_index += 5;
+ ++commandCount;
+}
+
+function uniform4iOpt(location, x, y, z, w) {
+ // console.log('GLOpt: uniform4i');
+ if (next_index + 6 >= total_size) {
+ flushCommands();
+ }
+ buffer_data[next_index] = GL_COMMAND_UNIFORM_4I;
+ buffer_data[next_index + 1] = location;
+ buffer_data[next_index + 2] = x;
+ buffer_data[next_index + 3] = y;
+ buffer_data[next_index + 4] = z;
+ buffer_data[next_index + 5] = w;
+ next_index += 6;
+ ++commandCount;
+}
+
+function uniform1fvOpt(location, value) {
+ // console.log('GLOpt: uniform1fv');
+ if (next_index + 3 + value.length >= total_size) {
+ flushCommands();
+ }
+ buffer_data[next_index] = GL_COMMAND_UNIFORM_1FV;
+ buffer_data[next_index + 1] = location;
+ buffer_data[next_index + 2] = value.length;
+ buffer_data.set(value, next_index + 3);
+ next_index += 3 + value.length;
+ ++commandCount;
+}
+
+function uniform2fvOpt(location, value) {
+ // console.log('GLOpt: uniform2fv');
+ if (next_index + 3 + value.length >= total_size) {
+ flushCommands();
+ }
+ buffer_data[next_index] = GL_COMMAND_UNIFORM_2FV;
+ buffer_data[next_index + 1] = location;
+ buffer_data[next_index + 2] = value.length;
+ buffer_data.set(value, next_index + 3);
+ next_index += 3 + value.length;
+ ++commandCount;
+}
+
+function uniform3fvOpt(location, value) {
+ // console.log('GLOpt: uniform3fv');
+ if (next_index + 3 + value.length >= total_size) {
+ flushCommands();
+ }
+ buffer_data[next_index] = GL_COMMAND_UNIFORM_3FV;
+ buffer_data[next_index + 1] = location;
+ buffer_data[next_index + 2] = value.length;
+ buffer_data.set(value, next_index + 3);
+ next_index += 3 + value.length;
+ ++commandCount;
+}
+
+function uniform4fvOpt(location, value) {
+ // console.log('GLOpt: uniform4fv');
+ if (next_index + 3 + value.length >= total_size) {
+ flushCommands();
+ }
+ buffer_data[next_index] = GL_COMMAND_UNIFORM_4FV;
+ buffer_data[next_index + 1] = location;
+ buffer_data[next_index + 2] = value.length;
+ buffer_data.set(value, next_index + 3);
+ next_index += 3 + value.length;
+ ++commandCount;
+}
+
+function uniform1ivOpt(location, value) {
+ // console.log('GLOpt: uniform1iv');
+ if (next_index + 3 + value.length >= total_size) {
+ flushCommands();
+ }
+ buffer_data[next_index] = GL_COMMAND_UNIFORM_1IV;
+ buffer_data[next_index + 1] = location;
+ buffer_data[next_index + 2] = value.length;
+ buffer_data.set(value, next_index + 3);
+ next_index += 3 + value.length;
+ ++commandCount;
+}
+
+function uniform2ivOpt(location, value) {
+ // console.log('GLOpt: uniform2iv');
+ if (next_index + 3 + value.length >= total_size) {
+ flushCommands();
+ }
+ buffer_data[next_index] = GL_COMMAND_UNIFORM_2IV;
+ buffer_data[next_index + 1] = location;
+ buffer_data[next_index + 2] = value.length;
+ buffer_data.set(value, next_index + 3);
+ next_index += 3 + value.length;
+ ++commandCount;
+}
+
+function uniform3ivOpt(location, value) {
+ // console.log('GLOpt: uniform3iv');
+ if (next_index + 3 + value.length >= total_size) {
+ flushCommands();
+ }
+ buffer_data[next_index] = GL_COMMAND_UNIFORM_3IV;
+ buffer_data[next_index + 1] = location;
+ buffer_data[next_index + 2] = value.length;
+ buffer_data.set(value, next_index + 3);
+ next_index += 3 + value.length;
+ ++commandCount;
+}
+
+function uniform4ivOpt(location, value) {
+ // console.log('GLOpt: uniform4iv');
+ if (next_index + 3 + value.length >= total_size) {
+ flushCommands();
+ }
+ buffer_data[next_index] = GL_COMMAND_UNIFORM_4IV;
+ buffer_data[next_index + 1] = location;
+ buffer_data[next_index + 2] = value.length;
+ buffer_data.set(value, next_index + 3);
+ next_index += 3 + value.length;
+ ++commandCount;
+}
+
+function uniformMatrix2fvOpt(location, transpose, value) {
+ // console.log('GLOpt: uniformMatrix2fv');
+ if (next_index + 4 + value.length >= total_size) {
+ flushCommands();
+ }
+ buffer_data[next_index] = GL_COMMAND_UNIFORM_MATRIX_2FV;
+ buffer_data[next_index + 1] = location;
+ buffer_data[next_index + 2] = transpose;
+ buffer_data[next_index + 3] = value.length;
+ buffer_data.set(value, next_index + 4);
+ next_index += 4 + value.length;
+ ++commandCount;
+}
+
+function uniformMatrix3fvOpt(location, transpose, value) {
+ // console.log('GLOpt: uniformMatrix3fv');
+ if (next_index + 4 + value.length >= total_size) {
+ flushCommands();
+ }
+ buffer_data[next_index] = GL_COMMAND_UNIFORM_MATRIX_3FV;
+ buffer_data[next_index + 1] = location;
+ buffer_data[next_index + 2] = transpose;
+ buffer_data[next_index + 3] = value.length;
+ buffer_data.set(value, next_index + 4);
+ next_index += 4 + value.length;
+ ++commandCount;
+}
+
+function uniformMatrix4fvOpt(location, transpose, value) {
+ // console.log('GLOpt: uniformMatrix4fv');
+ if (next_index + 4 + value.length >= total_size) {
+ flushCommands();
+ }
+ buffer_data[next_index] = GL_COMMAND_UNIFORM_MATRIX_4FV;
+ buffer_data[next_index + 1] = location;
+ buffer_data[next_index + 2] = transpose;
+ buffer_data[next_index + 3] = value.length;
+ buffer_data.set(value, next_index + 4);
+ next_index += 4 + value.length;
+ ++commandCount;
+}
+
+function useProgramOpt(program) {
+ // console.log('GLOpt: useProgram');
+ if (next_index + 2 >= total_size) {
+ flushCommands();
+ }
+ buffer_data[next_index] = GL_COMMAND_USE_PROGRAM;
+ buffer_data[next_index + 1] = program ? program._id : 0;
+ next_index += 2;
+ ++commandCount;
+}
+
+function validateProgramOpt(program) {
+ // console.log('GLOpt: validateProgram');
+ if (next_index + 2 >= total_size) {
+ flushCommands();
+ }
+ buffer_data[next_index] = GL_COMMAND_VALIDATE_PROGRAM;
+ buffer_data[next_index + 1] = program ? program._id : 0;
+ next_index += 2;
+ ++commandCount;
+}
+
+function vertexAttrib1fOpt(index, x) {
+ // console.log('GLOpt: vertexAttrib1f');
+ if (next_index + 3 >= total_size) {
+ flushCommands();
+ }
+ buffer_data[next_index] = GL_COMMAND_VERTEX_ATTRIB_1F;
+ buffer_data[next_index + 1] = index;
+ buffer_data[next_index + 2] = x;
+ next_index += 3;
+ ++commandCount;
+}
+
+function vertexAttrib2fOpt(index, x, y) {
+ // console.log('GLOpt: vertexAttrib2f');
+ if (next_index + 4 >= total_size) {
+ flushCommands();
+ }
+ buffer_data[next_index] = GL_COMMAND_VERTEX_ATTRIB_2F;
+ buffer_data[next_index + 1] = index;
+ buffer_data[next_index + 2] = x;
+ buffer_data[next_index + 3] = y;
+ next_index += 4;
+ ++commandCount;
+}
+
+function vertexAttrib3fOpt(index, x, y, z) {
+ // console.log('GLOpt: vertexAttrib3f');
+ if (next_index + 5 >= total_size) {
+ flushCommands();
+ }
+ buffer_data[next_index] = GL_COMMAND_VERTEX_ATTRIB_3F;
+ buffer_data[next_index + 1] = index;
+ buffer_data[next_index + 2] = x;
+ buffer_data[next_index + 3] = y;
+ buffer_data[next_index + 4] = z;
+ next_index += 5;
+ ++commandCount;
+}
+
+function vertexAttrib4fOpt(index, x, y, z, w) {
+ // console.log('GLOpt: vertexAttrib4f');
+ if (next_index + 6 >= total_size) {
+ flushCommands();
+ }
+ buffer_data[next_index] = GL_COMMAND_VERTEX_ATTRIB_4F;
+ buffer_data[next_index + 1] = index;
+ buffer_data[next_index + 2] = x;
+ buffer_data[next_index + 3] = y;
+ buffer_data[next_index + 4] = z;
+ buffer_data[next_index + 5] = w;
+ next_index += 6;
+ ++commandCount;
+}
+
+function vertexAttrib1fvOpt(index, value) {
+ // console.log('GLOpt: vertexAttrib1fv');
+ if (next_index + 3 + value.length >= total_size) {
+ flushCommands();
+ }
+ buffer_data[next_index] = GL_COMMAND_VERTEX_ATTRIB_1FV;
+ buffer_data[next_index + 1] = index;
+ buffer_data[next_index + 2] = value.length;
+ buffer_data.set(value, next_index + 3);
+ next_index += 3 + value.length;
+ ++commandCount;
+}
+
+function vertexAttrib2fvOpt(index, value) {
+ // console.log('GLOpt: vertexAttrib2fv');
+ if (next_index + 3 + value.length >= total_size) {
+ flushCommands();
+ }
+ buffer_data[next_index] = GL_COMMAND_VERTEX_ATTRIB_2FV;
+ buffer_data[next_index + 1] = index;
+ buffer_data[next_index + 2] = value.length;
+ buffer_data.set(value, next_index + 3);
+ next_index += 3 + value.length;
+ ++commandCount;
+}
+
+function vertexAttrib3fvOpt(index, value) {
+ // console.log('GLOpt: vertexAttrib3fv');
+ if (next_index + 3 + value.length >= total_size) {
+ flushCommands();
+ }
+ buffer_data[next_index] = GL_COMMAND_VERTEX_ATTRIB_3FV;
+ buffer_data[next_index + 1] = index;
+ buffer_data[next_index + 2] = value.length;
+ buffer_data.set(value, next_index + 3);
+ next_index += 3 + value.length;
+ ++commandCount;
+}
+
+function vertexAttrib4fvOpt(index, value) {
+ // console.log('GLOpt: vertexAttrib4fv');
+ if (next_index + 3 + value.length >= total_size) {
+ flushCommands();
+ }
+ buffer_data[next_index] = GL_COMMAND_VERTEX_ATTRIB_4FV;
+ buffer_data[next_index + 1] = index;
+ buffer_data[next_index + 2] = value.length;
+ buffer_data.set(value, next_index + 3);
+ next_index += 3 + value.length;
+ ++commandCount;
+}
+
+function vertexAttribPointerOpt(index, size, type, normalized, stride, offset) {
+ // console.log('GLOpt: vertexAttribPointer');
+ if (next_index + 7 >= total_size) {
+ flushCommands();
+ }
+ buffer_data[next_index] = GL_COMMAND_VERTEX_ATTRIB_POINTER;
+ buffer_data[next_index + 1] = index;
+ buffer_data[next_index + 2] = size;
+ buffer_data[next_index + 3] = type;
+ buffer_data[next_index + 4] = normalized ? 1 : 0;
+ buffer_data[next_index + 5] = stride;
+ buffer_data[next_index + 6] = offset;
+ next_index += 7;
+ ++commandCount;
+}
+
+function viewportOpt(x, y, width, height) {
+ // console.log('GLOpt: viewport');
+ if (next_index + 5 >= total_size) {
+ flushCommands();
+ }
+ buffer_data[next_index] = GL_COMMAND_VIEW_PORT;
+ buffer_data[next_index + 1] = x;
+ buffer_data[next_index + 2] = y;
+ buffer_data[next_index + 3] = width;
+ buffer_data[next_index + 4] = height;
+ next_index += 5;
+ ++commandCount;
+}
+
+function isSupportTypeArray() {
+ //FIXME:
+ // if (GameStatusInfo.platform == 'android') {
+ return true;
+ // }
+ // var info = BK.Director.queryDeviceInfo();
+ // var vers = info.version.split('.');
+ // if (info.platform == 'ios' && Number(vers[0]) >= 10) {
+ // return true;
+ // }
+ // return false;
+}
+
+function attachMethodOpt() {
+ gl.activeTexture = activeTextureOpt;
+ gl.attachShader = attachShaderOpt;
+ gl.bindAttribLocation = bindAttribLocationOpt;
+ gl.bindBuffer = bindBufferOpt;
+ gl.bindFramebuffer = bindFramebufferOpt;
+ gl.bindRenderbuffer = bindRenderbufferOpt;
+ gl.bindTexture = bindTextureOpt;
+ gl.blendColor = blendColorOpt;
+ gl.blendEquation = blendEquationOpt;
+ gl.blendEquationSeparate = blendEquationSeparateOpt;
+ gl.blendFunc = blendFuncOpt;
+ gl.blendFuncSeparate = blendFuncSeparateOpt;
+ gl.bufferData = bufferDataOpt;
+ gl.bufferSubData = bufferSubDataOpt;
+ gl.checkFramebufferStatus = checkFramebufferStatusOpt;
+ gl.clear = clearOpt;
+ gl.clearColor = clearColorOpt;
+ gl.clearDepth = clearDepthOpt;
+ gl.clearStencil = clearStencilOpt;
+ gl.colorMask = colorMaskOpt;
+ gl.compileShader = compileShaderOpt;
+ gl.compressedTexImage2D = compressedTexImage2DOpt;
+ gl.compressedTexSubImage2D = compressedTexSubImage2DOpt;
+ gl.copyTexImage2D = copyTexImage2DOpt;
+ gl.copyTexSubImage2D = copyTexSubImage2DOpt;
+ gl.createBuffer = createBufferOpt;
+ gl.createFramebuffer = createFramebufferOpt;
+ gl.createProgram = createProgramOpt;
+ gl.createRenderbuffer = createRenderbufferOpt;
+ gl.createShader = createShaderOpt;
+ gl.createTexture = createTextureOpt;
+ gl.cullFace = cullFaceOpt;
+ gl.deleteBuffer = deleteBufferOpt;
+ gl.deleteFramebuffer = deleteFramebufferOpt;
+ gl.deleteProgram = deleteProgramOpt;
+ gl.deleteRenderbuffer = deleteRenderbufferOpt;
+ gl.deleteShader = deleteShaderOpt;
+ gl.deleteTexture = deleteTextureOpt;
+ gl.depthFunc = depthFuncOpt;
+ gl.depthMask = depthMaskOpt;
+ gl.depthRange = depthRangeOpt;
+ gl.detachShader = detachShaderOpt;
+ gl.disable = disableOpt;
+ gl.disableVertexAttribArray = disableVertexAttribArrayOpt;
+ gl.drawArrays = drawArraysOpt;
+ gl.drawElements = drawElementsOpt;
+ gl.enable = enableOpt;
+ gl.enableVertexAttribArray = enableVertexAttribArrayOpt;
+ gl.finish = finishOpt;
+ gl.flush = flushOpt;
+ gl.framebufferRenderbuffer = framebufferRenderbufferOpt;
+ gl.framebufferTexture2D = framebufferTexture2DOpt;
+ gl.frontFace = frontFaceOpt;
+ gl.generateMipmap = generateMipmapOpt;
+ gl.getActiveAttrib = getActiveAttribOpt;
+ gl.getActiveUniform = getActiveUniformOpt;
+ gl.getAttachedShaders = getAttachedShadersOpt;
+ gl.getAttribLocation = getAttribLocationOpt;
+ gl.getBufferParameter = getBufferParameterOpt;
+ gl.getParameter = getParameterOpt;
+ gl.getError = getErrorOpt;
+ gl.getFramebufferAttachmentParameter = getFramebufferAttachmentParameterOpt;
+ gl.getProgramParameter = getProgramParameterOpt;
+ gl.getProgramInfoLog = getProgramInfoLogOpt;
+ gl.getRenderbufferParameter = getRenderbufferParameterOpt;
+ gl.getShaderParameter = getShaderParameterOpt;
+ gl.getShaderPrecisionFormat = getShaderPrecisionFormatOpt;
+ gl.getShaderInfoLog = getShaderInfoLogOpt;
+ gl.getShaderSource = getShaderSourceOpt;
+ gl.getTexParameter = getTexParameterOpt;
+ gl.getUniform = getUniformOpt;
+ gl.getUniformLocation = getUniformLocationOpt;
+ gl.getVertexAttrib = getVertexAttribOpt;
+ gl.getVertexAttribOffset = getVertexAttribOffsetOpt;
+ gl.hint = hintOpt;
+ gl.isBuffer = isBufferOpt;
+ gl.isEnabled = isEnabledOpt;
+ gl.isFramebuffer = isFramebufferOpt;
+ gl.isProgram = isProgramOpt;
+ gl.isRenderbuffer = isRenderbufferOpt;
+ gl.isShader = isShaderOpt;
+ gl.isTexture = isTextureOpt;
+ gl.lineWidth = lineWidthOpt;
+ gl.linkProgram = linkProgramOpt;
+ gl.pixelStorei = pixelStoreiOpt;
+ gl.polygonOffset = polygonOffsetOpt;
+ gl.readPixels = readPixelsOpt;
+ gl.renderbufferStorage = renderbufferStorageOpt;
+ gl.sampleCoverage = sampleCoverageOpt;
+ gl.scissor = scissorOpt;
+ gl.shaderSource = shaderSourceOpt;
+ gl.stencilFunc = stencilFuncOpt;
+ gl.stencilFuncSeparate = stencilFuncSeparateOpt;
+ gl.stencilMask = stencilMaskOpt;
+ gl.stencilMaskSeparate = stencilMaskSeparateOpt;
+ gl.stencilOp = stencilOpOpt;
+ gl.stencilOpSeparate = stencilOpSeparateOpt;
+ gl.texImage2D = texImage2DOpt;
+ gl.texParameterf = texParameterfOpt;
+ gl.texParameteri = texParameteriOpt;
+ gl.texSubImage2D = texSubImage2DOpt;
+ gl.uniform1f = uniform1fOpt;
+ gl.uniform2f = uniform2fOpt;
+ gl.uniform3f = uniform3fOpt;
+ gl.uniform4f = uniform4fOpt;
+ gl.uniform1i = uniform1iOpt;
+ gl.uniform2i = uniform2iOpt;
+ gl.uniform3i = uniform3iOpt;
+ gl.uniform4i = uniform4iOpt;
+ gl.uniform1fv = uniform1fvOpt;
+ gl.uniform2fv = uniform2fvOpt;
+ gl.uniform3fv = uniform3fvOpt;
+ gl.uniform4fv = uniform4fvOpt;
+ gl.uniform1iv = uniform1ivOpt;
+ gl.uniform2iv = uniform2ivOpt;
+ gl.uniform3iv = uniform3ivOpt;
+ gl.uniform4iv = uniform4ivOpt;
+ gl.uniformMatrix2fv = uniformMatrix2fvOpt;
+ gl.uniformMatrix3fv = uniformMatrix3fvOpt;
+ gl.uniformMatrix4fv = uniformMatrix4fvOpt;
+ gl.useProgram = useProgramOpt;
+ gl.validateProgram = validateProgramOpt;
+ gl.vertexAttrib1f = vertexAttrib1fOpt;
+ gl.vertexAttrib2f = vertexAttrib2fOpt;
+ gl.vertexAttrib3f = vertexAttrib3fOpt;
+ gl.vertexAttrib4f = vertexAttrib4fOpt;
+ gl.vertexAttrib1fv = vertexAttrib1fvOpt;
+ gl.vertexAttrib2fv = vertexAttrib2fvOpt;
+ gl.vertexAttrib3fv = vertexAttrib3fvOpt;
+ gl.vertexAttrib4fv = vertexAttrib4fvOpt;
+ gl.vertexAttribPointer = vertexAttribPointerOpt;
+ gl.viewport = viewportOpt;
+}
+
+batchGLCommandsToNative();
+
+module.exports = {
+ disableBatchGLCommandsToNative: disableBatchGLCommandsToNative,
+ flushCommands: flushCommands
+};
+
+},{}],4:[function(require,module,exports){
+'use strict';
+
+var _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; };
+
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
+
+window.CanvasRenderingContext2D = jsb.CanvasRenderingContext2D;
+delete jsb.CanvasRenderingContext2D;
+
+jsb.device = jsb.Device; // cc namespace will be reset to {} in creator, use jsb namespace instead.
+
+var _require = require('./base64/base64.min'),
+ btoa = _require.btoa,
+ atob = _require.atob;
+
+window.btoa = btoa;
+window.atob = atob;
+
+var _require2 = require('./Blob'),
+ Blob = _require2.Blob,
+ URL = _require2.URL;
+
+window.Blob = Blob;
+window.URL = URL;
+window.DOMParser = require('./xmldom/dom-parser').DOMParser;
+
+require('./jsb_prepare');
+require('./jsb_opengl');
+require('./jsb-adapter');
+require('./jsb_audioengine');
+require('./jsb_input');
+
+var _oldRequestFrameCallback = null;
+var _requestAnimationFrameID = 0;
+var _requestAnimationFrameCallbacks = {};
+var _firstTick = true;
+
+window.requestAnimationFrame = function (cb) {
+ var id = ++_requestAnimationFrameID;
+ _requestAnimationFrameCallbacks[id] = cb;
+ return id;
+};
+
+window.cancelAnimationFrame = function (id) {
+ delete _requestAnimationFrameCallbacks[id];
+};
+
+var _require3 = require('./glOptMode'),
+ disableBatchGLCommandsToNative = _require3.disableBatchGLCommandsToNative,
+ flushCommands = _require3.flushCommands;
+
+window.optConfig = {
+ disableBatchGLCommandsToNative: disableBatchGLCommandsToNative
+};
+
+function tick(nowMilliSeconds) {
+ if (_firstTick) {
+ _firstTick = false;
+ if (window.onload) {
+ var event = new Event('load');
+ event._target = window;
+ window.onload(event);
+ }
+ }
+ fireTimeout(nowMilliSeconds);
+
+ for (var id in _requestAnimationFrameCallbacks) {
+ _oldRequestFrameCallback = _requestAnimationFrameCallbacks[id];
+ if (_oldRequestFrameCallback) {
+ delete _requestAnimationFrameCallbacks[id];
+ _oldRequestFrameCallback(nowMilliSeconds);
+ }
+ }
+ flushCommands();
+}
+
+var _timeoutIDIndex = 0;
+
+var TimeoutInfo = function TimeoutInfo(cb, delay, isRepeat, target, args) {
+ _classCallCheck(this, TimeoutInfo);
+
+ this.cb = cb;
+ this.id = ++_timeoutIDIndex;
+ this.start = performance.now();
+ this.delay = delay;
+ this.isRepeat = isRepeat;
+ this.target = target;
+ this.args = args;
+};
+
+var _timeoutInfos = {};
+
+function fireTimeout(nowMilliSeconds) {
+ var info = void 0;
+ for (var id in _timeoutInfos) {
+ info = _timeoutInfos[id];
+ if (info && info.cb) {
+ if (nowMilliSeconds - info.start >= info.delay) {
+ // console.log(`fireTimeout: id ${id}, start: ${info.start}, delay: ${info.delay}, now: ${nowMilliSeconds}`);
+ if (typeof info.cb === 'string') {
+ Function(info.cb)();
+ } else if (typeof info.cb === 'function') {
+ info.cb.apply(info.target, info.args);
+ }
+ if (info.isRepeat) {
+ info.start = nowMilliSeconds;
+ } else {
+ delete _timeoutInfos[id];
+ }
+ }
+ }
+ }
+}
+
+function createTimeoutInfo(prevFuncArgs, isRepeat) {
+ var cb = prevFuncArgs[0];
+ if (!cb) {
+ console.error("createTimeoutInfo doesn't pass a callback ...");
+ return 0;
+ }
+
+ var delay = prevFuncArgs.length > 1 ? prevFuncArgs[1] : 0;
+ var args = void 0;
+
+ if (prevFuncArgs.length > 2) {
+ args = Array.prototype.slice.call(prevFuncArgs, 2);
+ }
+
+ var info = new TimeoutInfo(cb, delay, isRepeat, this, args);
+ _timeoutInfos[info.id] = info;
+ return info.id;
+}
+
+window.setTimeout = function (cb) {
+ return createTimeoutInfo(arguments, false);
+};
+
+window.clearTimeout = function (id) {
+ delete _timeoutInfos[id];
+};
+
+window.setInterval = function (cb) {
+ return createTimeoutInfo(arguments, true);
+};
+
+window.clearInterval = window.clearTimeout;
+window.alert = console.error.bind(console);
+
+var __motionCallbackID = 0;
+var __motionEnabled = false;
+var __motionInterval = 16.6; // milliseconds
+
+jsb.device.setMotionInterval = function (milliseconds) {
+ __motionInterval = milliseconds;
+ // convert to seconds
+ jsb.device.setAccelerometerInterval(__motionInterval / 1000);
+ if (__motionEnabled) {
+ jsb.device.setMotionEnabled(false);
+ jsb.device.setMotionEnabled(true);
+ }
+};
+
+jsb.device.setMotionEnabled = function (enabled) {
+ if (__motionEnabled === enabled) return;
+
+ if (enabled) {
+ jsb.device.setAccelerometerEnabled(enabled);
+ var motionValue;
+ var event = new DeviceMotionEvent();
+ __motionCallbackID = window.setInterval(function () {
+ motionValue = jsb.device.getDeviceMotionValue();
+
+ event._acceleration.x = motionValue[0];
+ event._acceleration.y = motionValue[1];
+ event._acceleration.z = motionValue[2];
+
+ event._accelerationIncludingGravity.x = motionValue[3];
+ event._accelerationIncludingGravity.y = motionValue[4];
+ event._accelerationIncludingGravity.z = motionValue[5];
+
+ event._rotationRate.alpha = motionValue[6];
+ event._rotationRate.beta = motionValue[7];
+ event._rotationRate.gamma = motionValue[8];
+
+ event._interval = __motionInterval;
+
+ jsb.device.dispatchDeviceMotionEvent(event);
+ }, __motionInterval);
+ } else {
+ window.clearInterval(__motionCallbackID);
+ __motionCallbackID = 0;
+ }
+
+ __motionEnabled = enabled;
+};
+
+// File utils (Temporary, won't be accessible)
+if (typeof jsb.FileUtils !== 'undefined') {
+ jsb.fileUtils = jsb.FileUtils.getInstance();
+ delete jsb.FileUtils;
+}
+
+XMLHttpRequest.prototype.addEventListener = function (eventName, listener, options) {
+ this['on' + eventName] = listener;
+};
+
+XMLHttpRequest.prototype.removeEventListener = function (eventName, listener, options) {
+ this['on' + eventName] = null;
+};
+
+// SocketIO
+if (window.SocketIO) {
+ window.io = window.SocketIO;
+ SocketIO.prototype._Emit = SocketIO.prototype.emit;
+ SocketIO.prototype.emit = function (uri, delegate) {
+ if ((typeof delegate === 'undefined' ? 'undefined' : _typeof(delegate)) === 'object') {
+ delegate = JSON.stringify(delegate);
+ }
+ this._Emit(uri, delegate);
+ };
+}
+
+window.gameTick = tick;
+
+// promise polyfill relies on setTimeout implementation
+require('./promise.min');
+
+},{"./Blob":1,"./base64/base64.min":2,"./glOptMode":3,"./jsb-adapter":27,"./jsb_audioengine":32,"./jsb_input":33,"./jsb_opengl":34,"./jsb_prepare":36,"./promise.min":37,"./xmldom/dom-parser":38}],5:[function(require,module,exports){
+"use strict";
+
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
+
+var DOMRect = function DOMRect(x, y, width, height) {
+ _classCallCheck(this, DOMRect);
+
+ this.x = x ? x : 0;
+ this.y = y ? y : 0;
+ this.width = width ? width : 0;
+ this.height = height ? height : 0;
+ this.left = this.x;
+ this.top = this.y;
+ this.right = this.x + this.width;
+ this.bottom = this.y + this.height;
+};
+
+module.exports = DOMRect;
+
+},{}],6:[function(require,module,exports){
+'use strict';
+
+var _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; }; }();
+
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
+
+function _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; }
+
+function _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; }
+
+var Event = require('./Event');
+
+var DeviceMotionEvent = function (_Event) {
+ _inherits(DeviceMotionEvent, _Event);
+
+ function DeviceMotionEvent(initArgs) {
+ _classCallCheck(this, DeviceMotionEvent);
+
+ var _this = _possibleConstructorReturn(this, (DeviceMotionEvent.__proto__ || Object.getPrototypeOf(DeviceMotionEvent)).call(this, 'devicemotion'));
+
+ if (initArgs) {
+ _this._acceleration = initArgs.acceleration ? initArgs.acceleration : { x: 0, y: 0, z: 0 };
+ _this._accelerationIncludingGravity = initArgs.accelerationIncludingGravity ? initArgs.accelerationIncludingGravity : { x: 0, y: 0, z: 0 };
+ _this._rotationRate = initArgs.rotationRate ? initArgs.rotationRate : { alpha: 0, beta: 0, gamma: 0 };
+ _this._interval = initArgs.interval;
+ } else {
+ _this._acceleration = { x: 0, y: 0, z: 0 };
+ _this._accelerationIncludingGravity = { x: 0, y: 0, z: 0 };
+ _this._rotationRate = { alpha: 0, beta: 0, gamma: 0 };
+ _this._interval = 0;
+ }
+ return _this;
+ }
+
+ _createClass(DeviceMotionEvent, [{
+ key: 'acceleration',
+ get: function get() {
+ return this._acceleration;
+ }
+ }, {
+ key: 'accelerationIncludingGravity',
+ get: function get() {
+ return this._accelerationIncludingGravity;
+ }
+ }, {
+ key: 'rotationRate',
+ get: function get() {
+ return this._rotationRate;
+ }
+ }, {
+ key: 'interval',
+ get: function get() {
+ return this._interval;
+ }
+ }]);
+
+ return DeviceMotionEvent;
+}(Event);
+
+module.exports = DeviceMotionEvent;
+
+},{"./Event":8}],7:[function(require,module,exports){
+'use strict';
+
+var _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; }; }();
+
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
+
+function _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; }
+
+function _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; }
+
+var Node = require('./Node');
+var DOMRect = require('./DOMRect');
+
+var Element = function (_Node) {
+ _inherits(Element, _Node);
+
+ function Element() {
+ _classCallCheck(this, Element);
+
+ var _this = _possibleConstructorReturn(this, (Element.__proto__ || Object.getPrototypeOf(Element)).call(this));
+
+ _this.className = '';
+ _this.children = [];
+ _this.clientLeft = 0;
+ _this.clientTop = 0;
+ _this.scrollLeft = 0;
+ _this.scrollTop = 0;
+ return _this;
+ }
+
+ _createClass(Element, [{
+ key: 'getBoundingClientRect',
+ value: function getBoundingClientRect() {
+ return new DOMRect(0, 0, window.innerWidth, window.innerHeight);
+ }
+
+ // attrName is a string that names the attribute to be removed from element.
+
+ }, {
+ key: 'removeAttribute',
+ value: function removeAttribute(attrName) {}
+ }, {
+ key: 'clientWidth',
+ get: function get() {
+ return 0;
+ }
+ }, {
+ key: 'clientHeight',
+ get: function get() {
+ return 0;
+ }
+ }]);
+
+ return Element;
+}(Node);
+
+module.exports = Element;
+
+},{"./DOMRect":5,"./Node":24}],8:[function(require,module,exports){
+"use strict";
+
+var _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; }; }();
+
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
+
+/**
+ * @see https://dom.spec.whatwg.org/#interface-event
+ * @private
+ */
+/**
+ * The event wrapper.
+ * @constructor
+ * @param {EventTarget} eventTarget The event target of this dispatching.
+ * @param {Event|{type:string}} event The original event to wrap.
+ */
+var Event = function () {
+ function Event(type, eventInit) {
+ _classCallCheck(this, Event);
+
+ this._type = type;
+ this._target = null;
+ this._eventPhase = 2;
+ this._currentTarget = null;
+ this._canceled = false;
+ this._stopped = false; // The flag to stop propagation immediately.
+ this._passiveListener = null;
+ this._timeStamp = Date.now();
+ }
+
+ /**
+ * The type of this event.
+ * @type {string}
+ */
+
+
+ _createClass(Event, [{
+ key: "composedPath",
+
+
+ /**
+ * @returns {EventTarget[]} The composed path of this event.
+ */
+ value: function composedPath() {
+ var currentTarget = this._currentTarget;
+ if (currentTarget === null) {
+ return [];
+ }
+ return [currentTarget];
+ }
+
+ /**
+ * The target of this event.
+ * @type {number}
+ */
+
+ }, {
+ key: "stopPropagation",
+
+
+ /**
+ * Stop event bubbling.
+ * @returns {void}
+ */
+ value: function stopPropagation() {}
+
+ /**
+ * Stop event bubbling.
+ * @returns {void}
+ */
+
+ }, {
+ key: "stopImmediatePropagation",
+ value: function stopImmediatePropagation() {
+ this._stopped = true;
+ }
+
+ /**
+ * The flag to be bubbling.
+ * @type {boolean}
+ */
+
+ }, {
+ key: "preventDefault",
+
+
+ /**
+ * Cancel this event.
+ * @returns {void}
+ */
+ value: function preventDefault() {
+ if (this._passiveListener !== null) {
+ console.warn("Event#preventDefault() was called from a passive listener:", this._passiveListener);
+ return;
+ }
+ if (!this.cancelable) {
+ return;
+ }
+
+ this._canceled = true;
+ }
+
+ /**
+ * The flag to indicate cancellation state.
+ * @type {boolean}
+ */
+
+ }, {
+ key: "type",
+ get: function get() {
+ return this._type;
+ }
+
+ /**
+ * The target of this event.
+ * @type {EventTarget}
+ */
+
+ }, {
+ key: "target",
+ get: function get() {
+ return this._target;
+ }
+
+ /**
+ * The target of this event.
+ * @type {EventTarget}
+ */
+
+ }, {
+ key: "currentTarget",
+ get: function get() {
+ return this._currentTarget;
+ }
+ }, {
+ key: "isTrusted",
+ get: function get() {
+ // https://heycam.github.io/webidl/#Unforgeable
+ return false;
+ }
+ }, {
+ key: "timeStamp",
+
+
+ /**
+ * The unix time of this event.
+ * @type {number}
+ */
+ get: function get() {
+ return this._timeStamp;
+ }
+ }, {
+ key: "eventPhase",
+ get: function get() {
+ return this._eventPhase;
+ }
+ }, {
+ key: "bubbles",
+ get: function get() {
+ return false;
+ }
+
+ /**
+ * The flag to be cancelable.
+ * @type {boolean}
+ */
+
+ }, {
+ key: "cancelable",
+ get: function get() {
+ return true;
+ }
+ }, {
+ key: "defaultPrevented",
+ get: function get() {
+ return this._canceled;
+ }
+
+ /**
+ * The flag to be composed.
+ * @type {boolean}
+ */
+
+ }, {
+ key: "composed",
+ get: function get() {
+ return false;
+ }
+ }]);
+
+ return Event;
+}();
+
+/**
+ * Constant of NONE.
+ * @type {number}
+ */
+
+
+Event.NONE = 0;
+
+/**
+ * Constant of CAPTURING_PHASE.
+ * @type {number}
+ */
+Event.CAPTURING_PHASE = 1;
+
+/**
+ * Constant of AT_TARGET.
+ * @type {number}
+ */
+Event.AT_TARGET = 2;
+
+/**
+ * Constant of BUBBLING_PHASE.
+ * @type {number}
+ */
+Event.BUBBLING_PHASE = 3;
+
+module.exports = Event;
+
+},{}],9:[function(require,module,exports){
+'use strict';
+
+var _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; }; }();
+
+var _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; };
+
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
+
+var __targetID = 0;
+
+var __listenerMap = {
+ touch: {},
+ mouse: {},
+ keyboard: {},
+ devicemotion: {}
+};
+
+var __listenerCountMap = {
+ touch: 0,
+ mouse: 0,
+ keyboard: 0,
+ devicemotion: 0
+};
+
+var __enableCallbackMap = {
+ touch: null,
+ mouse: null,
+ keyboard: null,
+ //FIXME: Cocos Creator invokes addEventListener('devicemotion') when engine initializes, it will active sensor hardware.
+ // In that case, CPU and temperature cost will increase. Therefore, we require developer to invoke 'jsb.device.setMotionEnabled(true)'
+ // on native platforms since most games will not listen motion event.
+ devicemotion: null
+ // devicemotion: function() {
+ // jsb.device.setMotionEnabled(true);
+ // }
+};
+
+var __disableCallbackMap = {
+ touch: null,
+ mouse: null,
+ //FIXME: Cocos Creator invokes addEventListener('devicemotion') when engine initializes, it will active sensor hardware.
+ // In that case, CPU and temperature cost will increase. Therefore, we require developer to invoke 'jsb.device.setMotionEnabled(true)'
+ // on native platforms since most games will not listen motion event.
+ keyboard: null,
+ devicemotion: null
+ // devicemotion: function() {
+ // jsb.device.setMotionEnabled(false);
+ // }
+};
+
+var __handleEventNames = {
+ touch: ['touchstart', 'touchmove', 'touchend', 'touchcancel'],
+ mouse: ['mousedown', 'mousemove', 'mouseup', 'mousewheel'],
+ keyboard: ['keydown', 'keyup', 'keypress'],
+ devicemotion: ['devicemotion']
+
+ // Listener types
+};var CAPTURE = 1;
+var BUBBLE = 2;
+var ATTRIBUTE = 3;
+
+/**
+ * Check whether a given value is an object or not.
+ * @param {any} x The value to check.
+ * @returns {boolean} `true` if the value is an object.
+ */
+function isObject(x) {
+ return x && (typeof x === 'undefined' ? 'undefined' : _typeof(x)) === "object"; //eslint-disable-line no-restricted-syntax
+}
+
+/**
+ * EventTarget.
+ *
+ * - This is constructor if no arguments.
+ * - This is a function which returns a CustomEventTarget constructor if there are arguments.
+ *
+ * For example:
+ *
+ * class A extends EventTarget {}
+ */
+
+var EventTarget = function () {
+ function EventTarget() {
+ _classCallCheck(this, EventTarget);
+
+ this._targetID = ++__targetID;
+ this._listenerCount = {
+ touch: 0,
+ mouse: 0,
+ keyboard: 0,
+ devicemotion: 0
+ };
+ this._listeners = new Map();
+ }
+
+ _createClass(EventTarget, [{
+ key: '_associateSystemEventListener',
+ value: function _associateSystemEventListener(eventName) {
+ var handleEventNames;
+ for (var key in __handleEventNames) {
+ handleEventNames = __handleEventNames[key];
+ if (handleEventNames.indexOf(eventName) > -1) {
+ if (__enableCallbackMap[key] && __listenerCountMap[key] === 0) {
+ __enableCallbackMap[key]();
+ }
+
+ if (this._listenerCount[key] === 0) __listenerMap[key][this._targetID] = this;
+ ++this._listenerCount[key];
+ ++__listenerCountMap[key];
+ break;
+ }
+ }
+ }
+ }, {
+ key: '_dissociateSystemEventListener',
+ value: function _dissociateSystemEventListener(eventName) {
+ var handleEventNames;
+ for (var key in __handleEventNames) {
+ handleEventNames = __handleEventNames[key];
+ if (handleEventNames.indexOf(eventName) > -1) {
+ if (this._listenerCount[key] <= 0) delete __listenerMap[key][this._targetID];
+ --__listenerCountMap[key];
+
+ if (__disableCallbackMap[key] && __listenerCountMap[key] === 0) {
+ __disableCallbackMap[key]();
+ }
+ break;
+ }
+ }
+ }
+
+ /**
+ * Add a given listener to this event target.
+ * @param {string} eventName The event name to add.
+ * @param {Function} listener The listener to add.
+ * @param {boolean|{capture?:boolean,passive?:boolean,once?:boolean}} [options] The options for this listener.
+ * @returns {boolean} `true` if the listener was added actually.
+ */
+
+ }, {
+ key: 'addEventListener',
+ value: function addEventListener(eventName, listener, options) {
+ if (!listener) {
+ return false;
+ }
+ if (typeof listener !== "function" && !isObject(listener)) {
+ throw new TypeError("'listener' should be a function or an object.");
+ }
+
+ var listeners = this._listeners;
+ var optionsIsObj = isObject(options);
+ var capture = optionsIsObj ? Boolean(options.capture) : Boolean(options);
+ var listenerType = capture ? CAPTURE : BUBBLE;
+ var newNode = {
+ listener: listener,
+ listenerType: listenerType,
+ passive: optionsIsObj && Boolean(options.passive),
+ once: optionsIsObj && Boolean(options.once),
+ next: null
+
+ // Set it as the first node if the first node is null.
+ };var node = listeners.get(eventName);
+ if (node === undefined) {
+ listeners.set(eventName, newNode);
+ this._associateSystemEventListener(eventName);
+ return true;
+ }
+
+ // Traverse to the tail while checking duplication..
+ var prev = null;
+ while (node) {
+ if (node.listener === listener && node.listenerType === listenerType) {
+ // Should ignore duplication.
+ return false;
+ }
+ prev = node;
+ node = node.next;
+ }
+
+ // Add it.
+ prev.next = newNode;
+ this._associateSystemEventListener(eventName);
+ return true;
+ }
+
+ /**
+ * Remove a given listener from this event target.
+ * @param {string} eventName The event name to remove.
+ * @param {Function} listener The listener to remove.
+ * @param {boolean|{capture?:boolean,passive?:boolean,once?:boolean}} [options] The options for this listener.
+ * @returns {boolean} `true` if the listener was removed actually.
+ */
+
+ }, {
+ key: 'removeEventListener',
+ value: function removeEventListener(eventName, listener, options) {
+ if (!listener) {
+ return false;
+ }
+
+ var listeners = this._listeners;
+ var capture = isObject(options) ? Boolean(options.capture) : Boolean(options);
+ var listenerType = capture ? CAPTURE : BUBBLE;
+
+ var prev = null;
+ var node = listeners.get(eventName);
+ while (node) {
+ if (node.listener === listener && node.listenerType === listenerType) {
+ if (prev) {
+ prev.next = node.next;
+ } else if (node.next) {
+ listeners.set(eventName, node.next);
+ } else {
+ listeners.delete(eventName);
+ }
+
+ this._dissociateSystemEventListener(eventName);
+
+ return true;
+ }
+
+ prev = node;
+ node = node.next;
+ }
+
+ return false;
+ }
+
+ /**
+ * Dispatch a given event.
+ * @param {Event|{type:string}} event The event to dispatch.
+ * @returns {boolean} `false` if canceled.
+ */
+
+ }, {
+ key: 'dispatchEvent',
+ value: function dispatchEvent(event) {
+ if (!event || typeof event.type !== "string") {
+ throw new TypeError("\"event.type\" should be a string.");
+ }
+
+ var eventName = event.type;
+ var onFunc = this['on' + eventName];
+ if (onFunc && typeof onFunc === 'function') {
+ event._target = event._currentTarget = this;
+ onFunc.call(this, event);
+ event._target = event._currentTarget = null;
+ event._eventPhase = 0;
+ event._passiveListener = null;
+
+ if (event.defaultPrevented) return false;
+ }
+
+ // If listeners aren't registered, terminate.
+ var listeners = this._listeners;
+
+ var node = listeners.get(eventName);
+ if (!node) {
+ return true;
+ }
+
+ event._target = event._currentTarget = this;
+
+ // This doesn't process capturing phase and bubbling phase.
+ // This isn't participating in a tree.
+ var prev = null;
+ while (node) {
+ // Remove this listener if it's once
+ if (node.once) {
+ if (prev) {
+ prev.next = node.next;
+ } else if (node.next) {
+ listeners.set(eventName, node.next);
+ } else {
+ listeners.delete(eventName);
+ }
+ } else {
+ prev = node;
+ }
+
+ // Call this listener
+ event._passiveListener = node.passive ? node.listener : null;
+ if (typeof node.listener === "function") {
+ node.listener.call(this, event);
+ }
+
+ // Break if `event.stopImmediatePropagation` was called.
+ if (event._stopped) {
+ break;
+ }
+
+ node = node.next;
+ }
+ event._target = event._currentTarget = null;
+ event._eventPhase = 0;
+ event._passiveListener = null;
+
+ return !event.defaultPrevented;
+ }
+ }]);
+
+ return EventTarget;
+}();
+
+function touchEventHandlerFactory(type) {
+ return function (touches) {
+ var touchEvent = new TouchEvent(type);
+
+ touchEvent.touches = touches;
+ touchEvent.targetTouches = Array.prototype.slice.call(touchEvent.touches);
+ touchEvent.changedTouches = touches; //event.changedTouches
+ // touchEvent.timeStamp = event.timeStamp
+
+ var i = 0,
+ touchCount = touches.length;
+ var target;
+ var touchListenerMap = __listenerMap.touch;
+ for (var key in touchListenerMap) {
+ target = touchListenerMap[key];
+ for (i = 0; i < touchCount; ++i) {
+ touches[i].target = target;
+ }
+ target.dispatchEvent(touchEvent);
+ }
+ };
+}
+
+jsb.onTouchStart = touchEventHandlerFactory('touchstart');
+jsb.onTouchMove = touchEventHandlerFactory('touchmove');
+jsb.onTouchEnd = touchEventHandlerFactory('touchend');
+jsb.onTouchCancel = touchEventHandlerFactory('touchcancel');
+
+function mouseEventHandlerFactory(type) {
+ return function (event) {
+ var button = event.button;
+ var x = event.x;
+ var y = event.y;
+
+ var mouseEvent = new MouseEvent(type, {
+ button: button,
+ which: button + 1,
+ wheelDelta: event.wheelDeltaY,
+ clientX: x,
+ clientY: y,
+ screenX: x,
+ screenY: y,
+ pageX: x,
+ pageY: y
+ });
+
+ var target;
+ var mouseListenerMap = __listenerMap.mouse;
+ for (var key in mouseListenerMap) {
+ target = mouseListenerMap[key];
+ target.dispatchEvent(mouseEvent);
+ }
+ };
+}
+
+jsb.onMouseDown = mouseEventHandlerFactory('mousedown');
+jsb.onMouseMove = mouseEventHandlerFactory('mousemove');
+jsb.onMouseUp = mouseEventHandlerFactory('mouseup');
+jsb.onMouseWheel = mouseEventHandlerFactory('mousewheel');
+
+function keyboardEventHandlerFactory(type) {
+ return function (event) {
+ var keyboardEvent = new KeyboardEvent(type, {
+ altKey: event.altKey,
+ ctrlKey: event.ctrlKey,
+ metaKey: event.metaKey,
+ shiftKey: event.shiftKey,
+ repeat: event.repeat,
+ keyCode: event.keyCode
+ });
+ var target;
+ var keyboardListenerMap = __listenerMap.keyboard;
+ for (var key in keyboardListenerMap) {
+ target = keyboardListenerMap[key];
+ target.dispatchEvent(keyboardEvent);
+ }
+ };
+}
+
+jsb.onKeyDown = keyboardEventHandlerFactory('keydown');
+jsb.onKeyUp = keyboardEventHandlerFactory('keyup');
+
+jsb.device.dispatchDeviceMotionEvent = function (event) {
+ var target;
+ var devicemotionListenerMap = __listenerMap.devicemotion;
+ for (var key in devicemotionListenerMap) {
+ target = devicemotionListenerMap[key];
+ target.dispatchEvent(event);
+ }
+};
+
+module.exports = EventTarget;
+
+},{}],10:[function(require,module,exports){
+'use strict';
+
+var _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; }; }();
+
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
+
+function _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; }
+
+function _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; }
+
+var EventTarget = require('./EventTarget');
+
+var FileReader = function (_EventTarget) {
+ _inherits(FileReader, _EventTarget);
+
+ function FileReader() {
+ _classCallCheck(this, FileReader);
+
+ return _possibleConstructorReturn(this, (FileReader.__proto__ || Object.getPrototypeOf(FileReader)).apply(this, arguments));
+ }
+
+ _createClass(FileReader, [{
+ key: 'construct',
+ value: function construct() {
+ this.result = null;
+ }
+
+ // Aborts the read operation. Upon return, the readyState will be DONE.
+
+ }, {
+ key: 'abort',
+ value: function abort() {}
+
+ // Starts reading the contents of the specified Blob, once finished, the result attribute contains an ArrayBuffer representing the file's data.
+
+ }, {
+ key: 'readAsArrayBuffer',
+ value: function readAsArrayBuffer() {}
+
+ // Starts reading the contents of the specified Blob, once finished, the result attribute contains a data: URL representing the file's data.
+
+ }, {
+ key: 'readAsDataURL',
+ value: function readAsDataURL(blob) {
+ this.result = 'data:image/png;base64,' + window.btoa(blob);
+ var event = new Event('load');
+ this.dispatchEvent(event);
+ }
+
+ // Starts reading the contents of the specified Blob, once finished, the result attribute contains the contents of the file as a text string.
+
+ }, {
+ key: 'readAsText',
+ value: function readAsText() {}
+ }]);
+
+ return FileReader;
+}(EventTarget);
+
+module.exports = FileReader;
+
+},{"./EventTarget":9}],11:[function(require,module,exports){
+'use strict';
+
+var _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; }; }();
+
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
+
+var FontFace = function () {
+ function FontFace(family, source, descriptors) {
+ var _this = this;
+
+ _classCallCheck(this, FontFace);
+
+ this.family = family;
+ this.source = source;
+ this.descriptors = descriptors;
+
+ this._status = 'unloaded';
+
+ this._loaded = new Promise(function (resolve, reject) {
+ _this._resolveCB = resolve;
+ _this._rejectCB = reject;
+ });
+ }
+
+ _createClass(FontFace, [{
+ key: 'load',
+ value: function load() {
+ // class FontFaceSet, add(fontFace) have done the load work
+ }
+ }, {
+ key: 'status',
+ get: function get() {
+ return this._status;
+ }
+ }, {
+ key: 'loaded',
+ get: function get() {
+ return this._loaded;
+ }
+ }]);
+
+ return FontFace;
+}();
+
+module.exports = FontFace;
+
+},{}],12:[function(require,module,exports){
+'use strict';
+
+var _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; }; }();
+
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
+
+function _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; }
+
+function _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; }
+
+var EventTarget = require('./EventTarget');
+var Event = require('./Event');
+
+var FontFaceSet = function (_EventTarget) {
+ _inherits(FontFaceSet, _EventTarget);
+
+ function FontFaceSet() {
+ _classCallCheck(this, FontFaceSet);
+
+ var _this = _possibleConstructorReturn(this, (FontFaceSet.__proto__ || Object.getPrototypeOf(FontFaceSet)).call(this));
+
+ _this._status = 'loading';
+ return _this;
+ }
+
+ _createClass(FontFaceSet, [{
+ key: 'add',
+ value: function add(fontFace) {
+ var _this2 = this;
+
+ this._status = fontFace._status = 'loading';
+ this.dispatchEvent(new Event('loading'));
+ // Call native binding method to set the ttf font to native platform.
+ var family = jsb.loadFont(fontFace.family, fontFace.source);
+ setTimeout(function () {
+ if (family) {
+ fontFace._status = _this2._status = 'loaded';
+ fontFace._resolveCB();
+ _this2.dispatchEvent(new Event('loadingdone'));
+ } else {
+ fontFace._status = _this2._status = 'error';
+ fontFace._rejectCB();
+ _this2.dispatchEvent(new Event('loadingerror'));
+ }
+ }, 0);
+ }
+ }, {
+ key: 'clear',
+ value: function clear() {}
+ }, {
+ key: 'delete',
+ value: function _delete() {}
+ }, {
+ key: 'load',
+ value: function load() {}
+ }, {
+ key: 'ready',
+ value: function ready() {}
+ }, {
+ key: 'status',
+ get: function get() {
+ return this._status;
+ }
+ }, {
+ key: 'onloading',
+ set: function set(listener) {
+ this.addEventListener('loading', listener);
+ }
+ }, {
+ key: 'onloadingdone',
+ set: function set(listener) {
+ this.addEventListener('loadingdone', listener);
+ }
+ }, {
+ key: 'onloadingerror',
+ set: function set(listener) {
+ this.addEventListener('loadingerror', listener);
+ }
+ }]);
+
+ return FontFaceSet;
+}(EventTarget);
+
+module.exports = FontFaceSet;
+
+},{"./Event":8,"./EventTarget":9}],13:[function(require,module,exports){
+'use strict';
+
+var _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; }; }();
+
+function _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; }
+
+function _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; }
+
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
+
+var HTMLElement = require('./HTMLElement');
+var ImageData = require('./ImageData');
+var DOMRect = require('./DOMRect');
+
+var clamp = function clamp(value) {
+ value = Math.round(value);
+ return value < 0 ? 0 : value < 255 ? value : 255;
+};
+
+var CanvasGradient = function () {
+ function CanvasGradient() {
+ _classCallCheck(this, CanvasGradient);
+
+ console.log("==> CanvasGradient constructor");
+ }
+
+ _createClass(CanvasGradient, [{
+ key: 'addColorStop',
+ value: function addColorStop(offset, color) {
+ console.log("==> CanvasGradient addColorStop");
+ }
+ }]);
+
+ return CanvasGradient;
+}();
+
+var TextMetrics = function () {
+ function TextMetrics(width) {
+ _classCallCheck(this, TextMetrics);
+
+ this._width = width;
+ }
+
+ _createClass(TextMetrics, [{
+ key: 'width',
+ get: function get() {
+ return this._width;
+ }
+ }]);
+
+ return TextMetrics;
+}();
+
+var HTMLCanvasElement = function (_HTMLElement) {
+ _inherits(HTMLCanvasElement, _HTMLElement);
+
+ function HTMLCanvasElement(width, height) {
+ _classCallCheck(this, HTMLCanvasElement);
+
+ var _this = _possibleConstructorReturn(this, (HTMLCanvasElement.__proto__ || Object.getPrototypeOf(HTMLCanvasElement)).call(this, 'canvas'));
+
+ _this.id = 'glcanvas';
+ _this.type = 'canvas';
+
+ _this.top = 0;
+ _this.left = 0;
+ _this._width = width ? Math.ceil(width) : 0;
+ _this._height = height ? Math.ceil(height) : 0;
+ _this._context2D = null;
+ _this._data = null;
+ _this._alignment = 4; // Canvas is used for rendering text only and we make sure the data format is RGBA.
+ // Whether the pixel data is premultiplied.
+ _this._premultiplied = false;
+ return _this;
+ }
+
+ //REFINE: implement opts.
+
+
+ _createClass(HTMLCanvasElement, [{
+ key: 'getContext',
+ value: function getContext(name, opts) {
+ var self = this;
+ // console.log(`==> Canvas getContext(${name})`);
+ if (name === 'webgl' || name === 'experimental-webgl') {
+ if (this === window.__canvas) return window.__gl;else return null;
+ } else if (name === '2d') {
+ if (!this._context2D) {
+ this._context2D = new CanvasRenderingContext2D(this._width, this._height);
+ this._data = new ImageData(this._width, this._height);
+ this._context2D._canvas = this;
+ this._context2D._setCanvasBufferUpdatedCallback(function (data) {
+ // FIXME: Canvas's data will take 2x memory size, one in C++, another is obtained by Uint8Array here.
+ self._data = new ImageData(data, self._width, self._height);
+ // If the width of canvas could be divided by 2, it means that the bytes per row could be divided by 8.
+ self._alignment = self._width % 2 === 0 ? 8 : 4;
+ });
+ }
+ return this._context2D;
+ }
+
+ return null;
+ }
+ }, {
+ key: 'getBoundingClientRect',
+ value: function getBoundingClientRect() {
+ return new DOMRect(0, 0, this._width, this._height);
+ }
+ }, {
+ key: 'width',
+ set: function set(width) {
+ width = Math.ceil(width);
+ if (this._width !== width) {
+ this._width = width;
+ if (this._context2D) {
+ this._context2D._width = width;
+ }
+ }
+ },
+ get: function get() {
+ return this._width;
+ }
+ }, {
+ key: 'height',
+ set: function set(height) {
+ height = Math.ceil(height);
+ if (this._height !== height) {
+ this._height = height;
+ if (this._context2D) {
+ this._context2D._height = height;
+ }
+ }
+ },
+ get: function get() {
+ return this._height;
+ }
+ }, {
+ key: 'clientWidth',
+ get: function get() {
+ return this._width;
+ }
+ }, {
+ key: 'clientHeight',
+ get: function get() {
+ return this._height;
+ }
+ }, {
+ key: 'data',
+ get: function get() {
+ if (this._data) {
+ return this._data.data;
+ }
+ return null;
+ }
+ }]);
+
+ return HTMLCanvasElement;
+}(HTMLElement);
+
+var ctx2DProto = CanvasRenderingContext2D.prototype;
+
+// ImageData ctx.createImageData(imagedata);
+// ImageData ctx.createImageData(width, height);
+ctx2DProto.createImageData = function (args1, args2) {
+ if (typeof args1 === 'number' && typeof args2 == 'number') {
+ return new ImageData(args1, args2);
+ } else if (args1 instanceof ImageData) {
+ return new ImageData(args1.data, args1.width, args1.height);
+ }
+};
+
+// void ctx.putImageData(imagedata, dx, dy);
+// void ctx.putImageData(imagedata, dx, dy, dirtyX, dirtyY, dirtyWidth, dirtyHeight);
+ctx2DProto.putImageData = function (imageData, dx, dy, dirtyX, dirtyY, dirtyWidth, dirtyHeight) {
+ this._canvas._data = imageData;
+};
+
+// ImageData ctx.getImageData(sx, sy, sw, sh);
+ctx2DProto.getImageData = function (sx, sy, sw, sh) {
+ var canvasWidth = this._canvas._width;
+ var canvasHeight = this._canvas._height;
+ var canvasBuffer = this._canvas._data.data;
+ // image rect may bigger that canvas rect
+ var maxValidSH = sh + sy < canvasHeight ? sh : canvasHeight - sy;
+ var maxValidSW = sw + sx < canvasWidth ? sw : canvasWidth - sx;
+ var imgBuffer = new Uint8ClampedArray(sw * sh * 4);
+ for (var y = 0; y < maxValidSH; y++) {
+ for (var x = 0; x < maxValidSW; x++) {
+ var canvasPos = (y + sy) * canvasWidth + (x + sx);
+ var imgPos = y * sw + x;
+ imgBuffer[imgPos * 4 + 0] = canvasBuffer[canvasPos * 4 + 0];
+ imgBuffer[imgPos * 4 + 1] = canvasBuffer[canvasPos * 4 + 1];
+ imgBuffer[imgPos * 4 + 2] = canvasBuffer[canvasPos * 4 + 2];
+ imgBuffer[imgPos * 4 + 3] = canvasBuffer[canvasPos * 4 + 3];
+ }
+ }
+ return new ImageData(imgBuffer, sw, sh);
+};
+
+module.exports = HTMLCanvasElement;
+
+},{"./DOMRect":5,"./HTMLElement":14,"./ImageData":20}],14:[function(require,module,exports){
+'use strict';
+
+var _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; }; }();
+
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
+
+function _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; }
+
+function _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; }
+
+var Element = require('./Element');
+
+var _require = require('./util'),
+ noop = _require.noop;
+
+var HTMLElement = function (_Element) {
+ _inherits(HTMLElement, _Element);
+
+ function HTMLElement() {
+ var tagName = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
+
+ _classCallCheck(this, HTMLElement);
+
+ var _this = _possibleConstructorReturn(this, (HTMLElement.__proto__ || Object.getPrototypeOf(HTMLElement)).call(this));
+
+ _this.tagName = tagName.toUpperCase();
+
+ _this.className = '';
+ _this.children = [];
+ _this.style = {
+ width: window.innerWidth + 'px',
+ height: window.innerHeight + 'px'
+ };
+
+ _this.innerHTML = '';
+ _this.parentElement = window.__canvas;
+ return _this;
+ }
+
+ _createClass(HTMLElement, [{
+ key: 'setAttribute',
+ value: function setAttribute(name, value) {
+ this[name] = value;
+ }
+ }, {
+ key: 'getAttribute',
+ value: function getAttribute(name) {
+ return this[name];
+ }
+ }, {
+ key: 'focus',
+ value: function focus() {}
+ }]);
+
+ return HTMLElement;
+}(Element);
+
+module.exports = HTMLElement;
+
+},{"./Element":7,"./util":30}],15:[function(require,module,exports){
+'use strict';
+
+var _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; }; }();
+
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
+
+function _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; }
+
+function _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; }
+
+var HTMLElement = require('./HTMLElement');
+var Event = require('./Event');
+var gl = window.__gl;
+
+var HTMLImageElement = function (_HTMLElement) {
+ _inherits(HTMLImageElement, _HTMLElement);
+
+ function HTMLImageElement(width, height, isCalledFromImage) {
+ _classCallCheck(this, HTMLImageElement);
+
+ if (!isCalledFromImage) {
+ throw new TypeError("Illegal constructor, use 'new Image(w, h); instead!'");
+ return _possibleConstructorReturn(_this);
+ }
+
+ var _this = _possibleConstructorReturn(this, (HTMLImageElement.__proto__ || Object.getPrototypeOf(HTMLImageElement)).call(this, 'img'));
+
+ _this.width = width ? width : 0;
+ _this.height = height ? height : 0;
+ _this._data = null;
+ _this._src = null;
+ _this.complete = false;
+ _this._glFormat = _this._glInternalFormat = gl.RGBA;
+ _this.crossOrigin = null;
+ return _this;
+ }
+
+ _createClass(HTMLImageElement, [{
+ key: 'getBoundingClientRect',
+ value: function getBoundingClientRect() {
+ return new DOMRect(0, 0, this.width, this.height);
+ }
+ }, {
+ key: 'src',
+ set: function set(src) {
+ var _this2 = this;
+
+ this._src = src;
+ jsb.loadImage(src, function (info) {
+ if (!info) {
+ _this2._data = null;
+ var event = new Event('error');
+ _this2.dispatchEvent(event);
+ return;
+ }
+ _this2.width = _this2.naturalWidth = info.width;
+ _this2.height = _this2.naturalHeight = info.height;
+ _this2._data = info.data;
+ // console.log(`glFormat: ${info.glFormat}, glInternalFormat: ${info.glInternalFormat}, glType: ${info.glType}`);
+ _this2._glFormat = info.glFormat;
+ _this2._glInternalFormat = info.glInternalFormat;
+ _this2._glType = info.glType;
+ _this2._numberOfMipmaps = info.numberOfMipmaps;
+ _this2._compressed = info.compressed;
+ _this2._bpp = info.bpp;
+ _this2._premultiplyAlpha = info.premultiplyAlpha;
+
+ _this2._alignment = 1;
+ // Set the row align only when mipmapsNum == 1 and the data is uncompressed
+ if ((_this2._numberOfMipmaps == 0 || _this2._numberOfMipmaps == 1) && !_this2._compressed) {
+ var bytesPerRow = _this2.width * _this2._bpp / 8;
+ if (bytesPerRow % 8 == 0) _this2._alignment = 8;else if (bytesPerRow % 4 == 0) _this2._alignment = 4;else if (bytesPerRow % 2 == 0) _this2._alignment = 2;
+ }
+
+ _this2.complete = true;
+
+ var event = new Event('load');
+ _this2.dispatchEvent(event);
+ });
+ },
+ get: function get() {
+ return this._src;
+ }
+ }, {
+ key: 'clientWidth',
+ get: function get() {
+ return this.width;
+ }
+ }, {
+ key: 'clientHeight',
+ get: function get() {
+ return this.height;
+ }
+ }]);
+
+ return HTMLImageElement;
+}(HTMLElement);
+
+module.exports = HTMLImageElement;
+
+},{"./Event":8,"./HTMLElement":14}],16:[function(require,module,exports){
+'use strict';
+
+var _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; }; }();
+
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
+
+function _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; }
+
+function _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; }
+
+var HTMLElement = require('./HTMLElement');
+var MediaError = require('./MediaError');
+
+var HAVE_NOTHING = 0;
+var HAVE_METADATA = 1;
+var HAVE_CURRENT_DATA = 2;
+var HAVE_FUTURE_DATA = 3;
+var HAVE_ENOUGH_DATA = 4;
+
+var HTMLMediaElement = function (_HTMLElement) {
+ _inherits(HTMLMediaElement, _HTMLElement);
+
+ function HTMLMediaElement(type) {
+ _classCallCheck(this, HTMLMediaElement);
+
+ var _this = _possibleConstructorReturn(this, (HTMLMediaElement.__proto__ || Object.getPrototypeOf(HTMLMediaElement)).call(this, type));
+
+ _this._volume = 1.0;
+ _this._duration = 0;
+ _this._isEnded = false;
+ _this._isMute = false;
+ _this._readyState = HAVE_NOTHING;
+ _this._error = new MediaError();
+ return _this;
+ }
+
+ _createClass(HTMLMediaElement, [{
+ key: 'addTextTrack',
+ value: function addTextTrack() {}
+ }, {
+ key: 'captureStream',
+ value: function captureStream() {}
+ }, {
+ key: 'fastSeek',
+ value: function fastSeek() {}
+ }, {
+ key: 'load',
+ value: function load() {}
+ }, {
+ key: 'pause',
+ value: function pause() {}
+ }, {
+ key: 'play',
+ value: function play() {}
+ }, {
+ key: 'canPlayType',
+ value: function canPlayType(mediaType) {
+ return '';
+ }
+ }, {
+ key: 'volume',
+ set: function set(volume) {
+ this._volume = volume;
+ },
+ get: function get() {
+ return this._volume;
+ }
+ }, {
+ key: 'duration',
+ get: function get() {
+ return this._duration;
+ }
+ }, {
+ key: 'ended',
+ get: function get() {
+ return this._isEnded;
+ }
+ }, {
+ key: 'muted',
+ get: function get() {
+ return this._isMute;
+ }
+ }, {
+ key: 'readyState',
+ get: function get() {
+ return this._readyState;
+ }
+ }, {
+ key: 'error',
+ get: function get() {
+ return this._error;
+ }
+ }, {
+ key: 'currentTime',
+ get: function get() {
+ return 0;
+ }
+ }]);
+
+ return HTMLMediaElement;
+}(HTMLElement);
+
+module.exports = HTMLMediaElement;
+
+},{"./HTMLElement":14,"./MediaError":22}],17:[function(require,module,exports){
+'use strict';
+
+var _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; }; }();
+
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
+
+function _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; }
+
+function _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; }
+
+var HTMLElement = require('./HTMLElement');
+var Event = require('./Event');
+
+var HTMLScriptElement = function (_HTMLElement) {
+ _inherits(HTMLScriptElement, _HTMLElement);
+
+ function HTMLScriptElement(width, height) {
+ _classCallCheck(this, HTMLScriptElement);
+
+ return _possibleConstructorReturn(this, (HTMLScriptElement.__proto__ || Object.getPrototypeOf(HTMLScriptElement)).call(this, 'script'));
+ }
+
+ _createClass(HTMLScriptElement, [{
+ key: 'src',
+ set: function set(url) {
+ var _this2 = this;
+
+ setTimeout(function () {
+ require(url);
+ _this2.dispatchEvent(new Event('load'));
+ }, 0);
+ }
+ }]);
+
+ return HTMLScriptElement;
+}(HTMLElement);
+
+module.exports = HTMLScriptElement;
+
+},{"./Event":8,"./HTMLElement":14}],18:[function(require,module,exports){
+'use strict';
+
+var _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; }; }();
+
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
+
+function _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; }
+
+function _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; }
+
+var HTMLMediaElement = require('./HTMLMediaElement');
+
+var HTMLVideoElement = function (_HTMLMediaElement) {
+ _inherits(HTMLVideoElement, _HTMLMediaElement);
+
+ function HTMLVideoElement() {
+ _classCallCheck(this, HTMLVideoElement);
+
+ return _possibleConstructorReturn(this, (HTMLVideoElement.__proto__ || Object.getPrototypeOf(HTMLVideoElement)).call(this, 'video'));
+ }
+
+ _createClass(HTMLVideoElement, [{
+ key: 'canPlayType',
+ value: function canPlayType(type) {
+ if (type === 'video/mp4') return true;
+ return false;
+ }
+ }]);
+
+ return HTMLVideoElement;
+}(HTMLMediaElement);
+
+module.exports = HTMLVideoElement;
+
+},{"./HTMLMediaElement":16}],19:[function(require,module,exports){
+'use strict';
+
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
+
+function _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; }
+
+function _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; }
+
+var HTMLImageElement = require('./HTMLImageElement');
+
+var Image = function (_HTMLImageElement) {
+ _inherits(Image, _HTMLImageElement);
+
+ function Image(width, height) {
+ _classCallCheck(this, Image);
+
+ return _possibleConstructorReturn(this, (Image.__proto__ || Object.getPrototypeOf(Image)).call(this, width, height, true));
+ }
+
+ return Image;
+}(HTMLImageElement);
+
+module.exports = Image;
+
+},{"./HTMLImageElement":15}],20:[function(require,module,exports){
+'use strict';
+
+var _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; }; }();
+
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
+
+var ImageData = function () {
+
+ // var imageData = new ImageData(array, width, height);
+ // var imageData = new ImageData(width, height);
+ function ImageData(array, width, height) {
+ _classCallCheck(this, ImageData);
+
+ if (typeof array === 'number' && typeof width == 'number') {
+ height = width;
+ width = array;
+ array = null;
+ }
+ if (array === null) {
+ this._data = new Uint8ClampedArray(width * height * 4);
+ } else {
+ this._data = array;
+ }
+ this._width = width;
+ this._height = height;
+ }
+
+ _createClass(ImageData, [{
+ key: 'data',
+ get: function get() {
+ return this._data;
+ }
+ }, {
+ key: 'width',
+ get: function get() {
+ return this._width;
+ }
+ }, {
+ key: 'height',
+ get: function get() {
+ return this._height;
+ }
+ }]);
+
+ return ImageData;
+}();
+
+module.exports = ImageData;
+
+},{}],21:[function(require,module,exports){
+'use strict';
+
+var _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; };
+
+var _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; }; }();
+
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
+
+function _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; }
+
+function _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; }
+
+var Event = require('./Event');
+
+var __numberShiftMap = {
+ '48': ')', // 0
+ '49': '!', // 1
+ '50': '@', // 2
+ '51': '#', // 3
+ '52': '$', // 4
+ '53': '%', // 5
+ '54': '^', // 6
+ '55': '&', // 7
+ '56': '*', // 8
+ '57': '(' // 9
+};
+
+var __capsLockActive = false;
+
+var KeyboardEvent = function (_Event) {
+ _inherits(KeyboardEvent, _Event);
+
+ function KeyboardEvent(type, KeyboardEventInit) {
+ _classCallCheck(this, KeyboardEvent);
+
+ var _this = _possibleConstructorReturn(this, (KeyboardEvent.__proto__ || Object.getPrototypeOf(KeyboardEvent)).call(this, type));
+
+ if ((typeof KeyboardEventInit === 'undefined' ? 'undefined' : _typeof(KeyboardEventInit)) === 'object') {
+ _this._altKeyActive = KeyboardEventInit.altKey ? KeyboardEventInit.altKey : false;
+ _this._ctrlKeyActive = KeyboardEventInit.ctrlKey ? KeyboardEventInit.ctrlKey : false;
+ _this._metaKeyActive = KeyboardEventInit.metaKey ? KeyboardEventInit.metaKey : false;
+ _this._shiftKeyActive = KeyboardEventInit.shiftKey ? KeyboardEventInit.shiftKey : false;
+ _this._keyCode = KeyboardEventInit.keyCode ? KeyboardEventInit.keyCode : -1;
+ _this._repeat = KeyboardEventInit.repeat ? KeyboardEventInit.repeat : false;
+ } else {
+ _this._altKeyActive = false;
+ _this._ctrlKeyActive = false;
+ _this._metaKeyActive = false;
+ _this._shiftKeyActive = false;
+ _this._keyCode = -1;
+ _this._repeat = false;
+ }
+
+ var keyCode = _this._keyCode;
+ if (keyCode >= 48 && keyCode <= 57) {
+ // 0 ~ 9
+ var number = keyCode - 48;
+ _this._code = 'Digit' + number;
+ _this._key = _this._shiftKeyActive ? __numberShiftMap[keyCode] : '' + number;
+ } else if (keyCode >= 10048 && keyCode <= 10057) {
+ // Numberpad 0 ~ 9
+ // reset to web keyCode since it's a hack in C++ for distinguish numbers in Numberpad.
+ keyCode = _this._keyCode = keyCode - 10000;
+ var number = keyCode - 48;
+ _this._code = 'Numpad' + number;
+ _this._key = '' + number;
+ } else if (keyCode >= 65 && keyCode <= 90) {
+ // A ~ Z
+ var charCode = String.fromCharCode(keyCode);
+ _this._code = 'Key' + charCode;
+ _this._key = _this._shiftKeyActive || __capsLockActive ? charCode : charCode.toLowerCase();
+ } else if (keyCode >= 112 && keyCode <= 123) {
+ // F1 ~ F12
+ _this._code = _this._key = 'F' + (keyCode - 111);
+ } else if (keyCode === 27) {
+ _this._code = _this._key = 'Escape';
+ } else if (keyCode === 189) {
+ _this._code = 'Minus';
+ _this._key = _this._shiftKeyActive ? '_' : '-';
+ } else if (keyCode === 187) {
+ _this._code = 'Equal';
+ _this._key = _this._shiftKeyActive ? '+' : '=';
+ } else if (keyCode === 220) {
+ _this._code = 'Backslash';
+ _this._key = _this._shiftKeyActive ? '|' : '\\';
+ } else if (keyCode === 192) {
+ _this._code = 'Backquote';
+ _this._key = _this._shiftKeyActive ? '~' : '`';
+ } else if (keyCode === 8) {
+ _this._code = _this._key = 'Backspace';
+ } else if (keyCode === 13) {
+ _this._code = _this._key = 'Enter';
+ } else if (keyCode === 219) {
+ _this._code = 'BracketLeft';
+ _this._key = _this._shiftKeyActive ? '{' : '[';
+ } else if (keyCode === 221) {
+ _this._code = 'BracketRight';
+ _this._key = _this._shiftKeyActive ? '}' : ']';
+ } else if (keyCode === 186) {
+ _this._code = 'Semicolon';
+ _this._key = _this._shiftKeyActive ? ':' : ';';
+ } else if (keyCode === 222) {
+ _this._code = 'Quote';
+ _this._key = _this._shiftKeyActive ? '"' : "'";
+ } else if (keyCode === 9) {
+ _this._code = _this._key = 'Tab';
+ } else if (keyCode === 17) {
+ _this._code = 'ControlLeft';
+ _this._key = 'Control';
+ } else if (keyCode === 20017) {
+ _this._keyCode = 17; // Reset to the real value.
+ _this._code = 'ControlRight';
+ _this._key = 'Control';
+ } else if (keyCode === 16) {
+ _this._code = 'ShiftLeft';
+ _this._key = 'Shift';
+ } else if (keyCode === 20016) {
+ _this._keyCode = 16; // Reset to the real value.
+ _this._code = 'ShiftRight';
+ _this._key = 'Shift';
+ } else if (keyCode === 18) {
+ _this._code = 'AltLeft';
+ _this._key = 'Alt';
+ } else if (keyCode === 20018) {
+ _this._keyCode = 18; // Reset to the real value.
+ _this._code = 'AltRight';
+ _this._key = 'Alt';
+ } else if (keyCode === 91) {
+ _this._code = 'MetaLeft';
+ _this._key = 'Meta';
+ } else if (keyCode === 93) {
+ _this._code = 'MetaRight';
+ _this._key = 'Meta';
+ } else if (keyCode === 37) {
+ _this._code = _this._key = 'ArrowLeft';
+ } else if (keyCode === 38) {
+ _this._code = _this._key = 'ArrowUp';
+ } else if (keyCode === 39) {
+ _this._code = _this._key = 'ArrowRight';
+ } else if (keyCode === 40) {
+ _this._code = _this._key = 'ArrowDown';
+ } else if (keyCode === 20093) {
+ _this._keyCode = 93; // Bug of brower since its keycode is the same as MetaRight.
+ _this._code = _this._key = 'ContextMenu';
+ } else if (keyCode === 20013) {
+ _this._keyCode = 13;
+ _this._code = 'NumpadEnter';
+ _this._key = 'Enter';
+ } else if (keyCode === 107) {
+ _this._code = 'NumpadAdd';
+ _this._key = '+';
+ } else if (keyCode === 109) {
+ _this._code = 'NumpadSubtract';
+ _this._key = '-';
+ } else if (keyCode === 106) {
+ _this._code = 'NumpadMultiply';
+ _this._key = '*';
+ } else if (keyCode === 111) {
+ _this._code = 'NumpadDivide';
+ _this._key = '/';
+ } else if (keyCode === 12) {
+ _this._code = 'NumLock';
+ _this._key = 'Clear';
+ } else if (keyCode === 124) {
+ _this._code = _this._key = 'F13';
+ } else if (keyCode === 36) {
+ _this._code = _this._key = 'Home';
+ } else if (keyCode === 33) {
+ _this._code = _this._key = 'PageUp';
+ } else if (keyCode === 34) {
+ _this._code = _this._key = 'PageDown';
+ } else if (keyCode === 35) {
+ _this._code = _this._key = 'End';
+ } else if (keyCode === 188) {
+ _this._code = 'Comma';
+ _this._key = _this._shiftKeyActive ? '<' : ',';
+ } else if (keyCode === 190) {
+ _this._code = 'Period';
+ _this._key = _this._shiftKeyActive ? '>' : '.';
+ } else if (keyCode === 191) {
+ _this._code = 'Slash';
+ _this._key = _this._shiftKeyActive ? '?' : '/';
+ } else if (keyCode === 32) {
+ _this._code = 'Space';
+ _this._key = ' ';
+ } else if (keyCode === 46) {
+ _this._code = _this._key = 'Delete';
+ } else if (keyCode === 110) {
+ _this._code = 'NumpadDecimal';
+ _this._key = '.';
+ } else if (keyCode === 20) {
+ _this._code = _this._key = 'CapsLock';
+ if (type === 'keyup') {
+ __capsLockActive = !__capsLockActive;
+ }
+ } else {
+ console.log("Unknown keyCode: " + _this._keyCode);
+ }
+ return _this;
+ }
+
+ // Returns a Boolean indicating if the modifier key, like Alt, Shift, Ctrl, or Meta, was pressed when the event was created.
+
+
+ _createClass(KeyboardEvent, [{
+ key: 'getModifierState',
+ value: function getModifierState() {
+ return false;
+ }
+
+ // Returns a Boolean that is true if the Alt ( Option or ⌥ on OS X) key was active when the key event was generated.
+
+ }, {
+ key: 'altKey',
+ get: function get() {
+ return this._altKeyActive;
+ }
+
+ // Returns a DOMString with the code value of the key represented by the event.
+
+ }, {
+ key: 'code',
+ get: function get() {
+ return this._code;
+ }
+
+ // Returns a Boolean that is true if the Ctrl key was active when the key event was generated.
+
+ }, {
+ key: 'ctrlKey',
+ get: function get() {
+ return this._ctrlKeyActive;
+ }
+
+ // Returns a Boolean that is true if the event is fired between after compositionstart and before compositionend.
+
+ }, {
+ key: 'isComposing',
+ get: function get() {
+ return false;
+ }
+
+ // Returns a DOMString representing the key value of the key represented by the event.
+
+ }, {
+ key: 'key',
+ get: function get() {
+ return this._key;
+ }
+ }, {
+ key: 'keyCode',
+ get: function get() {
+ return this._keyCode;
+ }
+
+ // Returns a Number representing the location of the key on the keyboard or other input device.
+
+ }, {
+ key: 'location',
+ get: function get() {
+ return 0;
+ }
+
+ // Returns a Boolean that is true if the Meta key (on Mac keyboards, the ⌘ Command key; on Windows keyboards, the Windows key (⊞)) was active when the key event was generated.
+
+ }, {
+ key: 'metaKey',
+ get: function get() {
+ return this._metaKeyActive;
+ }
+
+ // Returns a Boolean that is true if the key is being held down such that it is automatically repeating.
+
+ }, {
+ key: 'repeat',
+ get: function get() {
+ return this._repeat;
+ }
+
+ // Returns a Boolean that is true if the Shift key was active when the key event was generated.
+
+ }, {
+ key: 'shiftKey',
+ get: function get() {
+ return this._shiftKeyActive;
+ }
+ }]);
+
+ return KeyboardEvent;
+}(Event);
+
+module.exports = KeyboardEvent;
+
+},{"./Event":8}],22:[function(require,module,exports){
+"use strict";
+
+var _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; }; }();
+
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
+
+var MEDIA_ERR_ABORTED = 1;
+var MEDIA_ERR_NETWORK = 2;
+var MEDIA_ERR_DECODE = 3;
+var MEDIA_ERR_SRC_NOT_SUPPORTED = 4;
+
+var MediaError = function () {
+ function MediaError() {
+ _classCallCheck(this, MediaError);
+ }
+
+ _createClass(MediaError, [{
+ key: "code",
+ get: function get() {
+ return MEDIA_ERR_ABORTED;
+ }
+ }, {
+ key: "message",
+ get: function get() {
+ return "";
+ }
+ }]);
+
+ return MediaError;
+}();
+
+module.exports = MediaError;
+
+},{}],23:[function(require,module,exports){
+'use strict';
+
+var _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; }; }();
+
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
+
+function _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; }
+
+function _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; }
+
+var Event = require('./Event');
+
+var MouseEvent = function (_Event) {
+ _inherits(MouseEvent, _Event);
+
+ function MouseEvent(type, initArgs) {
+ _classCallCheck(this, MouseEvent);
+
+ var _this = _possibleConstructorReturn(this, (MouseEvent.__proto__ || Object.getPrototypeOf(MouseEvent)).call(this, type));
+
+ _this._button = initArgs.button;
+ _this._which = initArgs.which;
+ _this._wheelDelta = initArgs.wheelDelta;
+ _this._clientX = initArgs.clientX;
+ _this._clientY = initArgs.clientY;
+ _this._screenX = initArgs.screenX;
+ _this._screenY = initArgs.screenY;
+ _this._pageX = initArgs.pageX;
+ _this._pageY = initArgs.pageY;
+ return _this;
+ }
+
+ _createClass(MouseEvent, [{
+ key: 'button',
+ get: function get() {
+ return this._button;
+ }
+ }, {
+ key: 'which',
+ get: function get() {
+ return this._which;
+ }
+ }, {
+ key: 'wheelDelta',
+ get: function get() {
+ return this._wheelDelta;
+ }
+ }, {
+ key: 'clientX',
+ get: function get() {
+ return this._clientX;
+ }
+ }, {
+ key: 'clientY',
+ get: function get() {
+ return this._clientY;
+ }
+ }, {
+ key: 'screenX',
+ get: function get() {
+ return this._screenX;
+ }
+ }, {
+ key: 'screenY',
+ get: function get() {
+ return this._screenY;
+ }
+ }, {
+ key: 'pageX',
+ get: function get() {
+ return this._pageX;
+ }
+ }, {
+ key: 'pageY',
+ get: function get() {
+ return this._pageY;
+ }
+ }]);
+
+ return MouseEvent;
+}(Event);
+
+module.exports = MouseEvent;
+
+},{"./Event":8}],24:[function(require,module,exports){
+'use strict';
+
+var _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; }; }();
+
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
+
+function _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; }
+
+function _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; }
+
+var EventTarget = require('./EventTarget');
+
+var Node = function (_EventTarget) {
+ _inherits(Node, _EventTarget);
+
+ function Node() {
+ _classCallCheck(this, Node);
+
+ var _this = _possibleConstructorReturn(this, (Node.__proto__ || Object.getPrototypeOf(Node)).call(this));
+
+ _this.childNodes = [];
+ _this.parentNode = window.__canvas;
+ return _this;
+ }
+
+ _createClass(Node, [{
+ key: 'appendChild',
+ value: function appendChild(node) {
+ if (node instanceof Node) {
+ this.childNodes.push(node);
+ } else {
+ throw new TypeError('Failed to executed \'appendChild\' on \'Node\': parameter 1 is not of type \'Node\'.');
+ }
+ }
+ }, {
+ key: 'insertBefore',
+ value: function insertBefore(newNode, referenceNode) {
+ //REFINE:
+ return newNode;
+ }
+ }, {
+ key: 'replaceChild',
+ value: function replaceChild(newChild, oldChild) {
+ //REFINE:
+ return oldChild;
+ }
+ }, {
+ key: 'cloneNode',
+ value: function cloneNode() {
+ var copyNode = Object.create(this);
+
+ Object.assign(copyNode, this);
+ return copyNode;
+ }
+ }, {
+ key: 'removeChild',
+ value: function removeChild(node) {
+ var index = this.childNodes.findIndex(function (child) {
+ return child === node;
+ });
+
+ if (index > -1) {
+ return this.childNodes.splice(index, 1);
+ }
+ return null;
+ }
+ }, {
+ key: 'contains',
+ value: function contains(node) {
+ return this.childNodes.indexOf(node) > -1;
+ }
+ }]);
+
+ return Node;
+}(EventTarget);
+
+module.exports = Node;
+
+},{"./EventTarget":9}],25:[function(require,module,exports){
+'use strict';
+
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
+
+function _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; }
+
+function _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; }
+
+var Event = require('./Event');
+
+var TouchEvent = function (_Event) {
+ _inherits(TouchEvent, _Event);
+
+ function TouchEvent(type, touchEventInit) {
+ _classCallCheck(this, TouchEvent);
+
+ var _this = _possibleConstructorReturn(this, (TouchEvent.__proto__ || Object.getPrototypeOf(TouchEvent)).call(this, type));
+
+ _this.touches = [];
+ _this.targetTouches = [];
+ _this.changedTouches = [];
+ return _this;
+ }
+
+ return TouchEvent;
+}(Event);
+
+module.exports = TouchEvent;
+
+},{"./Event":8}],26:[function(require,module,exports){
+'use strict';
+
+var _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; }; }();
+
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
+
+function _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; }
+
+function _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; }
+
+var HTMLElement = require('./HTMLElement');
+var Image = require('./Image');
+var HTMLCanvasElement = require('./HTMLCanvasElement');
+var HTMLVideoElement = require('./HTMLVideoElement');
+var HTMLScriptElement = require('./HTMLScriptElement');
+var Node = require('./Node');
+var FontFaceSet = require('./FontFaceSet');
+
+var Document = function (_Node) {
+ _inherits(Document, _Node);
+
+ function Document() {
+ _classCallCheck(this, Document);
+
+ var _this = _possibleConstructorReturn(this, (Document.__proto__ || Object.getPrototypeOf(Document)).call(this));
+
+ _this.readyState = 'complete';
+ _this.visibilityState = 'visible';
+ _this.documentElement = window;
+ _this.hidden = false;
+ _this.style = {};
+ _this.location = require('./location');
+
+ _this.head = new HTMLElement('head');
+ _this.body = new HTMLElement('body');
+
+ _this.fonts = new FontFaceSet();
+
+ _this.scripts = [];
+ return _this;
+ }
+
+ _createClass(Document, [{
+ key: 'createElementNS',
+ value: function createElementNS(namespaceURI, qualifiedName, options) {
+ return this.createElement(qualifiedName);
+ }
+ }, {
+ key: 'createElement',
+ value: function createElement(tagName) {
+ if (tagName === 'canvas') {
+ return new HTMLCanvasElement();
+ } else if (tagName === 'img') {
+ return new Image();
+ } else if (tagName === 'video') {
+ return new HTMLVideoElement();
+ } else if (tagName === 'script') {
+ return new HTMLScriptElement();
+ }
+
+ return new HTMLElement(tagName);
+ }
+ }, {
+ key: 'getElementById',
+ value: function getElementById(id) {
+ if (id === window.__canvas.id || id === 'canvas') {
+ return window.__canvas;
+ }
+ return new HTMLElement(id);
+ }
+ }, {
+ key: 'getElementsByTagName',
+ value: function getElementsByTagName(tagName) {
+ if (tagName === 'head') {
+ return [document.head];
+ } else if (tagName === 'body') {
+ return [document.body];
+ } else if (tagName === 'canvas') {
+ return [window.__canvas];
+ }
+ return [new HTMLElement(tagName)];
+ }
+ }, {
+ key: 'getElementsByName',
+ value: function getElementsByName(tagName) {
+ if (tagName === 'head') {
+ return [document.head];
+ } else if (tagName === 'body') {
+ return [document.body];
+ } else if (tagName === 'canvas') {
+ return [window.__canvas];
+ }
+ return [new HTMLElement(tagName)];
+ }
+ }, {
+ key: 'querySelector',
+ value: function querySelector(query) {
+ if (query === 'head') {
+ return document.head;
+ } else if (query === 'body') {
+ return document.body;
+ } else if (query === 'canvas') {
+ return window.__canvas;
+ } else if (query === '#' + window.__canvas.id) {
+ return window.__canvas;
+ }
+ return new HTMLElement(query);
+ }
+ }, {
+ key: 'querySelectorAll',
+ value: function querySelectorAll(query) {
+ if (query === 'head') {
+ return [document.head];
+ } else if (query === 'body') {
+ return [document.body];
+ } else if (query === 'canvas') {
+ return [window.__canvas];
+ }
+ return [new HTMLElement(query)];
+ }
+ }, {
+ key: 'createTextNode',
+ value: function createTextNode() {
+ return new HTMLElement('text');
+ }
+ }, {
+ key: 'elementFromPoint',
+ value: function elementFromPoint() {
+ return window.canvas;
+ }
+ }, {
+ key: 'createEvent',
+ value: function createEvent(type) {
+ if (window[type]) {
+ return new window[type]();
+ }
+ return null;
+ }
+ }]);
+
+ return Document;
+}(Node);
+
+var document = new Document();
+
+module.exports = document;
+
+},{"./FontFaceSet":12,"./HTMLCanvasElement":13,"./HTMLElement":14,"./HTMLScriptElement":17,"./HTMLVideoElement":18,"./Image":19,"./Node":24,"./location":28}],27:[function(require,module,exports){
+'use strict';
+
+require('./window');
+
+},{"./window":31}],28:[function(require,module,exports){
+'use strict';
+
+var location = {
+ href: 'game.js',
+ pathname: 'game.js',
+ search: '',
+ hash: '',
+ reload: function reload() {}
+};
+
+module.exports = location;
+
+},{}],29:[function(require,module,exports){
+'use strict';
+
+var _require = require('./util'),
+ noop = _require.noop;
+
+var navigator = {
+ platform: __getOS(),
+ language: __getCurrentLanguage(),
+ appVersion: '5.0 (iPhone; CPU iPhone OS 9_1 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Version/9.0 Mobile/13B143 Safari/601.1',
+ userAgent: 'Mozilla/5.0 (iPhone; CPU iPhone OS 10_3_1 like Mac OS X) AppleWebKit/603.1.30 (KHTML, like Gecko) Mobile/14E8301 NetType/WIFI Language/zh_CN',
+ onLine: true, //FIXME:
+
+ geolocation: {
+ getCurrentPosition: noop,
+ watchPosition: noop,
+ clearWatch: noop
+ },
+
+ maxTouchPoints: 10 //FIXME: getting the number from OS.
+};
+
+module.exports = navigator;
+
+},{"./util":30}],30:[function(require,module,exports){
+"use strict";
+
+function noop() {}
+
+module.exports = noop;
+
+},{}],31:[function(require,module,exports){
+'use strict';
+
+function inject() {
+ window.top = window.parent = window;
+
+ window.ontouchstart = null;
+ window.ontouchmove = null;
+ window.ontouchend = null;
+ window.ontouchcancel = null;
+
+ window.pageXOffset = window.pageYOffset = window.clientTop = window.clientLeft = 0;
+ window.outerWidth = window.innerWidth;
+ window.outerHeight = window.innerHeight;
+
+ window.location = require('./location');
+ window.document = require('./document');
+ window.Element = require('./Element');
+ window.HTMLElement = require('./HTMLElement');
+ window.HTMLCanvasElement = require('./HTMLCanvasElement');
+ window.HTMLImageElement = require('./HTMLImageElement');
+ window.HTMLMediaElement = require('./HTMLMediaElement');
+ window.HTMLVideoElement = require('./HTMLVideoElement');
+ window.HTMLScriptElement = require('./HTMLScriptElement');
+ window.__canvas = new HTMLCanvasElement();
+ window.__canvas._width = window.innerWidth;
+ window.__canvas._height = window.innerHeight;
+ window.__gl.canvas = window.__canvas;
+ window.navigator = require('./navigator');
+ window.Image = require('./Image');
+ window.FileReader = require('./FileReader');
+ window.FontFace = require('./FontFace');
+ window.FontFaceSet = require('./FontFaceSet');
+ window.EventTarget = require('./EventTarget');
+ window.Event = require('./Event');
+ window.TouchEvent = require('./TouchEvent');
+ window.MouseEvent = require('./MouseEvent');
+ window.KeyboardEvent = require('./KeyboardEvent');
+ window.DeviceMotionEvent = require('./DeviceMotionEvent');
+
+ var ROTATION_0 = 0;
+ var ROTATION_90 = 1;
+ var ROTATION_180 = 2;
+ var ROTATION_270 = 3;
+ var orientation = 0;
+ var rotation = jsb.device.getDeviceRotation();
+ switch (rotation) {
+ case ROTATION_90:
+ orientation = 90;
+ break;
+ case ROTATION_180:
+ orientation = 180;
+ break;
+ case ROTATION_270:
+ orientation = -90;
+ break;
+ default:
+ break;
+ }
+
+ //FIXME: The value needs to be updated when device orientation changes.
+ window.orientation = orientation;
+
+ window.devicePixelRatio = 1.0;
+ window.screen = {
+ availTop: 0,
+ availLeft: 0,
+ availHeight: window.innerWidth,
+ availWidth: window.innerHeight,
+ colorDepth: 8,
+ pixelDepth: 8,
+ left: 0,
+ top: 0,
+ width: window.innerWidth,
+ height: window.innerHeight,
+ orientation: { //FIXME:cjh
+ type: 'portrait-primary' // portrait-primary, portrait-secondary, landscape-primary, landscape-secondary
+ },
+ onorientationchange: function onorientationchange(event) {}
+ };
+
+ window.addEventListener = function (eventName, listener, options) {
+ window.__canvas.addEventListener(eventName, listener, options);
+ };
+
+ window.removeEventListener = function (eventName, listener, options) {
+ window.__canvas.removeEventListener(eventName, listener, options);
+ };
+
+ window.dispatchEvent = function (event) {
+ window.__canvas.dispatchEvent(event);
+ };
+
+ window.getComputedStyle = function (element) {
+ return {
+ position: 'absolute',
+ left: '0px',
+ top: '0px',
+ height: '0px'
+ };
+ };
+
+ window.resize = function (width, height) {
+ window.innerWidth = width;
+ window.innerHeight = height;
+ window.outerWidth = window.innerWidth;
+ window.outerHeight = window.innerHeight;
+ window.__canvas._width = window.innerWidth;
+ window.__canvas._height = window.innerHeight;
+ window.screen.availWidth = window.innerWidth;
+ window.screen.availHeight = window.innerHeight;
+ window.screen.width = window.innerWidth;
+ window.screen.height = window.innerHeight;
+ };
+
+ window.focus = function () {};
+ window.scroll = function () {};
+
+ window._isInjected = true;
+}
+
+if (!window._isInjected) {
+ inject();
+}
+
+window.localStorage = sys.localStorage;
+
+},{"./DeviceMotionEvent":6,"./Element":7,"./Event":8,"./EventTarget":9,"./FileReader":10,"./FontFace":11,"./FontFaceSet":12,"./HTMLCanvasElement":13,"./HTMLElement":14,"./HTMLImageElement":15,"./HTMLMediaElement":16,"./HTMLScriptElement":17,"./HTMLVideoElement":18,"./Image":19,"./KeyboardEvent":21,"./MouseEvent":23,"./TouchEvent":25,"./document":26,"./location":28,"./navigator":29}],32:[function(require,module,exports){
+"use strict";
+
+(function (jsb) {
+
+ if (!jsb || !jsb.AudioEngine) return;
+
+ jsb.AudioEngine.AudioState = {
+ ERROR: -1,
+ INITIALZING: 0,
+ PLAYING: 1,
+ PAUSED: 2,
+ STOPPED: 3
+ };
+
+ jsb.AudioEngine.INVALID_AUDIO_ID = -1;
+ jsb.AudioEngine.TIME_UNKNOWN = -1;
+})(jsb);
+
+},{}],33:[function(require,module,exports){
+'use strict';
+
+var EventTarget = require('./jsb-adapter/EventTarget');
+var Event = require('./jsb-adapter/Event');
+
+var eventTarget = new EventTarget();
+
+var callbackWrappers = {};
+var callbacks = {};
+var index = 1;
+var callbackWrapper = function callbackWrapper(cb) {
+ if (!cb) return null;
+
+ var func = function func(event) {
+ cb({ value: event.text });
+ };
+ cb.___index = index++;
+ callbackWrappers[cb.___index] = func;
+
+ return func;
+};
+var getCallbackWrapper = function getCallbackWrapper(cb) {
+ if (cb && cb.___index) {
+ var ret = callbackWrappers[cb.___index];
+ delete callbackWrappers[cb.___index];
+ return ret;
+ } else return null;
+};
+var removeListener = function removeListener(name, cb) {
+ if (cb) eventTarget.removeEventListener(name, getCallbackWrapper(cb));else {
+ // remove all listeners of name
+ var cbs = callbacks[name];
+ if (!cbs) return;
+
+ for (var i = 0, len = cbs.length; i < len; ++i) {
+ eventTarget.removeEventListener(name, cbs[i]);
+ }delete callbacks[name];
+ }
+};
+var recordCallback = function recordCallback(name, cb) {
+ if (!cb || !name || name === '') return;
+
+ if (!callbacks[name]) callbacks[name] = [];
+
+ callbacks[name].push(cb);
+};
+
+jsb.inputBox = {
+ onConfirm: function onConfirm(cb) {
+ var newCb = callbackWrapper(cb);
+ eventTarget.addEventListener('confirm', newCb);
+ recordCallback('confirm', newCb);
+ },
+ offConfirm: function offConfirm(cb) {
+ removeListener('confirm', cb);
+ },
+
+ onComplete: function onComplete(cb) {
+ var newCb = callbackWrapper(cb);
+ eventTarget.addEventListener('complete', newCb);
+ recordCallback('complete', newCb);
+ },
+ offComplete: function offComplete(cb) {
+ removeListener('complete', cb);
+ },
+
+ onInput: function onInput(cb) {
+ var newCb = callbackWrapper(cb);
+ eventTarget.addEventListener('input', newCb);
+ recordCallback('input', newCb);
+ },
+ offInput: function offInput(cb) {
+ removeListener('input', cb);
+ },
+
+ /**
+ * @param {string} options.defaultValue
+ * @param {number} options.maxLength
+ * @param {bool} options.multiple
+ * @param {bool} options.confirmHold
+ * @param {string} options.confirmType
+ * @param {string} options.inputType
+ *
+ * Values of options.confirmType can be [done|next|search|go|send].
+ * Values of options.inputType can be [text|email|number|phone|password].
+ */
+ show: function show(options) {
+ jsb.showInputBox(options);
+ },
+ hide: function hide() {
+ jsb.hideInputBox();
+ }
+};
+
+jsb.onTextInput = function (eventName, text) {
+ var event = new Event(eventName);
+ event.text = text;
+ eventTarget.dispatchEvent(event);
+};
+
+},{"./jsb-adapter/Event":8,"./jsb-adapter/EventTarget":9}],34:[function(require,module,exports){
+'use strict';
+
+require('./jsb_opengl_constants');
+
+var gl = __gl;
+
+gl.drawingBufferWidth = window.innerWidth;
+gl.drawingBufferHeight = window.innerHeight;
+
+//
+// Extensions
+//
+
+var WebGLCompressedTextureS3TC = {
+ COMPRESSED_RGB_S3TC_DXT1_EXT: 0x83F0, // A DXT1-compressed image in an RGB image format.
+ COMPRESSED_RGBA_S3TC_DXT1_EXT: 0x83F1, // A DXT1-compressed image in an RGB image format with a simple on/off alpha value.
+ COMPRESSED_RGBA_S3TC_DXT3_EXT: 0x83F2, // A DXT3-compressed image in an RGBA image format. Compared to a 32-bit RGBA texture, it offers 4:1 compression.
+ COMPRESSED_RGBA_S3TC_DXT5_EXT: 0x83F3 // A DXT5-compressed image in an RGBA image format. It also provides a 4:1 compression, but differs to the DXT3 compression in how the alpha compression is done.
+};
+
+var WebGLCompressedTextureETC1 = {
+ COMPRESSED_RGB_ETC1_WEBGL: 0x8D64 // Compresses 24-bit RGB data with no alpha channel.
+};
+
+var WebGLCompressedTexturePVRTC = {
+ COMPRESSED_RGB_PVRTC_4BPPV1_IMG: 0x8C00, // RGB compression in 4-bit mode. One block for each 4×4 pixels.
+ COMPRESSED_RGBA_PVRTC_4BPPV1_IMG: 0x8C02, // RGBA compression in 4-bit mode. One block for each 4×4 pixels.
+ COMPRESSED_RGB_PVRTC_2BPPV1_IMG: 0x8C01, // RGB compression in 2-bit mode. One block for each 8×4 pixels.
+ COMPRESSED_RGBA_PVRTC_2BPPV1_IMG: 0x8C03 // RGBA compression in 2-bit mode. One block for each 8×4 pixe
+};
+
+var extensionPrefixArr = ['MOZ_', 'WEBKIT_'];
+
+var extensionMap = {
+ WEBGL_compressed_texture_s3tc: WebGLCompressedTextureS3TC,
+ WEBGL_compressed_texture_pvrtc: WebGLCompressedTexturePVRTC,
+ WEBGL_compressed_texture_etc1: WebGLCompressedTextureETC1
+};
+
+// From the WebGL spec:
+// Returns an object if, and only if, name is an ASCII case-insensitive match [HTML] for one of the names returned from getSupportedExtensions;
+// otherwise, returns null. The object returned from getExtension contains any constants or functions provided by the extension.
+// A returned object may have no constants or functions if the extension does not define any, but a unique object must still be returned.
+// That object is used to indicate that the extension has been enabled.
+// XXX: The returned object must return the functions and constants.
+
+var supportedExtensions = gl.getSupportedExtensions();
+
+gl.getExtension = function (extension) {
+ var prefix;
+ for (var i = 0, len = extensionPrefixArr.length; i < len; ++i) {
+ prefix = extensionPrefixArr[i];
+ if (extension.startsWith(prefix)) {
+ extension = extension.substring(prefix.length);
+ break;
+ }
+ }
+
+ if (supportedExtensions.indexOf(extension) > -1) {
+ if (extension in extensionMap) {
+ return extensionMap[extension];
+ }
+ return {}; //REFINE: Return an empty object to indicate this platform supports the extension. But we should not return an empty object actually.
+ }
+
+ return null;
+};
+
+var HTMLCanvasElement = require('./jsb-adapter/HTMLCanvasElement');
+var HTMLImageElement = require('./jsb-adapter/HTMLImageElement');
+var ImageData = require('./jsb-adapter/ImageData');
+
+var _glTexImage2D = gl.texImage2D;
+
+/*
+// WebGL1:
+void gl.texImage2D(target, level, internalformat, width, height, border, format, type, ArrayBufferView? pixels);
+void gl.texImage2D(target, level, internalformat, format, type, ImageData? pixels);
+void gl.texImage2D(target, level, internalformat, format, type, HTMLImageElement? pixels);
+void gl.texImage2D(target, level, internalformat, format, type, HTMLCanvasElement? pixels);
+void gl.texImage2D(target, level, internalformat, format, type, HTMLVideoElement? pixels);
+void gl.texImage2D(target, level, internalformat, format, type, ImageBitmap? pixels);
+*/
+gl.texImage2D = function (target, level, internalformat, width, height, border, format, type, pixels) {
+ var argCount = arguments.length;
+ if (argCount == 6) {
+
+ var image = border;
+ type = height;
+ format = width;
+
+ if (image instanceof HTMLImageElement) {
+ _glTexImage2D(target, level, image._glInternalFormat, image.width, image.height, 0, image._glFormat, image._glType, image._data, image._alignment);
+ } else if (image instanceof HTMLCanvasElement) {
+ var data = image.data;
+ _glTexImage2D(target, level, internalformat, image.width, image.height, 0, format, type, data, image._alignment);
+ } else if (image instanceof ImageData) {
+ _glTexImage2D(target, level, internalformat, image.width, image.height, 0, format, type, image._data, 0);
+ } else {
+ console.error("Invalid pixel argument passed to gl.texImage2D!");
+ }
+ } else if (argCount == 9) {
+ _glTexImage2D(target, level, internalformat, width, height, border, format, type, pixels, 0);
+ } else {
+ console.error("gl.texImage2D: invalid argument count!");
+ }
+};
+
+var _glTexSubImage2D = gl.texSubImage2D;
+/*
+ // WebGL 1:
+ void gl.texSubImage2D(target, level, xoffset, yoffset, width, height, format, type, ArrayBufferView? pixels);
+ void gl.texSubImage2D(target, level, xoffset, yoffset, format, type, ImageData? pixels);
+ void gl.texSubImage2D(target, level, xoffset, yoffset, format, type, HTMLImageElement? pixels);
+ void gl.texSubImage2D(target, level, xoffset, yoffset, format, type, HTMLCanvasElement? pixels);
+ void gl.texSubImage2D(target, level, xoffset, yoffset, format, type, HTMLVideoElement? pixels);
+ void gl.texSubImage2D(target, level, xoffset, yoffset, format, type, ImageBitmap? pixels);
+ */
+gl.texSubImage2D = function (target, level, xoffset, yoffset, width, height, format, type, pixels) {
+ var argCount = arguments.length;
+ if (argCount == 7) {
+ var image = format;
+ type = height;
+ format = width;
+
+ if (image instanceof HTMLImageElement) {
+ _glTexSubImage2D(target, level, xoffset, yoffset, image.width, image.height, image._glFormat, image._glType, image._data, image._alignment);
+ } else if (image instanceof HTMLCanvasElement) {
+ var data = image.data;
+ _glTexSubImage2D(target, level, xoffset, yoffset, image.width, image.height, format, type, data, image._alignment);
+ } else if (image instanceof ImageData) {
+ _glTexSubImage2D(target, level, xoffset, yoffset, image.width, image.height, format, type, image._data, 0);
+ } else {
+ console.error("Invalid pixel argument passed to gl.texImage2D!");
+ }
+ } else if (argCount == 9) {
+ _glTexSubImage2D(target, level, xoffset, yoffset, width, height, format, type, pixels, 0);
+ } else {
+ console.error(new Error("gl.texImage2D: invalid argument count!").stack);
+ }
+};
+
+//REFINE:cjh get the real value
+gl.getContextAttributes = function () {
+ return {
+ alpha: true,
+ antialias: false,
+ depth: true,
+ failIfMajorPerformanceCaveat: false,
+ premultipliedAlpha: true,
+ preserveDrawingBuffer: false,
+ stencil: true
+ };
+};
+
+gl.isContextLost = function () {
+ return false;
+};
+
+},{"./jsb-adapter/HTMLCanvasElement":13,"./jsb-adapter/HTMLImageElement":15,"./jsb-adapter/ImageData":20,"./jsb_opengl_constants":35}],35:[function(require,module,exports){
+"use strict";
+
+var gl = __gl;
+
+gl.GCCSO_SHADER_BINARY_FJ = 0x9260;
+gl._3DC_XY_AMD = 0x87fa;
+gl._3DC_X_AMD = 0x87f9;
+gl.ACTIVE_ATTRIBUTES = 0x8b89;
+gl.ACTIVE_ATTRIBUTE_MAX_LENGTH = 0x8b8a;
+gl.ACTIVE_PROGRAM_EXT = 0x8259;
+gl.ACTIVE_TEXTURE = 0x84e0;
+gl.ACTIVE_UNIFORMS = 0x8b86;
+gl.ACTIVE_UNIFORM_MAX_LENGTH = 0x8b87;
+gl.ALIASED_LINE_WIDTH_RANGE = 0x846e;
+gl.ALIASED_POINT_SIZE_RANGE = 0x846d;
+gl.ALL_COMPLETED_NV = 0x84f2;
+gl.ALL_SHADER_BITS_EXT = 0xffffffff;
+gl.ALPHA = 0x1906;
+gl.ALPHA16F_EXT = 0x881c;
+gl.ALPHA32F_EXT = 0x8816;
+gl.ALPHA8_EXT = 0x803c;
+gl.ALPHA8_OES = 0x803c;
+gl.ALPHA_BITS = 0xd55;
+gl.ALPHA_TEST_FUNC_QCOM = 0xbc1;
+gl.ALPHA_TEST_QCOM = 0xbc0;
+gl.ALPHA_TEST_REF_QCOM = 0xbc2;
+gl.ALREADY_SIGNALED_APPLE = 0x911a;
+gl.ALWAYS = 0x207;
+gl.AMD_compressed_3DC_texture = 0x1;
+gl.AMD_compressed_ATC_texture = 0x1;
+gl.AMD_performance_monitor = 0x1;
+gl.AMD_program_binary_Z400 = 0x1;
+gl.ANGLE_depth_texture = 0x1;
+gl.ANGLE_framebuffer_blit = 0x1;
+gl.ANGLE_framebuffer_multisample = 0x1;
+gl.ANGLE_instanced_arrays = 0x1;
+gl.ANGLE_pack_reverse_row_order = 0x1;
+gl.ANGLE_program_binary = 0x1;
+gl.ANGLE_texture_compression_dxt3 = 0x1;
+gl.ANGLE_texture_compression_dxt5 = 0x1;
+gl.ANGLE_texture_usage = 0x1;
+gl.ANGLE_translated_shader_source = 0x1;
+gl.ANY_SAMPLES_PASSED_CONSERVATIVE_EXT = 0x8d6a;
+gl.ANY_SAMPLES_PASSED_EXT = 0x8c2f;
+gl.APPLE_copy_texture_levels = 0x1;
+gl.APPLE_framebuffer_multisample = 0x1;
+gl.APPLE_rgb_422 = 0x1;
+gl.APPLE_sync = 0x1;
+gl.APPLE_texture_format_BGRA8888 = 0x1;
+gl.APPLE_texture_max_level = 0x1;
+gl.ARM_mali_program_binary = 0x1;
+gl.ARM_mali_shader_binary = 0x1;
+gl.ARM_rgba8 = 0x1;
+gl.ARRAY_BUFFER = 0x8892;
+gl.ARRAY_BUFFER_BINDING = 0x8894;
+gl.ATC_RGBA_EXPLICIT_ALPHA_AMD = 0x8c93;
+gl.ATC_RGBA_INTERPOLATED_ALPHA_AMD = 0x87ee;
+gl.ATC_RGB_AMD = 0x8c92;
+gl.ATTACHED_SHADERS = 0x8b85;
+gl.BACK = 0x405;
+gl.BGRA8_EXT = 0x93a1;
+gl.BGRA_EXT = 0x80e1;
+gl.BGRA_IMG = 0x80e1;
+gl.BINNING_CONTROL_HINT_QCOM = 0x8fb0;
+gl.BLEND = 0xbe2;
+gl.BLEND_COLOR = 0x8005;
+gl.BLEND_DST_ALPHA = 0x80ca;
+gl.BLEND_DST_RGB = 0x80c8;
+gl.BLEND_EQUATION = 0x8009;
+gl.BLEND_EQUATION_ALPHA = 0x883d;
+gl.BLEND_EQUATION_RGB = 0x8009;
+gl.BLEND_SRC_ALPHA = 0x80cb;
+gl.BLEND_SRC_RGB = 0x80c9;
+gl.BLUE_BITS = 0xd54;
+gl.BOOL = 0x8b56;
+gl.BOOL_VEC2 = 0x8b57;
+gl.BOOL_VEC3 = 0x8b58;
+gl.BOOL_VEC4 = 0x8b59;
+gl.BUFFER = 0x82e0;
+gl.BUFFER_ACCESS_OES = 0x88bb;
+gl.BUFFER_MAPPED_OES = 0x88bc;
+gl.BUFFER_MAP_POINTER_OES = 0x88bd;
+gl.BUFFER_OBJECT_EXT = 0x9151;
+gl.BUFFER_SIZE = 0x8764;
+gl.BUFFER_USAGE = 0x8765;
+gl.BYTE = 0x1400;
+gl.CCW = 0x901;
+gl.CLAMP_TO_BORDER_NV = 0x812d;
+gl.CLAMP_TO_EDGE = 0x812f;
+gl.COLOR_ATTACHMENT0 = 0x8ce0;
+gl.COLOR_ATTACHMENT0_NV = 0x8ce0;
+gl.COLOR_ATTACHMENT10_NV = 0x8cea;
+gl.COLOR_ATTACHMENT11_NV = 0x8ceb;
+gl.COLOR_ATTACHMENT12_NV = 0x8cec;
+gl.COLOR_ATTACHMENT13_NV = 0x8ced;
+gl.COLOR_ATTACHMENT14_NV = 0x8cee;
+gl.COLOR_ATTACHMENT15_NV = 0x8cef;
+gl.COLOR_ATTACHMENT1_NV = 0x8ce1;
+gl.COLOR_ATTACHMENT2_NV = 0x8ce2;
+gl.COLOR_ATTACHMENT3_NV = 0x8ce3;
+gl.COLOR_ATTACHMENT4_NV = 0x8ce4;
+gl.COLOR_ATTACHMENT5_NV = 0x8ce5;
+gl.COLOR_ATTACHMENT6_NV = 0x8ce6;
+gl.COLOR_ATTACHMENT7_NV = 0x8ce7;
+gl.COLOR_ATTACHMENT8_NV = 0x8ce8;
+gl.COLOR_ATTACHMENT9_NV = 0x8ce9;
+gl.COLOR_ATTACHMENT_EXT = 0x90f0;
+gl.COLOR_BUFFER_BIT = 0x4000;
+gl.COLOR_BUFFER_BIT0_QCOM = 0x1;
+gl.COLOR_BUFFER_BIT1_QCOM = 0x2;
+gl.COLOR_BUFFER_BIT2_QCOM = 0x4;
+gl.COLOR_BUFFER_BIT3_QCOM = 0x8;
+gl.COLOR_BUFFER_BIT4_QCOM = 0x10;
+gl.COLOR_BUFFER_BIT5_QCOM = 0x20;
+gl.COLOR_BUFFER_BIT6_QCOM = 0x40;
+gl.COLOR_BUFFER_BIT7_QCOM = 0x80;
+gl.COLOR_CLEAR_VALUE = 0xc22;
+gl.COLOR_EXT = 0x1800;
+gl.COLOR_WRITEMASK = 0xc23;
+gl.COMPARE_REF_TO_TEXTURE_EXT = 0x884e;
+gl.COMPILE_STATUS = 0x8b81;
+gl.COMPRESSED_RGBA_ASTC_10x10_KHR = 0x93bb;
+gl.COMPRESSED_RGBA_ASTC_10x5_KHR = 0x93b8;
+gl.COMPRESSED_RGBA_ASTC_10x6_KHR = 0x93b9;
+gl.COMPRESSED_RGBA_ASTC_10x8_KHR = 0x93ba;
+gl.COMPRESSED_RGBA_ASTC_12x10_KHR = 0x93bc;
+gl.COMPRESSED_RGBA_ASTC_12x12_KHR = 0x93bd;
+gl.COMPRESSED_RGBA_ASTC_4x4_KHR = 0x93b0;
+gl.COMPRESSED_RGBA_ASTC_5x4_KHR = 0x93b1;
+gl.COMPRESSED_RGBA_ASTC_5x5_KHR = 0x93b2;
+gl.COMPRESSED_RGBA_ASTC_6x5_KHR = 0x93b3;
+gl.COMPRESSED_RGBA_ASTC_6x6_KHR = 0x93b4;
+gl.COMPRESSED_RGBA_ASTC_8x5_KHR = 0x93b5;
+gl.COMPRESSED_RGBA_ASTC_8x6_KHR = 0x93b6;
+gl.COMPRESSED_RGBA_ASTC_8x8_KHR = 0x93b7;
+gl.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG = 0x8c03;
+gl.COMPRESSED_RGBA_PVRTC_2BPPV2_IMG = 0x9137;
+gl.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG = 0x8c02;
+gl.COMPRESSED_RGBA_PVRTC_4BPPV2_IMG = 0x9138;
+gl.COMPRESSED_RGBA_S3TC_DXT1_EXT = 0x83f1;
+gl.COMPRESSED_RGBA_S3TC_DXT3_ANGLE = 0x83f2;
+gl.COMPRESSED_RGBA_S3TC_DXT5_ANGLE = 0x83f3;
+gl.COMPRESSED_RGB_PVRTC_2BPPV1_IMG = 0x8c01;
+gl.COMPRESSED_RGB_PVRTC_4BPPV1_IMG = 0x8c00;
+gl.COMPRESSED_RGB_S3TC_DXT1_EXT = 0x83f0;
+gl.COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR = 0x93db;
+gl.COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR = 0x93d8;
+gl.COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR = 0x93d9;
+gl.COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR = 0x93da;
+gl.COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR = 0x93dc;
+gl.COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR = 0x93dd;
+gl.COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR = 0x93d0;
+gl.COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR = 0x93d1;
+gl.COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR = 0x93d2;
+gl.COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR = 0x93d3;
+gl.COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR = 0x93d4;
+gl.COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR = 0x93d5;
+gl.COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR = 0x93d6;
+gl.COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR = 0x93d7;
+gl.COMPRESSED_SRGB_ALPHA_S3TC_DXT1_NV = 0x8c4d;
+gl.COMPRESSED_SRGB_ALPHA_S3TC_DXT3_NV = 0x8c4e;
+gl.COMPRESSED_SRGB_ALPHA_S3TC_DXT5_NV = 0x8c4f;
+gl.COMPRESSED_SRGB_S3TC_DXT1_NV = 0x8c4c;
+gl.COMPRESSED_TEXTURE_FORMATS = 0x86a3;
+gl.CONDITION_SATISFIED_APPLE = 0x911c;
+gl.CONSTANT_ALPHA = 0x8003;
+gl.CONSTANT_COLOR = 0x8001;
+gl.CONTEXT_FLAG_DEBUG_BIT = 0x2;
+gl.CONTEXT_ROBUST_ACCESS_EXT = 0x90f3;
+gl.COUNTER_RANGE_AMD = 0x8bc1;
+gl.COUNTER_TYPE_AMD = 0x8bc0;
+gl.COVERAGE_ALL_FRAGMENTS_NV = 0x8ed5;
+gl.COVERAGE_ATTACHMENT_NV = 0x8ed2;
+gl.COVERAGE_AUTOMATIC_NV = 0x8ed7;
+gl.COVERAGE_BUFFERS_NV = 0x8ed3;
+gl.COVERAGE_BUFFER_BIT_NV = 0x8000;
+gl.COVERAGE_COMPONENT4_NV = 0x8ed1;
+gl.COVERAGE_COMPONENT_NV = 0x8ed0;
+gl.COVERAGE_EDGE_FRAGMENTS_NV = 0x8ed6;
+gl.COVERAGE_SAMPLES_NV = 0x8ed4;
+gl.CPU_OPTIMIZED_QCOM = 0x8fb1;
+gl.CULL_FACE = 0xb44;
+gl.CULL_FACE_MODE = 0xb45;
+gl.CURRENT_PROGRAM = 0x8b8d;
+gl.CURRENT_QUERY_EXT = 0x8865;
+gl.CURRENT_VERTEX_ATTRIB = 0x8626;
+gl.CW = 0x900;
+gl.DEBUG_CALLBACK_FUNCTION = 0x8244;
+gl.DEBUG_CALLBACK_USER_PARAM = 0x8245;
+gl.DEBUG_GROUP_STACK_DEPTH = 0x826d;
+gl.DEBUG_LOGGED_MESSAGES = 0x9145;
+gl.DEBUG_NEXT_LOGGED_MESSAGE_LENGTH = 0x8243;
+gl.DEBUG_OUTPUT = 0x92e0;
+gl.DEBUG_OUTPUT_SYNCHRONOUS = 0x8242;
+gl.DEBUG_SEVERITY_HIGH = 0x9146;
+gl.DEBUG_SEVERITY_LOW = 0x9148;
+gl.DEBUG_SEVERITY_MEDIUM = 0x9147;
+gl.DEBUG_SEVERITY_NOTIFICATION = 0x826b;
+gl.DEBUG_SOURCE_API = 0x8246;
+gl.DEBUG_SOURCE_APPLICATION = 0x824a;
+gl.DEBUG_SOURCE_OTHER = 0x824b;
+gl.DEBUG_SOURCE_SHADER_COMPILER = 0x8248;
+gl.DEBUG_SOURCE_THIRD_PARTY = 0x8249;
+gl.DEBUG_SOURCE_WINDOW_SYSTEM = 0x8247;
+gl.DEBUG_TYPE_DEPRECATED_BEHAVIOR = 0x824d;
+gl.DEBUG_TYPE_ERROR = 0x824c;
+gl.DEBUG_TYPE_MARKER = 0x8268;
+gl.DEBUG_TYPE_OTHER = 0x8251;
+gl.DEBUG_TYPE_PERFORMANCE = 0x8250;
+gl.DEBUG_TYPE_POP_GROUP = 0x826a;
+gl.DEBUG_TYPE_PORTABILITY = 0x824f;
+gl.DEBUG_TYPE_PUSH_GROUP = 0x8269;
+gl.DEBUG_TYPE_UNDEFINED_BEHAVIOR = 0x824e;
+gl.DECR = 0x1e03;
+gl.DECR_WRAP = 0x8508;
+gl.DELETE_STATUS = 0x8b80;
+gl.DEPTH24_STENCIL8_OES = 0x88f0;
+gl.DEPTH_ATTACHMENT = 0x8d00;
+gl.DEPTH_STENCIL_ATTACHMENT = 0x821a;
+gl.DEPTH_BITS = 0xd56;
+gl.DEPTH_BUFFER_BIT = 0x100;
+gl.DEPTH_BUFFER_BIT0_QCOM = 0x100;
+gl.DEPTH_BUFFER_BIT1_QCOM = 0x200;
+gl.DEPTH_BUFFER_BIT2_QCOM = 0x400;
+gl.DEPTH_BUFFER_BIT3_QCOM = 0x800;
+gl.DEPTH_BUFFER_BIT4_QCOM = 0x1000;
+gl.DEPTH_BUFFER_BIT5_QCOM = 0x2000;
+gl.DEPTH_BUFFER_BIT6_QCOM = 0x4000;
+gl.DEPTH_BUFFER_BIT7_QCOM = 0x8000;
+gl.DEPTH_CLEAR_VALUE = 0xb73;
+gl.DEPTH_COMPONENT = 0x1902;
+gl.DEPTH_COMPONENT16 = 0x81a5;
+gl.DEPTH_COMPONENT16_NONLINEAR_NV = 0x8e2c;
+gl.DEPTH_COMPONENT16_OES = 0x81a5;
+gl.DEPTH_COMPONENT24_OES = 0x81a6;
+gl.DEPTH_COMPONENT32_OES = 0x81a7;
+gl.DEPTH_EXT = 0x1801;
+gl.DEPTH_FUNC = 0xb74;
+gl.DEPTH_RANGE = 0xb70;
+gl.DEPTH_STENCIL = 0x84f9;
+gl.DEPTH_STENCIL_OES = 0x84f9;
+gl.DEPTH_TEST = 0xb71;
+gl.DEPTH_WRITEMASK = 0xb72;
+gl.DITHER = 0xbd0;
+gl.DMP_shader_binary = 0x1;
+gl.DONT_CARE = 0x1100;
+gl.DRAW_BUFFER0_NV = 0x8825;
+gl.DRAW_BUFFER10_NV = 0x882f;
+gl.DRAW_BUFFER11_NV = 0x8830;
+gl.DRAW_BUFFER12_NV = 0x8831;
+gl.DRAW_BUFFER13_NV = 0x8832;
+gl.DRAW_BUFFER14_NV = 0x8833;
+gl.DRAW_BUFFER15_NV = 0x8834;
+gl.DRAW_BUFFER1_NV = 0x8826;
+gl.DRAW_BUFFER2_NV = 0x8827;
+gl.DRAW_BUFFER3_NV = 0x8828;
+gl.DRAW_BUFFER4_NV = 0x8829;
+gl.DRAW_BUFFER5_NV = 0x882a;
+gl.DRAW_BUFFER6_NV = 0x882b;
+gl.DRAW_BUFFER7_NV = 0x882c;
+gl.DRAW_BUFFER8_NV = 0x882d;
+gl.DRAW_BUFFER9_NV = 0x882e;
+gl.DRAW_BUFFER_EXT = 0xc01;
+gl.DRAW_FRAMEBUFFER_ANGLE = 0x8ca9;
+gl.DRAW_FRAMEBUFFER_APPLE = 0x8ca9;
+gl.DRAW_FRAMEBUFFER_BINDING_ANGLE = 0x8ca6;
+gl.DRAW_FRAMEBUFFER_BINDING_APPLE = 0x8ca6;
+gl.DRAW_FRAMEBUFFER_BINDING_NV = 0x8ca6;
+gl.DRAW_FRAMEBUFFER_NV = 0x8ca9;
+gl.DST_ALPHA = 0x304;
+gl.DST_COLOR = 0x306;
+gl.DYNAMIC_DRAW = 0x88e8;
+gl.ELEMENT_ARRAY_BUFFER = 0x8893;
+gl.ELEMENT_ARRAY_BUFFER_BINDING = 0x8895;
+gl.EQUAL = 0x202;
+gl.ES_VERSION_2_0 = 0x1;
+gl.ETC1_RGB8_OES = 0x8d64;
+gl.ETC1_SRGB8_NV = 0x88ee;
+gl.EXTENSIONS = 0x1f03;
+gl.EXT_blend_minmax = 0x1;
+gl.EXT_color_buffer_half_float = 0x1;
+gl.EXT_debug_label = 0x1;
+gl.EXT_debug_marker = 0x1;
+gl.EXT_discard_framebuffer = 0x1;
+gl.EXT_map_buffer_range = 0x1;
+gl.EXT_multi_draw_arrays = 0x1;
+gl.EXT_multisampled_render_to_texture = 0x1;
+gl.EXT_multiview_draw_buffers = 0x1;
+gl.EXT_occlusion_query_boolean = 0x1;
+gl.EXT_read_format_bgra = 0x1;
+gl.EXT_robustness = 0x1;
+gl.EXT_sRGB = 0x1;
+gl.EXT_separate_shader_objects = 0x1;
+gl.EXT_shader_framebuffer_fetch = 0x1;
+gl.EXT_shader_texture_lod = 0x1;
+gl.EXT_shadow_samplers = 0x1;
+gl.EXT_texture_compression_dxt1 = 0x1;
+gl.EXT_texture_filter_anisotropic = 0x1;
+gl.EXT_texture_format_BGRA8888 = 0x1;
+gl.EXT_texture_rg = 0x1;
+gl.EXT_texture_storage = 0x1;
+gl.EXT_texture_type_2_10_10_10_REV = 0x1;
+gl.EXT_unpack_subimage = 0x1;
+gl.FALSE = 0x0;
+gl.FASTEST = 0x1101;
+gl.FENCE_CONDITION_NV = 0x84f4;
+gl.FENCE_STATUS_NV = 0x84f3;
+gl.FIXED = 0x140c;
+gl.FJ_shader_binary_GCCSO = 0x1;
+gl.FLOAT = 0x1406;
+gl.FLOAT_MAT2 = 0x8b5a;
+gl.FLOAT_MAT3 = 0x8b5b;
+gl.FLOAT_MAT4 = 0x8b5c;
+gl.FLOAT_VEC2 = 0x8b50;
+gl.FLOAT_VEC3 = 0x8b51;
+gl.FLOAT_VEC4 = 0x8b52;
+gl.FRAGMENT_SHADER = 0x8b30;
+gl.FRAGMENT_SHADER_BIT_EXT = 0x2;
+gl.FRAGMENT_SHADER_DERIVATIVE_HINT_OES = 0x8b8b;
+gl.FRAGMENT_SHADER_DISCARDS_SAMPLES_EXT = 0x8a52;
+gl.FRAMEBUFFER = 0x8d40;
+gl.FRAMEBUFFER_ATTACHMENT_ANGLE = 0x93a3;
+gl.FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING_EXT = 0x8210;
+gl.FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE_EXT = 0x8211;
+gl.FRAMEBUFFER_ATTACHMENT_OBJECT_NAME = 0x8cd1;
+gl.FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE = 0x8cd0;
+gl.FRAMEBUFFER_ATTACHMENT_TEXTURE_3D_ZOFFSET_OES = 0x8cd4;
+gl.FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE = 0x8cd3;
+gl.FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL = 0x8cd2;
+gl.FRAMEBUFFER_ATTACHMENT_TEXTURE_SAMPLES_EXT = 0x8d6c;
+gl.FRAMEBUFFER_BINDING = 0x8ca6;
+gl.FRAMEBUFFER_COMPLETE = 0x8cd5;
+gl.FRAMEBUFFER_INCOMPLETE_ATTACHMENT = 0x8cd6;
+gl.FRAMEBUFFER_INCOMPLETE_DIMENSIONS = 0x8cd9;
+gl.FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT = 0x8cd7;
+gl.FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_ANGLE = 0x8d56;
+gl.FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_APPLE = 0x8d56;
+gl.FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_EXT = 0x8d56;
+gl.FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_IMG = 0x9134;
+gl.FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_NV = 0x8d56;
+gl.FRAMEBUFFER_UNDEFINED_OES = 0x8219;
+gl.FRAMEBUFFER_UNSUPPORTED = 0x8cdd;
+gl.FRONT = 0x404;
+gl.FRONT_AND_BACK = 0x408;
+gl.FRONT_FACE = 0xb46;
+gl.FUNC_ADD = 0x8006;
+gl.FUNC_REVERSE_SUBTRACT = 0x800b;
+gl.FUNC_SUBTRACT = 0x800a;
+gl.GENERATE_MIPMAP_HINT = 0x8192;
+gl.GEQUAL = 0x206;
+gl.GPU_OPTIMIZED_QCOM = 0x8fb2;
+gl.GREATER = 0x204;
+gl.GREEN_BITS = 0xd53;
+gl.GUILTY_CONTEXT_RESET_EXT = 0x8253;
+gl.HALF_FLOAT_OES = 0x8d61;
+gl.HIGH_FLOAT = 0x8df2;
+gl.HIGH_INT = 0x8df5;
+gl.IMG_multisampled_render_to_texture = 0x1;
+gl.IMG_program_binary = 0x1;
+gl.IMG_read_format = 0x1;
+gl.IMG_shader_binary = 0x1;
+gl.IMG_texture_compression_pvrtc = 0x1;
+gl.IMG_texture_compression_pvrtc2 = 0x1;
+gl.IMPLEMENTATION_COLOR_READ_FORMAT = 0x8b9b;
+gl.IMPLEMENTATION_COLOR_READ_TYPE = 0x8b9a;
+gl.INCR = 0x1e02;
+gl.INCR_WRAP = 0x8507;
+gl.INFO_LOG_LENGTH = 0x8b84;
+gl.INNOCENT_CONTEXT_RESET_EXT = 0x8254;
+gl.INT = 0x1404;
+gl.INT_10_10_10_2_OES = 0x8df7;
+gl.INT_VEC2 = 0x8b53;
+gl.INT_VEC3 = 0x8b54;
+gl.INT_VEC4 = 0x8b55;
+gl.INVALID_ENUM = 0x500;
+gl.INVALID_FRAMEBUFFER_OPERATION = 0x506;
+gl.INVALID_OPERATION = 0x502;
+gl.INVALID_VALUE = 0x501;
+gl.INVERT = 0x150a;
+gl.KEEP = 0x1e00;
+gl.KHR_debug = 0x1;
+gl.KHR_texture_compression_astc_ldr = 0x1;
+gl.LEFT = 0x0406;
+gl.LEQUAL = 0x203;
+gl.LESS = 0x201;
+gl.LINEAR = 0x2601;
+gl.LINEAR_MIPMAP_LINEAR = 0x2703;
+gl.LINEAR_MIPMAP_NEAREST = 0x2701;
+gl.LINES = 0x1;
+gl.LINE_LOOP = 0x2;
+gl.LINE_STRIP = 0x3;
+gl.LINE_WIDTH = 0xb21;
+gl.LINK_STATUS = 0x8b82;
+gl.LOSE_CONTEXT_ON_RESET_EXT = 0x8252;
+gl.LOW_FLOAT = 0x8df0;
+gl.LOW_INT = 0x8df3;
+gl.LUMINANCE = 0x1909;
+gl.LUMINANCE16F_EXT = 0x881e;
+gl.LUMINANCE32F_EXT = 0x8818;
+gl.LUMINANCE4_ALPHA4_OES = 0x8043;
+gl.LUMINANCE8_ALPHA8_EXT = 0x8045;
+gl.LUMINANCE8_ALPHA8_OES = 0x8045;
+gl.LUMINANCE8_EXT = 0x8040;
+gl.LUMINANCE8_OES = 0x8040;
+gl.LUMINANCE_ALPHA = 0x190a;
+gl.LUMINANCE_ALPHA16F_EXT = 0x881f;
+gl.LUMINANCE_ALPHA32F_EXT = 0x8819;
+gl.MALI_PROGRAM_BINARY_ARM = 0x8f61;
+gl.MALI_SHADER_BINARY_ARM = 0x8f60;
+gl.MAP_FLUSH_EXPLICIT_BIT_EXT = 0x10;
+gl.MAP_INVALIDATE_BUFFER_BIT_EXT = 0x8;
+gl.MAP_INVALIDATE_RANGE_BIT_EXT = 0x4;
+gl.MAP_READ_BIT_EXT = 0x1;
+gl.MAP_UNSYNCHRONIZED_BIT_EXT = 0x20;
+gl.MAP_WRITE_BIT_EXT = 0x2;
+gl.MAX_3D_TEXTURE_SIZE_OES = 0x8073;
+gl.MAX_COLOR_ATTACHMENTS_NV = 0x8cdf;
+gl.MAX_COMBINED_TEXTURE_IMAGE_UNITS = 0x8b4d;
+gl.MAX_CUBE_MAP_TEXTURE_SIZE = 0x851c;
+gl.MAX_DEBUG_GROUP_STACK_DEPTH = 0x826c;
+gl.MAX_DEBUG_LOGGED_MESSAGES = 0x9144;
+gl.MAX_DEBUG_MESSAGE_LENGTH = 0x9143;
+gl.MAX_DRAW_BUFFERS_NV = 0x8824;
+gl.MAX_EXT = 0x8008;
+gl.MAX_FRAGMENT_UNIFORM_VECTORS = 0x8dfd;
+gl.MAX_LABEL_LENGTH = 0x82e8;
+gl.MAX_MULTIVIEW_BUFFERS_EXT = 0x90f2;
+gl.MAX_RENDERBUFFER_SIZE = 0x84e8;
+gl.MAX_SAMPLES_ANGLE = 0x8d57;
+gl.MAX_SAMPLES_APPLE = 0x8d57;
+gl.MAX_SAMPLES_EXT = 0x8d57;
+gl.MAX_SAMPLES_IMG = 0x9135;
+gl.MAX_SAMPLES_NV = 0x8d57;
+gl.MAX_SERVER_WAIT_TIMEOUT_APPLE = 0x9111;
+gl.MAX_TEXTURE_IMAGE_UNITS = 0x8872;
+gl.MAX_TEXTURE_MAX_ANISOTROPY_EXT = 0x84ff;
+gl.MAX_TEXTURE_SIZE = 0xd33;
+gl.MAX_VARYING_VECTORS = 0x8dfc;
+gl.MAX_VERTEX_ATTRIBS = 0x8869;
+gl.MAX_VERTEX_TEXTURE_IMAGE_UNITS = 0x8b4c;
+gl.MAX_VERTEX_UNIFORM_VECTORS = 0x8dfb;
+gl.MAX_VIEWPORT_DIMS = 0xd3a;
+gl.MEDIUM_FLOAT = 0x8df1;
+gl.MEDIUM_INT = 0x8df4;
+gl.MIN_EXT = 0x8007;
+gl.MIRRORED_REPEAT = 0x8370;
+gl.MULTISAMPLE_BUFFER_BIT0_QCOM = 0x1000000;
+gl.MULTISAMPLE_BUFFER_BIT1_QCOM = 0x2000000;
+gl.MULTISAMPLE_BUFFER_BIT2_QCOM = 0x4000000;
+gl.MULTISAMPLE_BUFFER_BIT3_QCOM = 0x8000000;
+gl.MULTISAMPLE_BUFFER_BIT4_QCOM = 0x10000000;
+gl.MULTISAMPLE_BUFFER_BIT5_QCOM = 0x20000000;
+gl.MULTISAMPLE_BUFFER_BIT6_QCOM = 0x40000000;
+gl.MULTISAMPLE_BUFFER_BIT7_QCOM = 0x80000000;
+gl.MULTIVIEW_EXT = 0x90f1;
+gl.NEAREST = 0x2600;
+gl.NEAREST_MIPMAP_LINEAR = 0x2702;
+gl.NEAREST_MIPMAP_NEAREST = 0x2700;
+gl.NEVER = 0x200;
+gl.NICEST = 0x1102;
+gl.NONE = 0x0;
+gl.NOTEQUAL = 0x205;
+gl.NO_ERROR = 0x0;
+gl.NO_RESET_NOTIFICATION_EXT = 0x8261;
+gl.NUM_COMPRESSED_TEXTURE_FORMATS = 0x86a2;
+gl.NUM_PROGRAM_BINARY_FORMATS_OES = 0x87fe;
+gl.NUM_SHADER_BINARY_FORMATS = 0x8df9;
+gl.NV_coverage_sample = 0x1;
+gl.NV_depth_nonlinear = 0x1;
+gl.NV_draw_buffers = 0x1;
+gl.NV_draw_instanced = 0x1;
+gl.NV_fbo_color_attachments = 0x1;
+gl.NV_fence = 0x1;
+gl.NV_framebuffer_blit = 0x1;
+gl.NV_framebuffer_multisample = 0x1;
+gl.NV_generate_mipmap_sRGB = 0x1;
+gl.NV_instanced_arrays = 0x1;
+gl.NV_read_buffer = 0x1;
+gl.NV_read_buffer_front = 0x1;
+gl.NV_read_depth = 0x1;
+gl.NV_read_depth_stencil = 0x1;
+gl.NV_read_stencil = 0x1;
+gl.NV_sRGB_formats = 0x1;
+gl.NV_shadow_samplers_array = 0x1;
+gl.NV_shadow_samplers_cube = 0x1;
+gl.NV_texture_border_clamp = 0x1;
+gl.NV_texture_compression_s3tc_update = 0x1;
+gl.NV_texture_npot_2D_mipmap = 0x1;
+gl.OBJECT_TYPE_APPLE = 0x9112;
+gl.OES_EGL_image = 0x1;
+gl.OES_EGL_image_external = 0x1;
+gl.OES_compressed_ETC1_RGB8_texture = 0x1;
+gl.OES_compressed_paletted_texture = 0x1;
+gl.OES_depth24 = 0x1;
+gl.OES_depth32 = 0x1;
+gl.OES_depth_texture = 0x1;
+gl.OES_element_index_uint = 0x1;
+gl.OES_fbo_render_mipmap = 0x1;
+gl.OES_fragment_precision_high = 0x1;
+gl.OES_get_program_binary = 0x1;
+gl.OES_mapbuffer = 0x1;
+gl.OES_packed_depth_stencil = 0x1;
+gl.OES_required_internalformat = 0x1;
+gl.OES_rgb8_rgba8 = 0x1;
+gl.OES_standard_derivatives = 0x1;
+gl.OES_stencil1 = 0x1;
+gl.OES_stencil4 = 0x1;
+gl.OES_surfaceless_context = 0x1;
+gl.OES_texture_3D = 0x1;
+gl.OES_texture_float = 0x1;
+gl.OES_texture_float_linear = 0x1;
+gl.OES_texture_half_float = 0x1;
+gl.OES_texture_half_float_linear = 0x1;
+gl.OES_texture_npot = 0x1;
+gl.OES_vertex_array_object = 0x1;
+gl.OES_vertex_half_float = 0x1;
+gl.OES_vertex_type_10_10_10_2 = 0x1;
+gl.ONE = 0x1;
+gl.ONE_MINUS_CONSTANT_ALPHA = 0x8004;
+gl.ONE_MINUS_CONSTANT_COLOR = 0x8002;
+gl.ONE_MINUS_DST_ALPHA = 0x305;
+gl.ONE_MINUS_DST_COLOR = 0x307;
+gl.ONE_MINUS_SRC_ALPHA = 0x303;
+gl.ONE_MINUS_SRC_COLOR = 0x301;
+gl.OUT_OF_MEMORY = 0x505;
+gl.PACK_ALIGNMENT = 0xd05;
+gl.PACK_REVERSE_ROW_ORDER_ANGLE = 0x93a4;
+gl.PALETTE4_R5_G6_B5_OES = 0x8b92;
+gl.PALETTE4_RGB5_A1_OES = 0x8b94;
+gl.PALETTE4_RGB8_OES = 0x8b90;
+gl.PALETTE4_RGBA4_OES = 0x8b93;
+gl.PALETTE4_RGBA8_OES = 0x8b91;
+gl.PALETTE8_R5_G6_B5_OES = 0x8b97;
+gl.PALETTE8_RGB5_A1_OES = 0x8b99;
+gl.PALETTE8_RGB8_OES = 0x8b95;
+gl.PALETTE8_RGBA4_OES = 0x8b98;
+gl.PALETTE8_RGBA8_OES = 0x8b96;
+gl.PERCENTAGE_AMD = 0x8bc3;
+gl.PERFMON_GLOBAL_MODE_QCOM = 0x8fa0;
+gl.PERFMON_RESULT_AMD = 0x8bc6;
+gl.PERFMON_RESULT_AVAILABLE_AMD = 0x8bc4;
+gl.PERFMON_RESULT_SIZE_AMD = 0x8bc5;
+gl.POINTS = 0x0;
+gl.POLYGON_OFFSET_FACTOR = 0x8038;
+gl.POLYGON_OFFSET_FILL = 0x8037;
+gl.POLYGON_OFFSET_UNITS = 0x2a00;
+gl.PROGRAM = 0x82e2;
+gl.PROGRAM_BINARY_ANGLE = 0x93a6;
+gl.PROGRAM_BINARY_FORMATS_OES = 0x87ff;
+gl.PROGRAM_BINARY_LENGTH_OES = 0x8741;
+gl.PROGRAM_OBJECT_EXT = 0x8b40;
+gl.PROGRAM_PIPELINE_BINDING_EXT = 0x825a;
+gl.PROGRAM_PIPELINE_OBJECT_EXT = 0x8a4f;
+gl.PROGRAM_SEPARABLE_EXT = 0x8258;
+gl.QCOM_alpha_test = 0x1;
+gl.QCOM_binning_control = 0x1;
+gl.QCOM_driver_control = 0x1;
+gl.QCOM_extended_get = 0x1;
+gl.QCOM_extended_get2 = 0x1;
+gl.QCOM_perfmon_global_mode = 0x1;
+gl.QCOM_tiled_rendering = 0x1;
+gl.QCOM_writeonly_rendering = 0x1;
+gl.QUERY = 0x82e3;
+gl.QUERY_OBJECT_EXT = 0x9153;
+gl.QUERY_RESULT_AVAILABLE_EXT = 0x8867;
+gl.QUERY_RESULT_EXT = 0x8866;
+gl.R16F_EXT = 0x822d;
+gl.R32F_EXT = 0x822e;
+gl.R8_EXT = 0x8229;
+gl.READ_BUFFER_EXT = 0xc02;
+gl.READ_BUFFER_NV = 0xc02;
+gl.READ_FRAMEBUFFER_ANGLE = 0x8ca8;
+gl.READ_FRAMEBUFFER_APPLE = 0x8ca8;
+gl.READ_FRAMEBUFFER_BINDING_ANGLE = 0x8caa;
+gl.READ_FRAMEBUFFER_BINDING_APPLE = 0x8caa;
+gl.READ_FRAMEBUFFER_BINDING_NV = 0x8caa;
+gl.READ_FRAMEBUFFER_NV = 0x8ca8;
+gl.RED_BITS = 0xd52;
+gl.RED_EXT = 0x1903;
+gl.RENDERBUFFER = 0x8d41;
+gl.RENDERBUFFER_ALPHA_SIZE = 0x8d53;
+gl.RENDERBUFFER_BINDING = 0x8ca7;
+gl.RENDERBUFFER_BLUE_SIZE = 0x8d52;
+gl.RENDERBUFFER_DEPTH_SIZE = 0x8d54;
+gl.RENDERBUFFER_GREEN_SIZE = 0x8d51;
+gl.RENDERBUFFER_HEIGHT = 0x8d43;
+gl.RENDERBUFFER_INTERNAL_FORMAT = 0x8d44;
+gl.RENDERBUFFER_RED_SIZE = 0x8d50;
+gl.RENDERBUFFER_SAMPLES_ANGLE = 0x8cab;
+gl.RENDERBUFFER_SAMPLES_APPLE = 0x8cab;
+gl.RENDERBUFFER_SAMPLES_EXT = 0x8cab;
+gl.RENDERBUFFER_SAMPLES_IMG = 0x9133;
+gl.RENDERBUFFER_SAMPLES_NV = 0x8cab;
+gl.RENDERBUFFER_STENCIL_SIZE = 0x8d55;
+gl.RENDERBUFFER_WIDTH = 0x8d42;
+gl.RENDERER = 0x1f01;
+gl.RENDER_DIRECT_TO_FRAMEBUFFER_QCOM = 0x8fb3;
+gl.REPEAT = 0x2901;
+gl.REPLACE = 0x1e01;
+gl.REQUIRED_TEXTURE_IMAGE_UNITS_OES = 0x8d68;
+gl.RESET_NOTIFICATION_STRATEGY_EXT = 0x8256;
+gl.RG16F_EXT = 0x822f;
+gl.RG32F_EXT = 0x8230;
+gl.RG8_EXT = 0x822b;
+gl.RGB = 0x1907;
+gl.RGB10_A2_EXT = 0x8059;
+gl.RGB10_EXT = 0x8052;
+gl.RGB16F_EXT = 0x881b;
+gl.RGB32F_EXT = 0x8815;
+gl.RGB565 = 0x8d62;
+gl.RGB565_OES = 0x8d62;
+gl.RGB5_A1 = 0x8057;
+gl.RGB5_A1_OES = 0x8057;
+gl.RGB8_OES = 0x8051;
+gl.RGBA = 0x1908;
+gl.RGBA16F_EXT = 0x881a;
+gl.RGBA32F_EXT = 0x8814;
+gl.RGBA4 = 0x8056;
+gl.RGBA4_OES = 0x8056;
+gl.RGBA8_OES = 0x8058;
+gl.RGB_422_APPLE = 0x8a1f;
+gl.RG_EXT = 0x8227;
+gl.RIGHT = 0x0407;
+gl.SAMPLER = 0x82e6;
+gl.SAMPLER_2D = 0x8b5e;
+gl.SAMPLER_2D_ARRAY_SHADOW_NV = 0x8dc4;
+gl.SAMPLER_2D_SHADOW_EXT = 0x8b62;
+gl.SAMPLER_3D_OES = 0x8b5f;
+gl.SAMPLER_CUBE = 0x8b60;
+gl.SAMPLER_CUBE_SHADOW_NV = 0x8dc5;
+gl.SAMPLER_EXTERNAL_OES = 0x8d66;
+gl.SAMPLES = 0x80a9;
+gl.SAMPLE_ALPHA_TO_COVERAGE = 0x809e;
+gl.SAMPLE_BUFFERS = 0x80a8;
+gl.SAMPLE_COVERAGE = 0x80a0;
+gl.SAMPLE_COVERAGE_INVERT = 0x80ab;
+gl.SAMPLE_COVERAGE_VALUE = 0x80aa;
+gl.SCISSOR_BOX = 0xc10;
+gl.SCISSOR_TEST = 0xc11;
+gl.SGX_BINARY_IMG = 0x8c0a;
+gl.SGX_PROGRAM_BINARY_IMG = 0x9130;
+gl.SHADER = 0x82e1;
+gl.SHADER_BINARY_DMP = 0x9250;
+gl.SHADER_BINARY_FORMATS = 0x8df8;
+gl.SHADER_BINARY_VIV = 0x8fc4;
+gl.SHADER_COMPILER = 0x8dfa;
+gl.SHADER_OBJECT_EXT = 0x8b48;
+gl.SHADER_SOURCE_LENGTH = 0x8b88;
+gl.SHADER_TYPE = 0x8b4f;
+gl.SHADING_LANGUAGE_VERSION = 0x8b8c;
+gl.SHORT = 0x1402;
+gl.SIGNALED_APPLE = 0x9119;
+gl.SLUMINANCE8_ALPHA8_NV = 0x8c45;
+gl.SLUMINANCE8_NV = 0x8c47;
+gl.SLUMINANCE_ALPHA_NV = 0x8c44;
+gl.SLUMINANCE_NV = 0x8c46;
+gl.SRC_ALPHA = 0x302;
+gl.SRC_ALPHA_SATURATE = 0x308;
+gl.SRC_COLOR = 0x300;
+gl.SRGB8_ALPHA8_EXT = 0x8c43;
+gl.SRGB8_NV = 0x8c41;
+gl.SRGB_ALPHA_EXT = 0x8c42;
+gl.SRGB_EXT = 0x8c40;
+gl.STACK_OVERFLOW = 0x503;
+gl.STACK_UNDERFLOW = 0x504;
+gl.STATE_RESTORE = 0x8bdc;
+gl.STATIC_DRAW = 0x88e4;
+gl.STENCIL_ATTACHMENT = 0x8d20;
+gl.STENCIL_BACK_FAIL = 0x8801;
+gl.STENCIL_BACK_FUNC = 0x8800;
+gl.STENCIL_BACK_PASS_DEPTH_FAIL = 0x8802;
+gl.STENCIL_BACK_PASS_DEPTH_PASS = 0x8803;
+gl.STENCIL_BACK_REF = 0x8ca3;
+gl.STENCIL_BACK_VALUE_MASK = 0x8ca4;
+gl.STENCIL_BACK_WRITEMASK = 0x8ca5;
+gl.STENCIL_BITS = 0xd57;
+gl.STENCIL_BUFFER_BIT = 0x400;
+gl.STENCIL_BUFFER_BIT0_QCOM = 0x10000;
+gl.STENCIL_BUFFER_BIT1_QCOM = 0x20000;
+gl.STENCIL_BUFFER_BIT2_QCOM = 0x40000;
+gl.STENCIL_BUFFER_BIT3_QCOM = 0x80000;
+gl.STENCIL_BUFFER_BIT4_QCOM = 0x100000;
+gl.STENCIL_BUFFER_BIT5_QCOM = 0x200000;
+gl.STENCIL_BUFFER_BIT6_QCOM = 0x400000;
+gl.STENCIL_BUFFER_BIT7_QCOM = 0x800000;
+gl.STENCIL_CLEAR_VALUE = 0xb91;
+gl.STENCIL_EXT = 0x1802;
+gl.STENCIL_FAIL = 0xb94;
+gl.STENCIL_FUNC = 0xb92;
+gl.STENCIL_INDEX1_OES = 0x8d46;
+gl.STENCIL_INDEX4_OES = 0x8d47;
+gl.STENCIL_INDEX = 0x1901;
+gl.STENCIL_INDEX8 = 0x8d48;
+gl.STENCIL_PASS_DEPTH_FAIL = 0xb95;
+gl.STENCIL_PASS_DEPTH_PASS = 0xb96;
+gl.STENCIL_REF = 0xb97;
+gl.STENCIL_TEST = 0xb90;
+gl.STENCIL_VALUE_MASK = 0xb93;
+gl.STENCIL_WRITEMASK = 0xb98;
+gl.STREAM_DRAW = 0x88e0;
+gl.SUBPIXEL_BITS = 0xd50;
+gl.SYNC_CONDITION_APPLE = 0x9113;
+gl.SYNC_FENCE_APPLE = 0x9116;
+gl.SYNC_FLAGS_APPLE = 0x9115;
+gl.SYNC_FLUSH_COMMANDS_BIT_APPLE = 0x1;
+gl.SYNC_GPU_COMMANDS_COMPLETE_APPLE = 0x9117;
+gl.SYNC_OBJECT_APPLE = 0x8a53;
+gl.SYNC_STATUS_APPLE = 0x9114;
+gl.TEXTURE = 0x1702;
+gl.TEXTURE0 = 0x84c0;
+gl.TEXTURE1 = 0x84c1;
+gl.TEXTURE10 = 0x84ca;
+gl.TEXTURE11 = 0x84cb;
+gl.TEXTURE12 = 0x84cc;
+gl.TEXTURE13 = 0x84cd;
+gl.TEXTURE14 = 0x84ce;
+gl.TEXTURE15 = 0x84cf;
+gl.TEXTURE16 = 0x84d0;
+gl.TEXTURE17 = 0x84d1;
+gl.TEXTURE18 = 0x84d2;
+gl.TEXTURE19 = 0x84d3;
+gl.TEXTURE2 = 0x84c2;
+gl.TEXTURE20 = 0x84d4;
+gl.TEXTURE21 = 0x84d5;
+gl.TEXTURE22 = 0x84d6;
+gl.TEXTURE23 = 0x84d7;
+gl.TEXTURE24 = 0x84d8;
+gl.TEXTURE25 = 0x84d9;
+gl.TEXTURE26 = 0x84da;
+gl.TEXTURE27 = 0x84db;
+gl.TEXTURE28 = 0x84dc;
+gl.TEXTURE29 = 0x84dd;
+gl.TEXTURE3 = 0x84c3;
+gl.TEXTURE30 = 0x84de;
+gl.TEXTURE31 = 0x84df;
+gl.TEXTURE4 = 0x84c4;
+gl.TEXTURE5 = 0x84c5;
+gl.TEXTURE6 = 0x84c6;
+gl.TEXTURE7 = 0x84c7;
+gl.TEXTURE8 = 0x84c8;
+gl.TEXTURE9 = 0x84c9;
+gl.TEXTURE_2D = 0xde1;
+gl.TEXTURE_3D_OES = 0x806f;
+gl.TEXTURE_BINDING_2D = 0x8069;
+gl.TEXTURE_BINDING_3D_OES = 0x806a;
+gl.TEXTURE_BINDING_CUBE_MAP = 0x8514;
+gl.TEXTURE_BINDING_EXTERNAL_OES = 0x8d67;
+gl.TEXTURE_BORDER_COLOR_NV = 0x1004;
+gl.TEXTURE_COMPARE_FUNC_EXT = 0x884d;
+gl.TEXTURE_COMPARE_MODE_EXT = 0x884c;
+gl.TEXTURE_CUBE_MAP = 0x8513;
+gl.TEXTURE_CUBE_MAP_NEGATIVE_X = 0x8516;
+gl.TEXTURE_CUBE_MAP_NEGATIVE_Y = 0x8518;
+gl.TEXTURE_CUBE_MAP_NEGATIVE_Z = 0x851a;
+gl.TEXTURE_CUBE_MAP_POSITIVE_X = 0x8515;
+gl.TEXTURE_CUBE_MAP_POSITIVE_Y = 0x8517;
+gl.TEXTURE_CUBE_MAP_POSITIVE_Z = 0x8519;
+gl.TEXTURE_DEPTH_QCOM = 0x8bd4;
+gl.TEXTURE_EXTERNAL_OES = 0x8d65;
+gl.TEXTURE_FORMAT_QCOM = 0x8bd6;
+gl.TEXTURE_HEIGHT_QCOM = 0x8bd3;
+gl.TEXTURE_IMAGE_VALID_QCOM = 0x8bd8;
+gl.TEXTURE_IMMUTABLE_FORMAT_EXT = 0x912f;
+gl.TEXTURE_INTERNAL_FORMAT_QCOM = 0x8bd5;
+gl.TEXTURE_MAG_FILTER = 0x2800;
+gl.TEXTURE_MAX_ANISOTROPY_EXT = 0x84fe;
+gl.TEXTURE_MAX_LEVEL_APPLE = 0x813d;
+gl.TEXTURE_MIN_FILTER = 0x2801;
+gl.TEXTURE_NUM_LEVELS_QCOM = 0x8bd9;
+gl.TEXTURE_OBJECT_VALID_QCOM = 0x8bdb;
+gl.TEXTURE_SAMPLES_IMG = 0x9136;
+gl.TEXTURE_TARGET_QCOM = 0x8bda;
+gl.TEXTURE_TYPE_QCOM = 0x8bd7;
+gl.TEXTURE_USAGE_ANGLE = 0x93a2;
+gl.TEXTURE_WIDTH_QCOM = 0x8bd2;
+gl.TEXTURE_WRAP_R_OES = 0x8072;
+gl.TEXTURE_WRAP_S = 0x2802;
+gl.TEXTURE_WRAP_T = 0x2803;
+gl.TIMEOUT_EXPIRED_APPLE = 0x911b;
+gl.TIMEOUT_IGNORED_APPLE = 0xffffffffffffffff;
+gl.TRANSLATED_SHADER_SOURCE_LENGTH_ANGLE = 0x93a0;
+gl.TRIANGLES = 0x4;
+gl.TRIANGLE_FAN = 0x6;
+gl.TRIANGLE_STRIP = 0x5;
+gl.TRUE = 0x1;
+gl.UNKNOWN_CONTEXT_RESET_EXT = 0x8255;
+gl.UNPACK_ALIGNMENT = 0xcf5;
+gl.UNPACK_ROW_LENGTH = 0xcf2;
+gl.UNPACK_SKIP_PIXELS = 0xcf4;
+gl.UNPACK_SKIP_ROWS = 0xcf3;
+gl.UNSIGNALED_APPLE = 0x9118;
+gl.UNSIGNED_BYTE = 0x1401;
+gl.UNSIGNED_INT = 0x1405;
+gl.UNSIGNED_INT64_AMD = 0x8bc2;
+gl.UNSIGNED_INT_10_10_10_2_OES = 0x8df6;
+gl.UNSIGNED_INT_24_8_OES = 0x84fa;
+gl.UNSIGNED_INT_2_10_10_10_REV_EXT = 0x8368;
+gl.UNSIGNED_NORMALIZED_EXT = 0x8c17;
+gl.UNSIGNED_SHORT = 0x1403;
+gl.UNSIGNED_SHORT_1_5_5_5_REV_EXT = 0x8366;
+gl.UNSIGNED_SHORT_4_4_4_4 = 0x8033;
+gl.UNSIGNED_SHORT_4_4_4_4_REV_EXT = 0x8365;
+gl.UNSIGNED_SHORT_4_4_4_4_REV_IMG = 0x8365;
+gl.UNSIGNED_SHORT_5_5_5_1 = 0x8034;
+gl.UNSIGNED_SHORT_5_6_5 = 0x8363;
+gl.UNSIGNED_SHORT_8_8_APPLE = 0x85ba;
+gl.UNSIGNED_SHORT_8_8_REV_APPLE = 0x85bb;
+gl.VALIDATE_STATUS = 0x8b83;
+gl.VENDOR = 0x1f00;
+gl.VERSION = 0x1f02;
+gl.VERTEX_ARRAY_BINDING_OES = 0x85b5;
+gl.VERTEX_ARRAY_OBJECT_EXT = 0x9154;
+gl.VERTEX_ATTRIB_ARRAY_BUFFER_BINDING = 0x889f;
+gl.VERTEX_ATTRIB_ARRAY_DIVISOR_ANGLE = 0x88fe;
+gl.VERTEX_ATTRIB_ARRAY_DIVISOR_NV = 0x88fe;
+gl.VERTEX_ATTRIB_ARRAY_ENABLED = 0x8622;
+gl.VERTEX_ATTRIB_ARRAY_NORMALIZED = 0x886a;
+gl.VERTEX_ATTRIB_ARRAY_POINTER = 0x8645;
+gl.VERTEX_ATTRIB_ARRAY_SIZE = 0x8623;
+gl.VERTEX_ATTRIB_ARRAY_STRIDE = 0x8624;
+gl.VERTEX_ATTRIB_ARRAY_TYPE = 0x8625;
+gl.VERTEX_SHADER = 0x8b31;
+gl.VERTEX_SHADER_BIT_EXT = 0x1;
+gl.VIEWPORT = 0xba2;
+gl.VIV_shader_binary = 0x1;
+gl.WAIT_FAILED_APPLE = 0x911d;
+gl.WRITEONLY_RENDERING_QCOM = 0x8823;
+gl.WRITE_ONLY_OES = 0x88b9;
+gl.Z400_BINARY_AMD = 0x8740;
+gl.ZERO = 0x0;
+
+gl.RASTERIZER_DISCARD = 0x8C89;
+gl.UNPACK_FLIP_Y_WEBGL = 0x9240;
+gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL = 0x9241;
+gl.CONTEXT_LOST_WEBGL = 0x9242;
+gl.UNPACK_COLORSPACE_CONVERSION_WEBGL = 0x9243;
+gl.BROWSER_DEFAULT_WEBGL = 0x9244;
+
+},{}],36:[function(require,module,exports){
+"use strict";
+
+jsb.__obj_ref_id = 0;
+
+jsb.registerNativeRef = function (owner, target) {
+ if (owner && target && owner !== target) {
+ var targetID = target.__jsb_ref_id;
+ if (targetID === undefined) targetID = target.__jsb_ref_id = jsb.__obj_ref_id++;
+
+ var refs = owner.__nativeRefs;
+ if (!refs) {
+ refs = owner.__nativeRefs = {};
+ }
+
+ refs[targetID] = target;
+ }
+};
+
+jsb.unregisterNativeRef = function (owner, target) {
+ if (owner && target && owner !== target) {
+ var targetID = target.__jsb_ref_id;
+ if (targetID === undefined) return;
+
+ var refs = owner.__nativeRefs;
+ if (!refs) {
+ return;
+ }
+
+ delete refs[targetID];
+ }
+};
+
+jsb.unregisterAllNativeRefs = function (owner) {
+ if (!owner) return;
+ delete owner.__nativeRefs;
+};
+
+jsb.unregisterChildRefsForNode = function (node, recursive) {
+ recursive = !!recursive;
+ var children = node.getChildren(),
+ i = void 0,
+ l = void 0,
+ child = void 0;
+ for (i = 0, l = children.length; i < l; ++i) {
+ child = children[i];
+ jsb.unregisterNativeRef(node, child);
+ if (recursive) {
+ jsb.unregisterChildRefsForNode(child, recursive);
+ }
+ }
+};
+
+},{}],37:[function(require,module,exports){
+(function (global){
+"use strict";
+
+var _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; };
+
+/* promise.min.js
+ * A Promise polyfill implementation.
+ * 2018-11-16
+ *
+ * By taylorhakes, https://github.com/taylorhakes
+ * License: MIT
+ * See https://github.com/taylorhakes/promise-polyfill/blob/master/LICENSE
+ */
+
+/*! @source https://cdn.jsdelivr.net/npm/promise-polyfill@8/dist/polyfill.js */
+!function (e, n) {
+ "object" == (typeof exports === "undefined" ? "undefined" : _typeof(exports)) && "undefined" != typeof module ? n() : "function" == typeof define && define.amd ? define(n) : n();
+}(0, function () {
+ "use strict";
+ function e(e) {
+ var n = this.constructor;return this.then(function (t) {
+ return n.resolve(e()).then(function () {
+ return t;
+ });
+ }, function (t) {
+ return n.resolve(e()).then(function () {
+ return n.reject(t);
+ });
+ });
+ }function n() {}function t(e) {
+ if (!(this instanceof t)) throw new TypeError("Promises must be constructed via new");if ("function" != typeof e) throw new TypeError("not a function");this._state = 0, this._handled = !1, this._value = undefined, this._deferreds = [], u(e, this);
+ }function o(e, n) {
+ for (; 3 === e._state;) {
+ e = e._value;
+ }0 !== e._state ? (e._handled = !0, t._immediateFn(function () {
+ var t = 1 === e._state ? n.onFulfilled : n.onRejected;if (null !== t) {
+ var o;try {
+ o = t(e._value);
+ } catch (f) {
+ return void i(n.promise, f);
+ }r(n.promise, o);
+ } else (1 === e._state ? r : i)(n.promise, e._value);
+ })) : e._deferreds.push(n);
+ }function r(e, n) {
+ try {
+ if (n === e) throw new TypeError("A promise cannot be resolved with itself.");if (n && ("object" == (typeof n === "undefined" ? "undefined" : _typeof(n)) || "function" == typeof n)) {
+ var o = n.then;if (n instanceof t) return e._state = 3, e._value = n, void f(e);if ("function" == typeof o) return void u(function (e, n) {
+ return function () {
+ e.apply(n, arguments);
+ };
+ }(o, n), e);
+ }e._state = 1, e._value = n, f(e);
+ } catch (r) {
+ i(e, r);
+ }
+ }function i(e, n) {
+ e._state = 2, e._value = n, f(e);
+ }function f(e) {
+ 2 === e._state && 0 === e._deferreds.length && t._immediateFn(function () {
+ e._handled || t._unhandledRejectionFn(e._value);
+ });for (var n = 0, r = e._deferreds.length; r > n; n++) {
+ o(e, e._deferreds[n]);
+ }e._deferreds = null;
+ }function u(e, n) {
+ var t = !1;try {
+ e(function (e) {
+ t || (t = !0, r(n, e));
+ }, function (e) {
+ t || (t = !0, i(n, e));
+ });
+ } catch (o) {
+ if (t) return;t = !0, i(n, o);
+ }
+ }var c = setTimeout;t.prototype["catch"] = function (e) {
+ return this.then(null, e);
+ }, t.prototype.then = function (e, t) {
+ var r = new this.constructor(n);return o(this, new function (e, n, t) {
+ this.onFulfilled = "function" == typeof e ? e : null, this.onRejected = "function" == typeof n ? n : null, this.promise = t;
+ }(e, t, r)), r;
+ }, t.prototype["finally"] = e, t.all = function (e) {
+ return new t(function (n, t) {
+ function o(e, f) {
+ try {
+ if (f && ("object" == (typeof f === "undefined" ? "undefined" : _typeof(f)) || "function" == typeof f)) {
+ var u = f.then;if ("function" == typeof u) return void u.call(f, function (n) {
+ o(e, n);
+ }, t);
+ }r[e] = f, 0 == --i && n(r);
+ } catch (c) {
+ t(c);
+ }
+ }if (!e || "undefined" == typeof e.length) throw new TypeError("Promise.all accepts an array");var r = Array.prototype.slice.call(e);if (0 === r.length) return n([]);for (var i = r.length, f = 0; r.length > f; f++) {
+ o(f, r[f]);
+ }
+ });
+ }, t.resolve = function (e) {
+ return e && "object" == (typeof e === "undefined" ? "undefined" : _typeof(e)) && e.constructor === t ? e : new t(function (n) {
+ n(e);
+ });
+ }, t.reject = function (e) {
+ return new t(function (n, t) {
+ t(e);
+ });
+ }, t.race = function (e) {
+ return new t(function (n, t) {
+ for (var o = 0, r = e.length; r > o; o++) {
+ e[o].then(n, t);
+ }
+ });
+ }, t._immediateFn = "function" == typeof setImmediate && function (e) {
+ setImmediate(e);
+ } || function (e) {
+ c(e, 0);
+ }, t._unhandledRejectionFn = function (e) {
+ void 0 !== console && console && console.warn("Possible Unhandled Promise Rejection:", e);
+ };var l = function () {
+ if ("undefined" != typeof self) return self;if ("undefined" != typeof window) return window;if ("undefined" != typeof global) return global;throw Error("unable to locate global object");
+ }();"Promise" in l ? l.Promise.prototype["finally"] || (l.Promise.prototype["finally"] = e) : l.Promise = t;
+});
+
+}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
+},{}],38:[function(require,module,exports){
+'use strict';
+
+function DOMParser(options) {
+ this.options = options || { locator: {} };
+}
+
+DOMParser.prototype.parseFromString = function (source, mimeType) {
+ var options = this.options;
+ var sax = new XMLReader();
+ var domBuilder = options.domBuilder || new DOMHandler(); //contentHandler and LexicalHandler
+ var errorHandler = options.errorHandler;
+ var locator = options.locator;
+ var defaultNSMap = options.xmlns || {};
+ var isHTML = /\/x?html?$/.test(mimeType); //mimeType.toLowerCase().indexOf('html') > -1;
+ var entityMap = isHTML ? htmlEntity.entityMap : { 'lt': '<', 'gt': '>', 'amp': '&', 'quot': '"', 'apos': "'" };
+ if (locator) {
+ domBuilder.setDocumentLocator(locator);
+ }
+
+ sax.errorHandler = buildErrorHandler(errorHandler, domBuilder, locator);
+ sax.domBuilder = options.domBuilder || domBuilder;
+ if (isHTML) {
+ defaultNSMap[''] = 'http://www.w3.org/1999/xhtml';
+ }
+ defaultNSMap.xml = defaultNSMap.xml || 'http://www.w3.org/XML/1998/namespace';
+ if (source) {
+ sax.parse(source, defaultNSMap, entityMap);
+ } else {
+ sax.errorHandler.error("invalid doc source");
+ }
+ return domBuilder.doc;
+};
+function buildErrorHandler(errorImpl, domBuilder, locator) {
+ if (!errorImpl) {
+ if (domBuilder instanceof DOMHandler) {
+ return domBuilder;
+ }
+ errorImpl = domBuilder;
+ }
+ var errorHandler = {};
+ var isCallback = errorImpl instanceof Function;
+ locator = locator || {};
+ function build(key) {
+ var fn = errorImpl[key];
+ if (!fn && isCallback) {
+ fn = errorImpl.length == 2 ? function (msg) {
+ errorImpl(key, msg);
+ } : errorImpl;
+ }
+ errorHandler[key] = fn && function (msg) {
+ fn('[xmldom ' + key + ']\t' + msg + _locator(locator));
+ } || function () {};
+ }
+ build('warning');
+ build('error');
+ build('fatalError');
+ return errorHandler;
+}
+
+//console.log('#\n\n\n\n\n\n\n####')
+/**
+ * +ContentHandler+ErrorHandler
+ * +LexicalHandler+EntityResolver2
+ * -DeclHandler-DTDHandler
+ *
+ * DefaultHandler:EntityResolver, DTDHandler, ContentHandler, ErrorHandler
+ * DefaultHandler2:DefaultHandler,LexicalHandler, DeclHandler, EntityResolver2
+ * @link http://www.saxproject.org/apidoc/org/xml/sax/helpers/DefaultHandler.html
+ */
+function DOMHandler() {
+ this.cdata = false;
+}
+function position(locator, node) {
+ node.lineNumber = locator.lineNumber;
+ node.columnNumber = locator.columnNumber;
+}
+/**
+ * @see org.xml.sax.ContentHandler#startDocument
+ * @link http://www.saxproject.org/apidoc/org/xml/sax/ContentHandler.html
+ */
+DOMHandler.prototype = {
+ startDocument: function startDocument() {
+ this.doc = new DOMImplementation().createDocument(null, null, null);
+ if (this.locator) {
+ this.doc.documentURI = this.locator.systemId;
+ }
+ },
+ startElement: function startElement(namespaceURI, localName, qName, attrs) {
+ var doc = this.doc;
+ var el = doc.createElementNS(namespaceURI, qName || localName);
+ var len = attrs.length;
+ appendElement(this, el);
+ this.currentElement = el;
+
+ this.locator && position(this.locator, el);
+ for (var i = 0; i < len; i++) {
+ var namespaceURI = attrs.getURI(i);
+ var value = attrs.getValue(i);
+ var qName = attrs.getQName(i);
+ var attr = doc.createAttributeNS(namespaceURI, qName);
+ this.locator && position(attrs.getLocator(i), attr);
+ attr.value = attr.nodeValue = value;
+ el.setAttributeNode(attr);
+ }
+ },
+ endElement: function endElement(namespaceURI, localName, qName) {
+ var current = this.currentElement;
+ var tagName = current.tagName;
+ this.currentElement = current.parentNode;
+ },
+ startPrefixMapping: function startPrefixMapping(prefix, uri) {},
+ endPrefixMapping: function endPrefixMapping(prefix) {},
+ processingInstruction: function processingInstruction(target, data) {
+ var ins = this.doc.createProcessingInstruction(target, data);
+ this.locator && position(this.locator, ins);
+ appendElement(this, ins);
+ },
+ ignorableWhitespace: function ignorableWhitespace(ch, start, length) {},
+ characters: function characters(chars, start, length) {
+ chars = _toString.apply(this, arguments);
+ //console.log(chars)
+ if (chars) {
+ if (this.cdata) {
+ var charNode = this.doc.createCDATASection(chars);
+ } else {
+ var charNode = this.doc.createTextNode(chars);
+ }
+ if (this.currentElement) {
+ this.currentElement.appendChild(charNode);
+ } else if (/^\s*$/.test(chars)) {
+ this.doc.appendChild(charNode);
+ //process xml
+ }
+ this.locator && position(this.locator, charNode);
+ }
+ },
+ skippedEntity: function skippedEntity(name) {},
+ endDocument: function endDocument() {
+ this.doc.normalize();
+ },
+ setDocumentLocator: function setDocumentLocator(locator) {
+ if (this.locator = locator) {
+ // && !('lineNumber' in locator)){
+ locator.lineNumber = 0;
+ }
+ },
+ //LexicalHandler
+ comment: function comment(chars, start, length) {
+ chars = _toString.apply(this, arguments);
+ var comm = this.doc.createComment(chars);
+ this.locator && position(this.locator, comm);
+ appendElement(this, comm);
+ },
+
+ startCDATA: function startCDATA() {
+ //used in characters() methods
+ this.cdata = true;
+ },
+ endCDATA: function endCDATA() {
+ this.cdata = false;
+ },
+
+ startDTD: function startDTD(name, publicId, systemId) {
+ var impl = this.doc.implementation;
+ if (impl && impl.createDocumentType) {
+ var dt = impl.createDocumentType(name, publicId, systemId);
+ this.locator && position(this.locator, dt);
+ appendElement(this, dt);
+ }
+ },
+ /**
+ * @see org.xml.sax.ErrorHandler
+ * @link http://www.saxproject.org/apidoc/org/xml/sax/ErrorHandler.html
+ */
+ warning: function warning(error) {
+ console.warn('[xmldom warning]\t' + error, _locator(this.locator));
+ },
+ error: function error(_error) {
+ console.error('[xmldom error]\t' + _error, _locator(this.locator));
+ },
+ fatalError: function fatalError(error) {
+ console.error('[xmldom fatalError]\t' + error, _locator(this.locator));
+ throw error;
+ }
+};
+function _locator(l) {
+ if (l) {
+ return '\n@' + (l.systemId || '') + '#[line:' + l.lineNumber + ',col:' + l.columnNumber + ']';
+ }
+}
+function _toString(chars, start, length) {
+ if (typeof chars == 'string') {
+ return chars.substr(start, length);
+ } else {
+ //java sax connect width xmldom on rhino(what about: "? && !(chars instanceof String)")
+ if (chars.length >= start + length || start) {
+ return new java.lang.String(chars, start, length) + '';
+ }
+ return chars;
+ }
+}
+
+/*
+ * @link http://www.saxproject.org/apidoc/org/xml/sax/ext/LexicalHandler.html
+ * used method of org.xml.sax.ext.LexicalHandler:
+ * #comment(chars, start, length)
+ * #startCDATA()
+ * #endCDATA()
+ * #startDTD(name, publicId, systemId)
+ *
+ *
+ * IGNORED method of org.xml.sax.ext.LexicalHandler:
+ * #endDTD()
+ * #startEntity(name)
+ * #endEntity(name)
+ *
+ *
+ * @link http://www.saxproject.org/apidoc/org/xml/sax/ext/DeclHandler.html
+ * IGNORED method of org.xml.sax.ext.DeclHandler
+ * #attributeDecl(eName, aName, type, mode, value)
+ * #elementDecl(name, model)
+ * #externalEntityDecl(name, publicId, systemId)
+ * #internalEntityDecl(name, value)
+ * @link http://www.saxproject.org/apidoc/org/xml/sax/ext/EntityResolver2.html
+ * IGNORED method of org.xml.sax.EntityResolver2
+ * #resolveEntity(String name,String publicId,String baseURI,String systemId)
+ * #resolveEntity(publicId, systemId)
+ * #getExternalSubset(name, baseURI)
+ * @link http://www.saxproject.org/apidoc/org/xml/sax/DTDHandler.html
+ * IGNORED method of org.xml.sax.DTDHandler
+ * #notationDecl(name, publicId, systemId) {};
+ * #unparsedEntityDecl(name, publicId, systemId, notationName) {};
+ */
+"endDTD,startEntity,endEntity,attributeDecl,elementDecl,externalEntityDecl,internalEntityDecl,resolveEntity,getExternalSubset,notationDecl,unparsedEntityDecl".replace(/\w+/g, function (key) {
+ DOMHandler.prototype[key] = function () {
+ return null;
+ };
+});
+
+/* Private static helpers treated below as private instance methods, so don't need to add these to the public API; we might use a Relator to also get rid of non-standard public properties */
+function appendElement(hander, node) {
+ if (!hander.currentElement) {
+ hander.doc.appendChild(node);
+ } else {
+ hander.currentElement.appendChild(node);
+ }
+} //appendChild and setAttributeNS are preformance key
+
+//if(typeof require == 'function'){
+var htmlEntity = require('./entities');
+var XMLReader = require('./sax').XMLReader;
+var DOMImplementation = exports.DOMImplementation = require('./dom').DOMImplementation;
+exports.XMLSerializer = require('./dom').XMLSerializer;
+exports.DOMParser = DOMParser;
+//}
+
+},{"./dom":39,"./entities":40,"./sax":41}],39:[function(require,module,exports){
+'use strict';
+
+var _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; };
+
+/*
+ * DOM Level 2
+ * Object DOMException
+ * @see http://www.w3.org/TR/REC-DOM-Level-1/ecma-script-language-binding.html
+ * @see http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html
+ */
+
+function copy(src, dest) {
+ for (var p in src) {
+ dest[p] = src[p];
+ }
+}
+/**
+^\w+\.prototype\.([_\w]+)\s*=\s*((?:.*\{\s*?[\r\n][\s\S]*?^})|\S.*?(?=[;\r\n]));?
+^\w+\.prototype\.([_\w]+)\s*=\s*(\S.*?(?=[;\r\n]));?
+ */
+function _extends(Class, Super) {
+ var pt = Class.prototype;
+ if (!(pt instanceof Super)) {
+ var t = function t() {};
+
+ ;
+ t.prototype = Super.prototype;
+ t = new t();
+ copy(pt, t);
+ Class.prototype = pt = t;
+ }
+ if (pt.constructor != Class) {
+ if (typeof Class != 'function') {
+ console.error("unknow Class:" + Class);
+ }
+ pt.constructor = Class;
+ }
+}
+var htmlns = 'http://www.w3.org/1999/xhtml';
+// Node Types
+var NodeType = {};
+var ELEMENT_NODE = NodeType.ELEMENT_NODE = 1;
+var ATTRIBUTE_NODE = NodeType.ATTRIBUTE_NODE = 2;
+var TEXT_NODE = NodeType.TEXT_NODE = 3;
+var CDATA_SECTION_NODE = NodeType.CDATA_SECTION_NODE = 4;
+var ENTITY_REFERENCE_NODE = NodeType.ENTITY_REFERENCE_NODE = 5;
+var ENTITY_NODE = NodeType.ENTITY_NODE = 6;
+var PROCESSING_INSTRUCTION_NODE = NodeType.PROCESSING_INSTRUCTION_NODE = 7;
+var COMMENT_NODE = NodeType.COMMENT_NODE = 8;
+var DOCUMENT_NODE = NodeType.DOCUMENT_NODE = 9;
+var DOCUMENT_TYPE_NODE = NodeType.DOCUMENT_TYPE_NODE = 10;
+var DOCUMENT_FRAGMENT_NODE = NodeType.DOCUMENT_FRAGMENT_NODE = 11;
+var NOTATION_NODE = NodeType.NOTATION_NODE = 12;
+
+// ExceptionCode
+var ExceptionCode = {};
+var ExceptionMessage = {};
+var INDEX_SIZE_ERR = ExceptionCode.INDEX_SIZE_ERR = (ExceptionMessage[1] = "Index size error", 1);
+var DOMSTRING_SIZE_ERR = ExceptionCode.DOMSTRING_SIZE_ERR = (ExceptionMessage[2] = "DOMString size error", 2);
+var HIERARCHY_REQUEST_ERR = ExceptionCode.HIERARCHY_REQUEST_ERR = (ExceptionMessage[3] = "Hierarchy request error", 3);
+var WRONG_DOCUMENT_ERR = ExceptionCode.WRONG_DOCUMENT_ERR = (ExceptionMessage[4] = "Wrong document", 4);
+var INVALID_CHARACTER_ERR = ExceptionCode.INVALID_CHARACTER_ERR = (ExceptionMessage[5] = "Invalid character", 5);
+var NO_DATA_ALLOWED_ERR = ExceptionCode.NO_DATA_ALLOWED_ERR = (ExceptionMessage[6] = "No data allowed", 6);
+var NO_MODIFICATION_ALLOWED_ERR = ExceptionCode.NO_MODIFICATION_ALLOWED_ERR = (ExceptionMessage[7] = "No modification allowed", 7);
+var NOT_FOUND_ERR = ExceptionCode.NOT_FOUND_ERR = (ExceptionMessage[8] = "Not found", 8);
+var NOT_SUPPORTED_ERR = ExceptionCode.NOT_SUPPORTED_ERR = (ExceptionMessage[9] = "Not supported", 9);
+var INUSE_ATTRIBUTE_ERR = ExceptionCode.INUSE_ATTRIBUTE_ERR = (ExceptionMessage[10] = "Attribute in use", 10);
+//level2
+var INVALID_STATE_ERR = ExceptionCode.INVALID_STATE_ERR = (ExceptionMessage[11] = "Invalid state", 11);
+var SYNTAX_ERR = ExceptionCode.SYNTAX_ERR = (ExceptionMessage[12] = "Syntax error", 12);
+var INVALID_MODIFICATION_ERR = ExceptionCode.INVALID_MODIFICATION_ERR = (ExceptionMessage[13] = "Invalid modification", 13);
+var NAMESPACE_ERR = ExceptionCode.NAMESPACE_ERR = (ExceptionMessage[14] = "Invalid namespace", 14);
+var INVALID_ACCESS_ERR = ExceptionCode.INVALID_ACCESS_ERR = (ExceptionMessage[15] = "Invalid access", 15);
+
+function DOMException(code, message) {
+ if (message instanceof Error) {
+ var error = message;
+ } else {
+ error = this;
+ Error.call(this, ExceptionMessage[code]);
+ this.message = ExceptionMessage[code];
+ if (Error.captureStackTrace) Error.captureStackTrace(this, DOMException);
+ }
+ error.code = code;
+ if (message) this.message = this.message + ": " + message;
+ return error;
+};
+DOMException.prototype = Error.prototype;
+copy(ExceptionCode, DOMException);
+/**
+ * @see http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/core.html#ID-536297177
+ * The NodeList interface provides the abstraction of an ordered collection of nodes, without defining or constraining how this collection is implemented. NodeList objects in the DOM are live.
+ * The items in the NodeList are accessible via an integral index, starting from 0.
+ */
+function NodeList() {};
+NodeList.prototype = {
+ /**
+ * The number of nodes in the list. The range of valid child node indices is 0 to length-1 inclusive.
+ * @standard level1
+ */
+ length: 0,
+ /**
+ * Returns the indexth item in the collection. If index is greater than or equal to the number of nodes in the list, this returns null.
+ * @standard level1
+ * @param index unsigned long
+ * Index into the collection.
+ * @return Node
+ * The node at the indexth position in the NodeList, or null if that is not a valid index.
+ */
+ item: function item(index) {
+ return this[index] || null;
+ },
+ toString: function toString(isHTML, nodeFilter) {
+ for (var buf = [], i = 0; i < this.length; i++) {
+ serializeToString(this[i], buf, isHTML, nodeFilter);
+ }
+ return buf.join('');
+ }
+};
+function LiveNodeList(node, refresh) {
+ this._node = node;
+ this._refresh = refresh;
+ _updateLiveList(this);
+}
+function _updateLiveList(list) {
+ var inc = list._node._inc || list._node.ownerDocument._inc;
+ if (list._inc != inc) {
+ var ls = list._refresh(list._node);
+ //console.log(ls.length)
+ __set__(list, 'length', ls.length);
+ copy(ls, list);
+ list._inc = inc;
+ }
+}
+LiveNodeList.prototype.item = function (i) {
+ _updateLiveList(this);
+ return this[i];
+};
+
+_extends(LiveNodeList, NodeList);
+/**
+ *
+ * Objects implementing the NamedNodeMap interface are used to represent collections of nodes that can be accessed by name. Note that NamedNodeMap does not inherit from NodeList; NamedNodeMaps are not maintained in any particular order. Objects contained in an object implementing NamedNodeMap may also be accessed by an ordinal index, but this is simply to allow convenient enumeration of the contents of a NamedNodeMap, and does not imply that the DOM specifies an order to these Nodes.
+ * NamedNodeMap objects in the DOM are live.
+ * used for attributes or DocumentType entities
+ */
+function NamedNodeMap() {};
+
+function _findNodeIndex(list, node) {
+ var i = list.length;
+ while (i--) {
+ if (list[i] === node) {
+ return i;
+ }
+ }
+}
+
+function _addNamedNode(el, list, newAttr, oldAttr) {
+ if (oldAttr) {
+ list[_findNodeIndex(list, oldAttr)] = newAttr;
+ } else {
+ list[list.length++] = newAttr;
+ }
+ if (el) {
+ newAttr.ownerElement = el;
+ var doc = el.ownerDocument;
+ if (doc) {
+ oldAttr && _onRemoveAttribute(doc, el, oldAttr);
+ _onAddAttribute(doc, el, newAttr);
+ }
+ }
+}
+function _removeNamedNode(el, list, attr) {
+ //console.log('remove attr:'+attr)
+ var i = _findNodeIndex(list, attr);
+ if (i >= 0) {
+ var lastIndex = list.length - 1;
+ while (i < lastIndex) {
+ list[i] = list[++i];
+ }
+ list.length = lastIndex;
+ if (el) {
+ var doc = el.ownerDocument;
+ if (doc) {
+ _onRemoveAttribute(doc, el, attr);
+ attr.ownerElement = null;
+ }
+ }
+ } else {
+ throw DOMException(NOT_FOUND_ERR, new Error(el.tagName + '@' + attr));
+ }
+}
+NamedNodeMap.prototype = {
+ length: 0,
+ item: NodeList.prototype.item,
+ getNamedItem: function getNamedItem(key) {
+ // if(key.indexOf(':')>0 || key == 'xmlns'){
+ // return null;
+ // }
+ //console.log()
+ var i = this.length;
+ while (i--) {
+ var attr = this[i];
+ //console.log(attr.nodeName,key)
+ if (attr.nodeName == key) {
+ return attr;
+ }
+ }
+ },
+ setNamedItem: function setNamedItem(attr) {
+ var el = attr.ownerElement;
+ if (el && el != this._ownerElement) {
+ throw new DOMException(INUSE_ATTRIBUTE_ERR);
+ }
+ var oldAttr = this.getNamedItem(attr.nodeName);
+ _addNamedNode(this._ownerElement, this, attr, oldAttr);
+ return oldAttr;
+ },
+ /* returns Node */
+ setNamedItemNS: function setNamedItemNS(attr) {
+ // raises: WRONG_DOCUMENT_ERR,NO_MODIFICATION_ALLOWED_ERR,INUSE_ATTRIBUTE_ERR
+ var el = attr.ownerElement,
+ oldAttr;
+ if (el && el != this._ownerElement) {
+ throw new DOMException(INUSE_ATTRIBUTE_ERR);
+ }
+ oldAttr = this.getNamedItemNS(attr.namespaceURI, attr.localName);
+ _addNamedNode(this._ownerElement, this, attr, oldAttr);
+ return oldAttr;
+ },
+
+ /* returns Node */
+ removeNamedItem: function removeNamedItem(key) {
+ var attr = this.getNamedItem(key);
+ _removeNamedNode(this._ownerElement, this, attr);
+ return attr;
+ }, // raises: NOT_FOUND_ERR,NO_MODIFICATION_ALLOWED_ERR
+
+ //for level2
+ removeNamedItemNS: function removeNamedItemNS(namespaceURI, localName) {
+ var attr = this.getNamedItemNS(namespaceURI, localName);
+ _removeNamedNode(this._ownerElement, this, attr);
+ return attr;
+ },
+ getNamedItemNS: function getNamedItemNS(namespaceURI, localName) {
+ var i = this.length;
+ while (i--) {
+ var node = this[i];
+ if (node.localName == localName && node.namespaceURI == namespaceURI) {
+ return node;
+ }
+ }
+ return null;
+ }
+};
+/**
+ * @see http://www.w3.org/TR/REC-DOM-Level-1/level-one-core.html#ID-102161490
+ */
+function DOMImplementation( /* Object */features) {
+ this._features = {};
+ if (features) {
+ for (var feature in features) {
+ this._features = features[feature];
+ }
+ }
+};
+
+DOMImplementation.prototype = {
+ hasFeature: function hasFeature( /* string */feature, /* string */version) {
+ var versions = this._features[feature.toLowerCase()];
+ if (versions && (!version || version in versions)) {
+ return true;
+ } else {
+ return false;
+ }
+ },
+ // Introduced in DOM Level 2:
+ createDocument: function createDocument(namespaceURI, qualifiedName, doctype) {
+ // raises:INVALID_CHARACTER_ERR,NAMESPACE_ERR,WRONG_DOCUMENT_ERR
+ var doc = new Document();
+ doc.implementation = this;
+ doc.childNodes = new NodeList();
+ doc.doctype = doctype;
+ if (doctype) {
+ doc.appendChild(doctype);
+ }
+ if (qualifiedName) {
+ var root = doc.createElementNS(namespaceURI, qualifiedName);
+ doc.appendChild(root);
+ }
+ return doc;
+ },
+ // Introduced in DOM Level 2:
+ createDocumentType: function createDocumentType(qualifiedName, publicId, systemId) {
+ // raises:INVALID_CHARACTER_ERR,NAMESPACE_ERR
+ var node = new DocumentType();
+ node.name = qualifiedName;
+ node.nodeName = qualifiedName;
+ node.publicId = publicId;
+ node.systemId = systemId;
+ // Introduced in DOM Level 2:
+ //readonly attribute DOMString internalSubset;
+
+ //REFINE:..
+ // readonly attribute NamedNodeMap entities;
+ // readonly attribute NamedNodeMap notations;
+ return node;
+ }
+};
+
+/**
+ * @see http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/core.html#ID-1950641247
+ */
+
+function Node() {};
+
+Node.prototype = {
+ firstChild: null,
+ lastChild: null,
+ previousSibling: null,
+ nextSibling: null,
+ attributes: null,
+ parentNode: null,
+ childNodes: null,
+ ownerDocument: null,
+ nodeValue: null,
+ namespaceURI: null,
+ prefix: null,
+ localName: null,
+ // Modified in DOM Level 2:
+ insertBefore: function insertBefore(newChild, refChild) {
+ //raises
+ return _insertBefore(this, newChild, refChild);
+ },
+ replaceChild: function replaceChild(newChild, oldChild) {
+ //raises
+ this.insertBefore(newChild, oldChild);
+ if (oldChild) {
+ this.removeChild(oldChild);
+ }
+ },
+ removeChild: function removeChild(oldChild) {
+ return _removeChild(this, oldChild);
+ },
+ appendChild: function appendChild(newChild) {
+ return this.insertBefore(newChild, null);
+ },
+ hasChildNodes: function hasChildNodes() {
+ return this.firstChild != null;
+ },
+ cloneNode: function cloneNode(deep) {
+ return _cloneNode(this.ownerDocument || this, this, deep);
+ },
+ // Modified in DOM Level 2:
+ normalize: function normalize() {
+ var child = this.firstChild;
+ while (child) {
+ var next = child.nextSibling;
+ if (next && next.nodeType == TEXT_NODE && child.nodeType == TEXT_NODE) {
+ this.removeChild(next);
+ child.appendData(next.data);
+ } else {
+ child.normalize();
+ child = next;
+ }
+ }
+ },
+ // Introduced in DOM Level 2:
+ isSupported: function isSupported(feature, version) {
+ return this.ownerDocument.implementation.hasFeature(feature, version);
+ },
+ // Introduced in DOM Level 2:
+ hasAttributes: function hasAttributes() {
+ return this.attributes.length > 0;
+ },
+ lookupPrefix: function lookupPrefix(namespaceURI) {
+ var el = this;
+ while (el) {
+ var map = el._nsMap;
+ //console.dir(map)
+ if (map) {
+ for (var n in map) {
+ if (map[n] == namespaceURI) {
+ return n;
+ }
+ }
+ }
+ el = el.nodeType == ATTRIBUTE_NODE ? el.ownerDocument : el.parentNode;
+ }
+ return null;
+ },
+ // Introduced in DOM Level 3:
+ lookupNamespaceURI: function lookupNamespaceURI(prefix) {
+ var el = this;
+ while (el) {
+ var map = el._nsMap;
+ //console.dir(map)
+ if (map) {
+ if (prefix in map) {
+ return map[prefix];
+ }
+ }
+ el = el.nodeType == ATTRIBUTE_NODE ? el.ownerDocument : el.parentNode;
+ }
+ return null;
+ },
+ // Introduced in DOM Level 3:
+ isDefaultNamespace: function isDefaultNamespace(namespaceURI) {
+ var prefix = this.lookupPrefix(namespaceURI);
+ return prefix == null;
+ }
+};
+
+function _xmlEncoder(c) {
+ return c == '<' && '<' || c == '>' && '>' || c == '&' && '&' || c == '"' && '"' || '' + c.charCodeAt() + ';';
+}
+
+copy(NodeType, Node);
+copy(NodeType, Node.prototype);
+
+/**
+ * @param callback return true for continue,false for break
+ * @return boolean true: break visit;
+ */
+function _visitNode(node, callback) {
+ if (callback(node)) {
+ return true;
+ }
+ if (node = node.firstChild) {
+ do {
+ if (_visitNode(node, callback)) {
+ return true;
+ }
+ } while (node = node.nextSibling);
+ }
+}
+
+function Document() {}
+function _onAddAttribute(doc, el, newAttr) {
+ doc && doc._inc++;
+ var ns = newAttr.namespaceURI;
+ if (ns == 'http://www.w3.org/2000/xmlns/') {
+ //update namespace
+ el._nsMap[newAttr.prefix ? newAttr.localName : ''] = newAttr.value;
+ }
+}
+function _onRemoveAttribute(doc, el, newAttr, remove) {
+ doc && doc._inc++;
+ var ns = newAttr.namespaceURI;
+ if (ns == 'http://www.w3.org/2000/xmlns/') {
+ //update namespace
+ delete el._nsMap[newAttr.prefix ? newAttr.localName : ''];
+ }
+}
+function _onUpdateChild(doc, el, newChild) {
+ if (doc && doc._inc) {
+ doc._inc++;
+ //update childNodes
+ var cs = el.childNodes;
+ if (newChild) {
+ cs[cs.length++] = newChild;
+ } else {
+ //console.log(1)
+ var child = el.firstChild;
+ var i = 0;
+ while (child) {
+ cs[i++] = child;
+ child = child.nextSibling;
+ }
+ cs.length = i;
+ }
+ }
+}
+
+/**
+ * attributes;
+ * children;
+ *
+ * writeable properties:
+ * nodeValue,Attr:value,CharacterData:data
+ * prefix
+ */
+function _removeChild(parentNode, child) {
+ var previous = child.previousSibling;
+ var next = child.nextSibling;
+ if (previous) {
+ previous.nextSibling = next;
+ } else {
+ parentNode.firstChild = next;
+ }
+ if (next) {
+ next.previousSibling = previous;
+ } else {
+ parentNode.lastChild = previous;
+ }
+ _onUpdateChild(parentNode.ownerDocument, parentNode);
+ return child;
+}
+/**
+ * preformance key(refChild == null)
+ */
+function _insertBefore(parentNode, newChild, nextChild) {
+ var cp = newChild.parentNode;
+ if (cp) {
+ cp.removeChild(newChild); //remove and update
+ }
+ if (newChild.nodeType === DOCUMENT_FRAGMENT_NODE) {
+ var newFirst = newChild.firstChild;
+ if (newFirst == null) {
+ return newChild;
+ }
+ var newLast = newChild.lastChild;
+ } else {
+ newFirst = newLast = newChild;
+ }
+ var pre = nextChild ? nextChild.previousSibling : parentNode.lastChild;
+
+ newFirst.previousSibling = pre;
+ newLast.nextSibling = nextChild;
+
+ if (pre) {
+ pre.nextSibling = newFirst;
+ } else {
+ parentNode.firstChild = newFirst;
+ }
+ if (nextChild == null) {
+ parentNode.lastChild = newLast;
+ } else {
+ nextChild.previousSibling = newLast;
+ }
+ do {
+ newFirst.parentNode = parentNode;
+ } while (newFirst !== newLast && (newFirst = newFirst.nextSibling));
+ _onUpdateChild(parentNode.ownerDocument || parentNode, parentNode);
+ //console.log(parentNode.lastChild.nextSibling == null)
+ if (newChild.nodeType == DOCUMENT_FRAGMENT_NODE) {
+ newChild.firstChild = newChild.lastChild = null;
+ }
+ return newChild;
+}
+function _appendSingleChild(parentNode, newChild) {
+ var cp = newChild.parentNode;
+ if (cp) {
+ var pre = parentNode.lastChild;
+ cp.removeChild(newChild); //remove and update
+ var pre = parentNode.lastChild;
+ }
+ var pre = parentNode.lastChild;
+ newChild.parentNode = parentNode;
+ newChild.previousSibling = pre;
+ newChild.nextSibling = null;
+ if (pre) {
+ pre.nextSibling = newChild;
+ } else {
+ parentNode.firstChild = newChild;
+ }
+ parentNode.lastChild = newChild;
+ _onUpdateChild(parentNode.ownerDocument, parentNode, newChild);
+ return newChild;
+ //console.log("__aa",parentNode.lastChild.nextSibling == null)
+}
+Document.prototype = {
+ //implementation : null,
+ nodeName: '#document',
+ nodeType: DOCUMENT_NODE,
+ doctype: null,
+ documentElement: null,
+ _inc: 1,
+
+ insertBefore: function insertBefore(newChild, refChild) {
+ //raises
+ if (newChild.nodeType == DOCUMENT_FRAGMENT_NODE) {
+ var child = newChild.firstChild;
+ while (child) {
+ var next = child.nextSibling;
+ this.insertBefore(child, refChild);
+ child = next;
+ }
+ return newChild;
+ }
+ if (this.documentElement == null && newChild.nodeType == ELEMENT_NODE) {
+ this.documentElement = newChild;
+ }
+
+ return _insertBefore(this, newChild, refChild), newChild.ownerDocument = this, newChild;
+ },
+ removeChild: function removeChild(oldChild) {
+ if (this.documentElement == oldChild) {
+ this.documentElement = null;
+ }
+ return _removeChild(this, oldChild);
+ },
+ // Introduced in DOM Level 2:
+ importNode: function importNode(importedNode, deep) {
+ return _importNode(this, importedNode, deep);
+ },
+ // Introduced in DOM Level 2:
+ getElementById: function getElementById(id) {
+ var rtv = null;
+ _visitNode(this.documentElement, function (node) {
+ if (node.nodeType == ELEMENT_NODE) {
+ if (node.getAttribute('id') == id) {
+ rtv = node;
+ return true;
+ }
+ }
+ });
+ return rtv;
+ },
+
+ //document factory method:
+ createElement: function createElement(tagName) {
+ var node = new Element();
+ node.ownerDocument = this;
+ node.nodeName = tagName;
+ node.tagName = tagName;
+ node.childNodes = new NodeList();
+ var attrs = node.attributes = new NamedNodeMap();
+ attrs._ownerElement = node;
+ return node;
+ },
+ createDocumentFragment: function createDocumentFragment() {
+ var node = new DocumentFragment();
+ node.ownerDocument = this;
+ node.childNodes = new NodeList();
+ return node;
+ },
+ createTextNode: function createTextNode(data) {
+ var node = new Text();
+ node.ownerDocument = this;
+ node.appendData(data);
+ return node;
+ },
+ createComment: function createComment(data) {
+ var node = new Comment();
+ node.ownerDocument = this;
+ node.appendData(data);
+ return node;
+ },
+ createCDATASection: function createCDATASection(data) {
+ var node = new CDATASection();
+ node.ownerDocument = this;
+ node.appendData(data);
+ return node;
+ },
+ createProcessingInstruction: function createProcessingInstruction(target, data) {
+ var node = new ProcessingInstruction();
+ node.ownerDocument = this;
+ node.tagName = node.target = target;
+ node.nodeValue = node.data = data;
+ return node;
+ },
+ createAttribute: function createAttribute(name) {
+ var node = new Attr();
+ node.ownerDocument = this;
+ node.name = name;
+ node.nodeName = name;
+ node.localName = name;
+ node.specified = true;
+ return node;
+ },
+ createEntityReference: function createEntityReference(name) {
+ var node = new EntityReference();
+ node.ownerDocument = this;
+ node.nodeName = name;
+ return node;
+ },
+ // Introduced in DOM Level 2:
+ createElementNS: function createElementNS(namespaceURI, qualifiedName) {
+ var node = new Element();
+ var pl = qualifiedName.split(':');
+ var attrs = node.attributes = new NamedNodeMap();
+ node.childNodes = new NodeList();
+ node.ownerDocument = this;
+ node.nodeName = qualifiedName;
+ node.tagName = qualifiedName;
+ node.namespaceURI = namespaceURI;
+ if (pl.length == 2) {
+ node.prefix = pl[0];
+ node.localName = pl[1];
+ } else {
+ //el.prefix = null;
+ node.localName = qualifiedName;
+ }
+ attrs._ownerElement = node;
+ return node;
+ },
+ // Introduced in DOM Level 2:
+ createAttributeNS: function createAttributeNS(namespaceURI, qualifiedName) {
+ var node = new Attr();
+ var pl = qualifiedName.split(':');
+ node.ownerDocument = this;
+ node.nodeName = qualifiedName;
+ node.name = qualifiedName;
+ node.namespaceURI = namespaceURI;
+ node.specified = true;
+ if (pl.length == 2) {
+ node.prefix = pl[0];
+ node.localName = pl[1];
+ } else {
+ //el.prefix = null;
+ node.localName = qualifiedName;
+ }
+ return node;
+ }
+};
+_extends(Document, Node);
+
+function Element() {
+ this._nsMap = {};
+};
+Element.prototype = {
+ nodeType: ELEMENT_NODE,
+ hasAttribute: function hasAttribute(name) {
+ return this.getAttributeNode(name) != null;
+ },
+ getAttribute: function getAttribute(name) {
+ var attr = this.getAttributeNode(name);
+ return attr && attr.value || '';
+ },
+ getAttributeNode: function getAttributeNode(name) {
+ return this.attributes.getNamedItem(name);
+ },
+ setAttribute: function setAttribute(name, value) {
+ var attr = this.ownerDocument.createAttribute(name);
+ attr.value = attr.nodeValue = "" + value;
+ this.setAttributeNode(attr);
+ },
+ removeAttribute: function removeAttribute(name) {
+ var attr = this.getAttributeNode(name);
+ attr && this.removeAttributeNode(attr);
+ },
+
+ //four real opeartion method
+ appendChild: function appendChild(newChild) {
+ if (newChild.nodeType === DOCUMENT_FRAGMENT_NODE) {
+ return this.insertBefore(newChild, null);
+ } else {
+ return _appendSingleChild(this, newChild);
+ }
+ },
+ setAttributeNode: function setAttributeNode(newAttr) {
+ return this.attributes.setNamedItem(newAttr);
+ },
+ setAttributeNodeNS: function setAttributeNodeNS(newAttr) {
+ return this.attributes.setNamedItemNS(newAttr);
+ },
+ removeAttributeNode: function removeAttributeNode(oldAttr) {
+ //console.log(this == oldAttr.ownerElement)
+ return this.attributes.removeNamedItem(oldAttr.nodeName);
+ },
+ //get real attribute name,and remove it by removeAttributeNode
+ removeAttributeNS: function removeAttributeNS(namespaceURI, localName) {
+ var old = this.getAttributeNodeNS(namespaceURI, localName);
+ old && this.removeAttributeNode(old);
+ },
+
+ hasAttributeNS: function hasAttributeNS(namespaceURI, localName) {
+ return this.getAttributeNodeNS(namespaceURI, localName) != null;
+ },
+ getAttributeNS: function getAttributeNS(namespaceURI, localName) {
+ var attr = this.getAttributeNodeNS(namespaceURI, localName);
+ return attr && attr.value || '';
+ },
+ setAttributeNS: function setAttributeNS(namespaceURI, qualifiedName, value) {
+ var attr = this.ownerDocument.createAttributeNS(namespaceURI, qualifiedName);
+ attr.value = attr.nodeValue = "" + value;
+ this.setAttributeNode(attr);
+ },
+ getAttributeNodeNS: function getAttributeNodeNS(namespaceURI, localName) {
+ return this.attributes.getNamedItemNS(namespaceURI, localName);
+ },
+
+ getElementsByTagName: function getElementsByTagName(tagName) {
+ return new LiveNodeList(this, function (base) {
+ var ls = [];
+ _visitNode(base, function (node) {
+ if (node !== base && node.nodeType == ELEMENT_NODE && (tagName === '*' || node.tagName == tagName)) {
+ ls.push(node);
+ }
+ });
+ return ls;
+ });
+ },
+ getElementsByTagNameNS: function getElementsByTagNameNS(namespaceURI, localName) {
+ return new LiveNodeList(this, function (base) {
+ var ls = [];
+ _visitNode(base, function (node) {
+ if (node !== base && node.nodeType === ELEMENT_NODE && (namespaceURI === '*' || node.namespaceURI === namespaceURI) && (localName === '*' || node.localName == localName)) {
+ ls.push(node);
+ }
+ });
+ return ls;
+ });
+ }
+};
+Document.prototype.getElementsByTagName = Element.prototype.getElementsByTagName;
+Document.prototype.getElementsByTagNameNS = Element.prototype.getElementsByTagNameNS;
+
+_extends(Element, Node);
+function Attr() {};
+Attr.prototype.nodeType = ATTRIBUTE_NODE;
+_extends(Attr, Node);
+
+function CharacterData() {};
+CharacterData.prototype = {
+ data: '',
+ substringData: function substringData(offset, count) {
+ return this.data.substring(offset, offset + count);
+ },
+ appendData: function appendData(text) {
+ text = this.data + text;
+ this.nodeValue = this.data = text;
+ this.length = text.length;
+ },
+ insertData: function insertData(offset, text) {
+ this.replaceData(offset, 0, text);
+ },
+ appendChild: function appendChild(newChild) {
+ throw new Error(ExceptionMessage[HIERARCHY_REQUEST_ERR]);
+ },
+ deleteData: function deleteData(offset, count) {
+ this.replaceData(offset, count, "");
+ },
+ replaceData: function replaceData(offset, count, text) {
+ var start = this.data.substring(0, offset);
+ var end = this.data.substring(offset + count);
+ text = start + text + end;
+ this.nodeValue = this.data = text;
+ this.length = text.length;
+ }
+};
+_extends(CharacterData, Node);
+function Text() {};
+Text.prototype = {
+ nodeName: "#text",
+ nodeType: TEXT_NODE,
+ splitText: function splitText(offset) {
+ var text = this.data;
+ var newText = text.substring(offset);
+ text = text.substring(0, offset);
+ this.data = this.nodeValue = text;
+ this.length = text.length;
+ var newNode = this.ownerDocument.createTextNode(newText);
+ if (this.parentNode) {
+ this.parentNode.insertBefore(newNode, this.nextSibling);
+ }
+ return newNode;
+ }
+};
+_extends(Text, CharacterData);
+function Comment() {};
+Comment.prototype = {
+ nodeName: "#comment",
+ nodeType: COMMENT_NODE
+};
+_extends(Comment, CharacterData);
+
+function CDATASection() {};
+CDATASection.prototype = {
+ nodeName: "#cdata-section",
+ nodeType: CDATA_SECTION_NODE
+};
+_extends(CDATASection, CharacterData);
+
+function DocumentType() {};
+DocumentType.prototype.nodeType = DOCUMENT_TYPE_NODE;
+_extends(DocumentType, Node);
+
+function Notation() {};
+Notation.prototype.nodeType = NOTATION_NODE;
+_extends(Notation, Node);
+
+function Entity() {};
+Entity.prototype.nodeType = ENTITY_NODE;
+_extends(Entity, Node);
+
+function EntityReference() {};
+EntityReference.prototype.nodeType = ENTITY_REFERENCE_NODE;
+_extends(EntityReference, Node);
+
+function DocumentFragment() {};
+DocumentFragment.prototype.nodeName = "#document-fragment";
+DocumentFragment.prototype.nodeType = DOCUMENT_FRAGMENT_NODE;
+_extends(DocumentFragment, Node);
+
+function ProcessingInstruction() {}
+ProcessingInstruction.prototype.nodeType = PROCESSING_INSTRUCTION_NODE;
+_extends(ProcessingInstruction, Node);
+function XMLSerializer() {}
+XMLSerializer.prototype.serializeToString = function (node, isHtml, nodeFilter) {
+ return nodeSerializeToString.call(node, isHtml, nodeFilter);
+};
+Node.prototype.toString = nodeSerializeToString;
+function nodeSerializeToString(isHtml, nodeFilter) {
+ var buf = [];
+ var refNode = this.nodeType == 9 && this.documentElement || this;
+ var prefix = refNode.prefix;
+ var uri = refNode.namespaceURI;
+
+ if (uri && prefix == null) {
+ //console.log(prefix)
+ var prefix = refNode.lookupPrefix(uri);
+ if (prefix == null) {
+ //isHTML = true;
+ var visibleNamespaces = [{ namespace: uri, prefix: null
+ //{namespace:uri,prefix:''}
+ }];
+ }
+ }
+ serializeToString(this, buf, isHtml, nodeFilter, visibleNamespaces);
+ //console.log('###',this.nodeType,uri,prefix,buf.join(''))
+ return buf.join('');
+}
+function needNamespaceDefine(node, isHTML, visibleNamespaces) {
+ var prefix = node.prefix || '';
+ var uri = node.namespaceURI;
+ if (!prefix && !uri) {
+ return false;
+ }
+ if (prefix === "xml" && uri === "http://www.w3.org/XML/1998/namespace" || uri == 'http://www.w3.org/2000/xmlns/') {
+ return false;
+ }
+
+ var i = visibleNamespaces.length;
+ //console.log('@@@@',node.tagName,prefix,uri,visibleNamespaces)
+ while (i--) {
+ var ns = visibleNamespaces[i];
+ // get namespace prefix
+ //console.log(node.nodeType,node.tagName,ns.prefix,prefix)
+ if (ns.prefix == prefix) {
+ return ns.namespace != uri;
+ }
+ }
+ //console.log(isHTML,uri,prefix=='')
+ //if(isHTML && prefix ==null && uri == 'http://www.w3.org/1999/xhtml'){
+ // return false;
+ //}
+ //node.flag = '11111'
+ //console.error(3,true,node.flag,node.prefix,node.namespaceURI)
+ return true;
+}
+function serializeToString(node, buf, isHTML, nodeFilter, visibleNamespaces) {
+ if (nodeFilter) {
+ node = nodeFilter(node);
+ if (node) {
+ if (typeof node == 'string') {
+ buf.push(node);
+ return;
+ }
+ } else {
+ return;
+ }
+ //buf.sort.apply(attrs, attributeSorter);
+ }
+ switch (node.nodeType) {
+ case ELEMENT_NODE:
+ if (!visibleNamespaces) visibleNamespaces = [];
+ var startVisibleNamespaces = visibleNamespaces.length;
+ var attrs = node.attributes;
+ var len = attrs.length;
+ var child = node.firstChild;
+ var nodeName = node.tagName;
+
+ isHTML = htmlns === node.namespaceURI || isHTML;
+ buf.push('<', nodeName);
+
+ for (var i = 0; i < len; i++) {
+ // add namespaces for attributes
+ var attr = attrs.item(i);
+ if (attr.prefix == 'xmlns') {
+ visibleNamespaces.push({ prefix: attr.localName, namespace: attr.value });
+ } else if (attr.nodeName == 'xmlns') {
+ visibleNamespaces.push({ prefix: '', namespace: attr.value });
+ }
+ }
+ for (var i = 0; i < len; i++) {
+ var attr = attrs.item(i);
+ if (needNamespaceDefine(attr, isHTML, visibleNamespaces)) {
+ var prefix = attr.prefix || '';
+ var uri = attr.namespaceURI;
+ var ns = prefix ? ' xmlns:' + prefix : " xmlns";
+ buf.push(ns, '="', uri, '"');
+ visibleNamespaces.push({ prefix: prefix, namespace: uri });
+ }
+ serializeToString(attr, buf, isHTML, nodeFilter, visibleNamespaces);
+ }
+ // add namespace for current node
+ if (needNamespaceDefine(node, isHTML, visibleNamespaces)) {
+ var prefix = node.prefix || '';
+ var uri = node.namespaceURI;
+ var ns = prefix ? ' xmlns:' + prefix : " xmlns";
+ buf.push(ns, '="', uri, '"');
+ visibleNamespaces.push({ prefix: prefix, namespace: uri });
+ }
+
+ if (child || isHTML && !/^(?:meta|link|img|br|hr|input)$/i.test(nodeName)) {
+ buf.push('>');
+ //if is cdata child node
+ if (isHTML && /^script$/i.test(nodeName)) {
+ while (child) {
+ if (child.data) {
+ buf.push(child.data);
+ } else {
+ serializeToString(child, buf, isHTML, nodeFilter, visibleNamespaces);
+ }
+ child = child.nextSibling;
+ }
+ } else {
+ while (child) {
+ serializeToString(child, buf, isHTML, nodeFilter, visibleNamespaces);
+ child = child.nextSibling;
+ }
+ }
+ buf.push('', nodeName, '>');
+ } else {
+ buf.push('/>');
+ }
+ // remove added visible namespaces
+ //visibleNamespaces.length = startVisibleNamespaces;
+ return;
+ case DOCUMENT_NODE:
+ case DOCUMENT_FRAGMENT_NODE:
+ var child = node.firstChild;
+ while (child) {
+ serializeToString(child, buf, isHTML, nodeFilter, visibleNamespaces);
+ child = child.nextSibling;
+ }
+ return;
+ case ATTRIBUTE_NODE:
+ return buf.push(' ', node.name, '="', node.value.replace(/[<&"]/g, _xmlEncoder), '"');
+ case TEXT_NODE:
+ return buf.push(node.data.replace(/[<&]/g, _xmlEncoder));
+ case CDATA_SECTION_NODE:
+ return buf.push('');
+ case COMMENT_NODE:
+ return buf.push("");
+ case DOCUMENT_TYPE_NODE:
+ var pubid = node.publicId;
+ var sysid = node.systemId;
+ buf.push('');
+ } else if (sysid && sysid != '.') {
+ buf.push(' SYSTEM "', sysid, '">');
+ } else {
+ var sub = node.internalSubset;
+ if (sub) {
+ buf.push(" [", sub, "]");
+ }
+ buf.push(">");
+ }
+ return;
+ case PROCESSING_INSTRUCTION_NODE:
+ return buf.push("", node.target, " ", node.data, "?>");
+ case ENTITY_REFERENCE_NODE:
+ return buf.push('&', node.nodeName, ';');
+ //case ENTITY_NODE:
+ //case NOTATION_NODE:
+ default:
+ buf.push('??', node.nodeName);
+ }
+}
+function _importNode(doc, node, deep) {
+ var node2;
+ switch (node.nodeType) {
+ case ELEMENT_NODE:
+ node2 = node.cloneNode(false);
+ node2.ownerDocument = doc;
+ //var attrs = node2.attributes;
+ //var len = attrs.length;
+ //for(var i=0;i',
+ amp: '&',
+ quot: '"',
+ apos: "'",
+ Agrave: "À",
+ Aacute: "Á",
+ Acirc: "Â",
+ Atilde: "Ã",
+ Auml: "Ä",
+ Aring: "Å",
+ AElig: "Æ",
+ Ccedil: "Ç",
+ Egrave: "È",
+ Eacute: "É",
+ Ecirc: "Ê",
+ Euml: "Ë",
+ Igrave: "Ì",
+ Iacute: "Í",
+ Icirc: "Î",
+ Iuml: "Ï",
+ ETH: "Ð",
+ Ntilde: "Ñ",
+ Ograve: "Ò",
+ Oacute: "Ó",
+ Ocirc: "Ô",
+ Otilde: "Õ",
+ Ouml: "Ö",
+ Oslash: "Ø",
+ Ugrave: "Ù",
+ Uacute: "Ú",
+ Ucirc: "Û",
+ Uuml: "Ü",
+ Yacute: "Ý",
+ THORN: "Þ",
+ szlig: "ß",
+ agrave: "à",
+ aacute: "á",
+ acirc: "â",
+ atilde: "ã",
+ auml: "ä",
+ aring: "å",
+ aelig: "æ",
+ ccedil: "ç",
+ egrave: "è",
+ eacute: "é",
+ ecirc: "ê",
+ euml: "ë",
+ igrave: "ì",
+ iacute: "í",
+ icirc: "î",
+ iuml: "ï",
+ eth: "ð",
+ ntilde: "ñ",
+ ograve: "ò",
+ oacute: "ó",
+ ocirc: "ô",
+ otilde: "õ",
+ ouml: "ö",
+ oslash: "ø",
+ ugrave: "ù",
+ uacute: "ú",
+ ucirc: "û",
+ uuml: "ü",
+ yacute: "ý",
+ thorn: "þ",
+ yuml: "ÿ",
+ nbsp: " ",
+ iexcl: "¡",
+ cent: "¢",
+ pound: "£",
+ curren: "¤",
+ yen: "¥",
+ brvbar: "¦",
+ sect: "§",
+ uml: "¨",
+ copy: "©",
+ ordf: "ª",
+ laquo: "«",
+ not: "¬",
+ shy: "",
+ reg: "®",
+ macr: "¯",
+ deg: "°",
+ plusmn: "±",
+ sup2: "²",
+ sup3: "³",
+ acute: "´",
+ micro: "µ",
+ para: "¶",
+ middot: "·",
+ cedil: "¸",
+ sup1: "¹",
+ ordm: "º",
+ raquo: "»",
+ frac14: "¼",
+ frac12: "½",
+ frac34: "¾",
+ iquest: "¿",
+ times: "×",
+ divide: "÷",
+ forall: "∀",
+ part: "∂",
+ exist: "∃",
+ empty: "∅",
+ nabla: "∇",
+ isin: "∈",
+ notin: "∉",
+ ni: "∋",
+ prod: "∏",
+ sum: "∑",
+ minus: "−",
+ lowast: "∗",
+ radic: "√",
+ prop: "∝",
+ infin: "∞",
+ ang: "∠",
+ and: "∧",
+ or: "∨",
+ cap: "∩",
+ cup: "∪",
+ 'int': "∫",
+ there4: "∴",
+ sim: "∼",
+ cong: "≅",
+ asymp: "≈",
+ ne: "≠",
+ equiv: "≡",
+ le: "≤",
+ ge: "≥",
+ sub: "⊂",
+ sup: "⊃",
+ nsub: "⊄",
+ sube: "⊆",
+ supe: "⊇",
+ oplus: "⊕",
+ otimes: "⊗",
+ perp: "⊥",
+ sdot: "⋅",
+ Alpha: "Α",
+ Beta: "Β",
+ Gamma: "Γ",
+ Delta: "Δ",
+ Epsilon: "Ε",
+ Zeta: "Ζ",
+ Eta: "Η",
+ Theta: "Θ",
+ Iota: "Ι",
+ Kappa: "Κ",
+ Lambda: "Λ",
+ Mu: "Μ",
+ Nu: "Ν",
+ Xi: "Ξ",
+ Omicron: "Ο",
+ Pi: "Π",
+ Rho: "Ρ",
+ Sigma: "Σ",
+ Tau: "Τ",
+ Upsilon: "Υ",
+ Phi: "Φ",
+ Chi: "Χ",
+ Psi: "Ψ",
+ Omega: "Ω",
+ alpha: "α",
+ beta: "β",
+ gamma: "γ",
+ delta: "δ",
+ epsilon: "ε",
+ zeta: "ζ",
+ eta: "η",
+ theta: "θ",
+ iota: "ι",
+ kappa: "κ",
+ lambda: "λ",
+ mu: "μ",
+ nu: "ν",
+ xi: "ξ",
+ omicron: "ο",
+ pi: "π",
+ rho: "ρ",
+ sigmaf: "ς",
+ sigma: "σ",
+ tau: "τ",
+ upsilon: "υ",
+ phi: "φ",
+ chi: "χ",
+ psi: "ψ",
+ omega: "ω",
+ thetasym: "ϑ",
+ upsih: "ϒ",
+ piv: "ϖ",
+ OElig: "Œ",
+ oelig: "œ",
+ Scaron: "Š",
+ scaron: "š",
+ Yuml: "Ÿ",
+ fnof: "ƒ",
+ circ: "ˆ",
+ tilde: "˜",
+ ensp: " ",
+ emsp: " ",
+ thinsp: " ",
+ zwnj: "",
+ zwj: "",
+ lrm: "",
+ rlm: "",
+ ndash: "–",
+ mdash: "—",
+ lsquo: "‘",
+ rsquo: "’",
+ sbquo: "‚",
+ ldquo: "“",
+ rdquo: "”",
+ bdquo: "„",
+ dagger: "†",
+ Dagger: "‡",
+ bull: "•",
+ hellip: "…",
+ permil: "‰",
+ prime: "′",
+ Prime: "″",
+ lsaquo: "‹",
+ rsaquo: "›",
+ oline: "‾",
+ euro: "€",
+ trade: "™",
+ larr: "←",
+ uarr: "↑",
+ rarr: "→",
+ darr: "↓",
+ harr: "↔",
+ crarr: "↵",
+ lceil: "⌈",
+ rceil: "⌉",
+ lfloor: "⌊",
+ rfloor: "⌋",
+ loz: "◊",
+ spades: "♠",
+ clubs: "♣",
+ hearts: "♥",
+ diams: "♦"
+};
+//for(var n in exports.entityMap){console.log(exports.entityMap[n].charCodeAt())}
+
+},{}],41:[function(require,module,exports){
+"use strict";
+
+//[4] NameStartChar ::= ":" | [A-Z] | "_" | [a-z] | [#xC0-#xD6] | [#xD8-#xF6] | [#xF8-#x2FF] | [#x370-#x37D] | [#x37F-#x1FFF] | [#x200C-#x200D] | [#x2070-#x218F] | [#x2C00-#x2FEF] | [#x3001-#xD7FF] | [#xF900-#xFDCF] | [#xFDF0-#xFFFD] | [#x10000-#xEFFFF]
+//[4a] NameChar ::= NameStartChar | "-" | "." | [0-9] | #xB7 | [#x0300-#x036F] | [#x203F-#x2040]
+//[5] Name ::= NameStartChar (NameChar)*
+var nameStartChar = /[A-Z_a-z\xC0-\xD6\xD8-\xF6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD]/; //\u10000-\uEFFFF
+var nameChar = new RegExp("[\\-\\.0-9" + nameStartChar.source.slice(1, -1) + "\\u00B7\\u0300-\\u036F\\u203F-\\u2040]");
+var tagNamePattern = new RegExp('^' + nameStartChar.source + nameChar.source + '*(?:\:' + nameStartChar.source + nameChar.source + '*)?$');
+//var tagNamePattern = /^[a-zA-Z_][\w\-\.]*(?:\:[a-zA-Z_][\w\-\.]*)?$/
+//var handlers = 'resolveEntity,getExternalSubset,characters,endDocument,endElement,endPrefixMapping,ignorableWhitespace,processingInstruction,setDocumentLocator,skippedEntity,startDocument,startElement,startPrefixMapping,notationDecl,unparsedEntityDecl,error,fatalError,warning,attributeDecl,elementDecl,externalEntityDecl,internalEntityDecl,comment,endCDATA,endDTD,endEntity,startCDATA,startDTD,startEntity'.split(',')
+
+//S_TAG, S_ATTR, S_EQ, S_ATTR_NOQUOT_VALUE
+//S_ATTR_SPACE, S_ATTR_END, S_TAG_SPACE, S_TAG_CLOSE
+var S_TAG = 0; //tag name offerring
+var S_ATTR = 1; //attr name offerring
+var S_ATTR_SPACE = 2; //attr name end and space offer
+var S_EQ = 3; //=space?
+var S_ATTR_NOQUOT_VALUE = 4; //attr value(no quot value only)
+var S_ATTR_END = 5; //attr value end and no space(quot end)
+var S_TAG_SPACE = 6; //(attr value end || tag end ) && (space offer)
+var S_TAG_CLOSE = 7; //closed el
+
+function XMLReader() {}
+
+XMLReader.prototype = {
+ parse: function parse(source, defaultNSMap, entityMap) {
+ var domBuilder = this.domBuilder;
+ domBuilder.startDocument();
+ _copy(defaultNSMap, defaultNSMap = {});
+ _parse(source, defaultNSMap, entityMap, domBuilder, this.errorHandler);
+ domBuilder.endDocument();
+ }
+};
+function _parse(source, defaultNSMapCopy, entityMap, domBuilder, errorHandler) {
+ function fixedFromCharCode(code) {
+ // String.prototype.fromCharCode does not supports
+ // > 2 bytes unicode chars directly
+ if (code > 0xffff) {
+ code -= 0x10000;
+ var surrogate1 = 0xd800 + (code >> 10),
+ surrogate2 = 0xdc00 + (code & 0x3ff);
+
+ return String.fromCharCode(surrogate1, surrogate2);
+ } else {
+ return String.fromCharCode(code);
+ }
+ }
+ function entityReplacer(a) {
+ var k = a.slice(1, -1);
+ if (k in entityMap) {
+ return entityMap[k];
+ } else if (k.charAt(0) === '#') {
+ return fixedFromCharCode(parseInt(k.substr(1).replace('x', '0x')));
+ } else {
+ errorHandler.error('entity not found:' + a);
+ return a;
+ }
+ }
+ function appendText(end) {
+ //has some bugs
+ if (end > start) {
+ var xt = source.substring(start, end).replace(/?\w+;/g, entityReplacer);
+ locator && position(start);
+ domBuilder.characters(xt, 0, end - start);
+ start = end;
+ }
+ }
+ function position(p, m) {
+ while (p >= lineEnd && (m = linePattern.exec(source))) {
+ lineStart = m.index;
+ lineEnd = lineStart + m[0].length;
+ locator.lineNumber++;
+ //console.log('line++:',locator,startPos,endPos)
+ }
+ locator.columnNumber = p - lineStart + 1;
+ }
+ var lineStart = 0;
+ var lineEnd = 0;
+ var linePattern = /.*(?:\r\n?|\n)|.*$/g;
+ var locator = domBuilder.locator;
+
+ var parseStack = [{ currentNSMap: defaultNSMapCopy }];
+ var closeMap = {};
+ var start = 0;
+ while (true) {
+ try {
+ var tagStart = source.indexOf('<', start);
+ if (tagStart < 0) {
+ if (!source.substr(start).match(/^\s*$/)) {
+ var doc = domBuilder.doc;
+ var text = doc.createTextNode(source.substr(start));
+ doc.appendChild(text);
+ domBuilder.currentElement = text;
+ }
+ return;
+ }
+ if (tagStart > start) {
+ appendText(tagStart);
+ }
+ switch (source.charAt(tagStart + 1)) {
+ case '/':
+ var end = source.indexOf('>', tagStart + 3);
+ var tagName = source.substring(tagStart + 2, end);
+ var config = parseStack.pop();
+ if (end < 0) {
+
+ tagName = source.substring(tagStart + 2).replace(/[\s<].*/, '');
+ //console.error('#@@@@@@'+tagName)
+ errorHandler.error("end tag name: " + tagName + ' is not complete:' + config.tagName);
+ end = tagStart + 1 + tagName.length;
+ } else if (tagName.match(/\s)) {
+ tagName = tagName.replace(/[\s<].*/, '');
+ errorHandler.error("end tag name: " + tagName + ' maybe not complete');
+ end = tagStart + 1 + tagName.length;
+ }
+ //console.error(parseStack.length,parseStack)
+ //console.error(config);
+ var localNSMap = config.localNSMap;
+ var endMatch = config.tagName == tagName;
+ var endIgnoreCaseMach = endMatch || config.tagName && config.tagName.toLowerCase() == tagName.toLowerCase();
+ if (endIgnoreCaseMach) {
+ domBuilder.endElement(config.uri, config.localName, tagName);
+ if (localNSMap) {
+ for (var prefix in localNSMap) {
+ domBuilder.endPrefixMapping(prefix);
+ }
+ }
+ if (!endMatch) {
+ errorHandler.fatalError("end tag name: " + tagName + ' is not match the current start tagName:' + config.tagName);
+ }
+ } else {
+ parseStack.push(config);
+ }
+
+ end++;
+ break;
+ // end elment
+ case '?':
+ // ...?>
+ locator && position(tagStart);
+ end = parseInstruction(source, tagStart, domBuilder);
+ break;
+ case '!':
+ // start) {
+ start = end;
+ } else {
+ //REFINE: 这里有可能sax回退,有位置错误风险
+ appendText(Math.max(tagStart, start) + 1);
+ }
+ }
+}
+function copyLocator(f, t) {
+ t.lineNumber = f.lineNumber;
+ t.columnNumber = f.columnNumber;
+ return t;
+}
+
+/**
+ * @see #appendElement(source,elStartEnd,el,selfClosed,entityReplacer,domBuilder,parseStack);
+ * @return end of the elementStartPart(end of elementEndPart for selfClosed el)
+ */
+function parseElementStartPart(source, start, el, currentNSMap, entityReplacer, errorHandler) {
+ var attrName;
+ var value;
+ var p = ++start;
+ var s = S_TAG; //status
+ while (true) {
+ var c = source.charAt(p);
+ switch (c) {
+ case '=':
+ if (s === S_ATTR) {
+ //attrName
+ attrName = source.slice(start, p);
+ s = S_EQ;
+ } else if (s === S_ATTR_SPACE) {
+ s = S_EQ;
+ } else {
+ //fatalError: equal must after attrName or space after attrName
+ throw new Error('attribute equal must after attrName');
+ }
+ break;
+ case '\'':
+ case '"':
+ if (s === S_EQ || s === S_ATTR //|| s == S_ATTR_SPACE
+ ) {
+ //equal
+ if (s === S_ATTR) {
+ errorHandler.warning('attribute value must after "="');
+ attrName = source.slice(start, p);
+ }
+ start = p + 1;
+ p = source.indexOf(c, start);
+ if (p > 0) {
+ value = source.slice(start, p).replace(/?\w+;/g, entityReplacer);
+ el.add(attrName, value, start - 1);
+ s = S_ATTR_END;
+ } else {
+ //fatalError: no end quot match
+ throw new Error('attribute value no end \'' + c + '\' match');
+ }
+ } else if (s == S_ATTR_NOQUOT_VALUE) {
+ value = source.slice(start, p).replace(/?\w+;/g, entityReplacer);
+ //console.log(attrName,value,start,p)
+ el.add(attrName, value, start);
+ //console.dir(el)
+ errorHandler.warning('attribute "' + attrName + '" missed start quot(' + c + ')!!');
+ start = p + 1;
+ s = S_ATTR_END;
+ } else {
+ //fatalError: no equal before
+ throw new Error('attribute value must after "="');
+ }
+ break;
+ case '/':
+ switch (s) {
+ case S_TAG:
+ el.setTagName(source.slice(start, p));
+ case S_ATTR_END:
+ case S_TAG_SPACE:
+ case S_TAG_CLOSE:
+ s = S_TAG_CLOSE;
+ el.closed = true;
+ case S_ATTR_NOQUOT_VALUE:
+ case S_ATTR:
+ case S_ATTR_SPACE:
+ break;
+ //case S_EQ:
+ default:
+ throw new Error("attribute invalid close char('/')");
+ }
+ break;
+ case '':
+ //end document
+ //throw new Error('unexpected end of input')
+ errorHandler.error('unexpected end of input');
+ if (s == S_TAG) {
+ el.setTagName(source.slice(start, p));
+ }
+ return p;
+ case '>':
+ switch (s) {
+ case S_TAG:
+ el.setTagName(source.slice(start, p));
+ case S_ATTR_END:
+ case S_TAG_SPACE:
+ case S_TAG_CLOSE:
+ break; //normal
+ case S_ATTR_NOQUOT_VALUE: //Compatible state
+ case S_ATTR:
+ value = source.slice(start, p);
+ if (value.slice(-1) === '/') {
+ el.closed = true;
+ value = value.slice(0, -1);
+ }
+ case S_ATTR_SPACE:
+ if (s === S_ATTR_SPACE) {
+ value = attrName;
+ }
+ if (s == S_ATTR_NOQUOT_VALUE) {
+ errorHandler.warning('attribute "' + value + '" missed quot(")!!');
+ el.add(attrName, value.replace(/?\w+;/g, entityReplacer), start);
+ } else {
+ if (currentNSMap[''] !== 'http://www.w3.org/1999/xhtml' || !value.match(/^(?:disabled|checked|selected)$/i)) {
+ errorHandler.warning('attribute "' + value + '" missed value!! "' + value + '" instead!!');
+ }
+ el.add(value, value, start);
+ }
+ break;
+ case S_EQ:
+ throw new Error('attribute value missed!!');
+ }
+ // console.log(tagName,tagNamePattern,tagNamePattern.test(tagName))
+ return p;
+ /*xml space '\x20' | #x9 | #xD | #xA; */
+ case "\x80":
+ c = ' ';
+ default:
+ if (c <= ' ') {
+ //space
+ switch (s) {
+ case S_TAG:
+ el.setTagName(source.slice(start, p)); //tagName
+ s = S_TAG_SPACE;
+ break;
+ case S_ATTR:
+ attrName = source.slice(start, p);
+ s = S_ATTR_SPACE;
+ break;
+ case S_ATTR_NOQUOT_VALUE:
+ var value = source.slice(start, p).replace(/?\w+;/g, entityReplacer);
+ errorHandler.warning('attribute "' + value + '" missed quot(")!!');
+ el.add(attrName, value, start);
+ case S_ATTR_END:
+ s = S_TAG_SPACE;
+ break;
+ //case S_TAG_SPACE:
+ //case S_EQ:
+ //case S_ATTR_SPACE:
+ // void();break;
+ //case S_TAG_CLOSE:
+ //ignore warning
+ }
+ } else {
+ //not space
+ //S_TAG, S_ATTR, S_EQ, S_ATTR_NOQUOT_VALUE
+ //S_ATTR_SPACE, S_ATTR_END, S_TAG_SPACE, S_TAG_CLOSE
+ switch (s) {
+ //case S_TAG:void();break;
+ //case S_ATTR:void();break;
+ //case S_ATTR_NOQUOT_VALUE:void();break;
+ case S_ATTR_SPACE:
+ var tagName = el.tagName;
+ if (currentNSMap[''] !== 'http://www.w3.org/1999/xhtml' || !attrName.match(/^(?:disabled|checked|selected)$/i)) {
+ errorHandler.warning('attribute "' + attrName + '" missed value!! "' + attrName + '" instead2!!');
+ }
+ el.add(attrName, attrName, start);
+ start = p;
+ s = S_ATTR;
+ break;
+ case S_ATTR_END:
+ errorHandler.warning('attribute space is required"' + attrName + '"!!');
+ case S_TAG_SPACE:
+ s = S_ATTR;
+ start = p;
+ break;
+ case S_EQ:
+ s = S_ATTR_NOQUOT_VALUE;
+ start = p;
+ break;
+ case S_TAG_CLOSE:
+ throw new Error("elements closed character '/' and '>' must be connected to");
+ }
+ }
+ } //end outer switch
+ //console.log('p++',p)
+ p++;
+ }
+}
+/**
+ * @return true if has new namespace define
+ */
+function appendElement(el, domBuilder, currentNSMap) {
+ var tagName = el.tagName;
+ var localNSMap = null;
+ //var currentNSMap = parseStack[parseStack.length-1].currentNSMap;
+ var i = el.length;
+ while (i--) {
+ var a = el[i];
+ var qName = a.qName;
+ var value = a.value;
+ var nsp = qName.indexOf(':');
+ if (nsp > 0) {
+ var prefix = a.prefix = qName.slice(0, nsp);
+ var localName = qName.slice(nsp + 1);
+ var nsPrefix = prefix === 'xmlns' && localName;
+ } else {
+ localName = qName;
+ prefix = null;
+ nsPrefix = qName === 'xmlns' && '';
+ }
+ //can not set prefix,because prefix !== ''
+ a.localName = localName;
+ //prefix == null for no ns prefix attribute
+ if (nsPrefix !== false) {
+ //hack!!
+ if (localNSMap == null) {
+ localNSMap = {};
+ //console.log(currentNSMap,0)
+ _copy(currentNSMap, currentNSMap = {});
+ //console.log(currentNSMap,1)
+ }
+ currentNSMap[nsPrefix] = localNSMap[nsPrefix] = value;
+ a.uri = 'http://www.w3.org/2000/xmlns/';
+ domBuilder.startPrefixMapping(nsPrefix, value);
+ }
+ }
+ var i = el.length;
+ while (i--) {
+ a = el[i];
+ var prefix = a.prefix;
+ if (prefix) {
+ //no prefix attribute has no namespace
+ if (prefix === 'xml') {
+ a.uri = 'http://www.w3.org/XML/1998/namespace';
+ }if (prefix !== 'xmlns') {
+ a.uri = currentNSMap[prefix || ''];
+
+ //{console.log('###'+a.qName,domBuilder.locator.systemId+'',currentNSMap,a.uri)}
+ }
+ }
+ }
+ var nsp = tagName.indexOf(':');
+ if (nsp > 0) {
+ prefix = el.prefix = tagName.slice(0, nsp);
+ localName = el.localName = tagName.slice(nsp + 1);
+ } else {
+ prefix = null; //important!!
+ localName = el.localName = tagName;
+ }
+ //no prefix element has default namespace
+ var ns = el.uri = currentNSMap[prefix || ''];
+ domBuilder.startElement(ns, localName, tagName, el);
+ //endPrefixMapping and startPrefixMapping have not any help for dom builder
+ //localNSMap = null
+ if (el.closed) {
+ domBuilder.endElement(ns, localName, tagName);
+ if (localNSMap) {
+ for (prefix in localNSMap) {
+ domBuilder.endPrefixMapping(prefix);
+ }
+ }
+ } else {
+ el.currentNSMap = currentNSMap;
+ el.localNSMap = localNSMap;
+ //parseStack.push(el);
+ return true;
+ }
+}
+function parseHtmlSpecialContent(source, elStartEnd, tagName, entityReplacer, domBuilder) {
+ if (/^(?:script|textarea)$/i.test(tagName)) {
+ var elEndStart = source.indexOf('' + tagName + '>', elStartEnd);
+ var text = source.substring(elStartEnd + 1, elEndStart);
+ if (/[&<]/.test(text)) {
+ if (/^script$/i.test(tagName)) {
+ //if(!/\]\]>/.test(text)){
+ //lexHandler.startCDATA();
+ domBuilder.characters(text, 0, text.length);
+ //lexHandler.endCDATA();
+ return elEndStart;
+ //}
+ } //}else{//text area
+ text = text.replace(/?\w+;/g, entityReplacer);
+ domBuilder.characters(text, 0, text.length);
+ return elEndStart;
+ //}
+ }
+ }
+ return elStartEnd + 1;
+}
+function fixSelfClosed(source, elStartEnd, tagName, closeMap) {
+ //if(tagName in closeMap){
+ var pos = closeMap[tagName];
+ if (pos == null) {
+ //console.log(tagName)
+ pos = source.lastIndexOf('' + tagName + '>');
+ if (pos < elStartEnd) {
+ //忘记闭合
+ pos = source.lastIndexOf('' + tagName);
+ }
+ closeMap[tagName] = pos;
+ }
+ return pos < elStartEnd;
+ //}
+}
+function _copy(source, target) {
+ for (var n in source) {
+ target[n] = source[n];
+ }
+}
+function parseDCC(source, start, domBuilder, errorHandler) {
+ //sure start with '', start + 4);
+ //append comment source.substring(4,end)//