diff --git a/.editorconfig b/.editorconfig
new file mode 100644
index 0000000..764a490
--- /dev/null
+++ b/.editorconfig
@@ -0,0 +1,12 @@
+root = true
+
+[*]
+indent_style = space
+indent_size = 4
+end_of_line = lf
+charset = utf-8
+insert_final_newline = true
+trim_trailing_whitespace = true
+
+[*.{json,lock,yml}]
+indent_size = 2
diff --git a/.gitattributes b/.gitattributes
index 59599dd..ad4990d 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -1,5 +1,19 @@
-*.ts text
-*.js text
-*.json text
-*.html text
-*.md text
\ No newline at end of file
+# Auto detect text files and perform LF normalization
+* text=auto
+
+# Explicitly declare files as LF
+*.ts text eol=lf
+*.js text eol=lf
+*.json text eol=lf
+*.html text eol=lf
+*.md text eol=lf
+*.map text eol=lf
+*.lock text eol=lf
+.editorconfig text eol=lf
+.gitattributes text eol=lf
+*.gitignore text eol=lf
+
+# Library and media files as binary
+*.moc3 binary
+*.jpg binary
+*.png binary
diff --git a/.gitignore b/.gitignore
index ae146e1..f3554c7 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,4 +1,17 @@
-.idea/
-
-node_modules/
-Sample/TypeScript/Demo/dist/
+# Cubism Core
+/Core/*
+!/Core/Please_copy_cubism_core_for_web
+
+# IDE/Editor files
+.idea/
+.vs/
+.vscode/*
+!/.vscode/launch.json
+!/.vscode/tasks.json
+*.iml
+
+# Package files
+/node_modules/
+
+# Build files
+/Sample/TypeScript/Demo/dist/
diff --git a/.vscode/launch.json b/.vscode/launch.json
index da2b3ef..c08ff40 100644
--- a/.vscode/launch.json
+++ b/.vscode/launch.json
@@ -1,26 +1,20 @@
{
- "version": "0.2.0",
-
- "configurations": [
- // Webサーバー上にあるファイルをデバッグ
- {
- // デバッグ設定の名称
- "name": "Launch remote website with sourcemaps",
-
- // デバッグ種別を指定(chrome)
- "type": "chrome",
-
- // launchまたはattachを指定
- "request": "launch",
-
- // Webサーバー上にあるデバッグ対象のURLを指定
- "url": "http://localhost:5500/Sample/TypeScript/Demo/index.html",
-
- // マッピングするローカルファイルが配置されているディレクトリを指定
- "webRoot": "${workspaceFolder}/",
-
- // ソースマップの有効・向こうの指定(true/false)
- "sourceMaps": true,
- }
- ]
-}
\ No newline at end of file
+ "version": "0.2.0",
+ "configurations": [
+ // Webサーバ上にあるファイルをデバッグ
+ {
+ // デバッグ設定の名称
+ "name": "Launch remote website with sourcemaps",
+ // デバッグ種別を指定(chrome)
+ "type": "chrome",
+ // launchまたはattachを指定
+ "request": "launch",
+ // Webサーバ上にあるデバッグ対象のURLを指定
+ "url": "http://localhost:5500/Sample/TypeScript/Demo/index.html",
+ // マッピングするローカルファイルが配置されているディレクトリを指定
+ "webRoot": "${workspaceFolder}/",
+ // ソースマップの有効・向こうの指定(true/false)
+ "sourceMaps": true
+ }
+ ]
+}
diff --git a/.vscode/tasks.json b/.vscode/tasks.json
index 74082e1..e514ea4 100644
--- a/.vscode/tasks.json
+++ b/.vscode/tasks.json
@@ -1,32 +1,37 @@
{
- // See https://go.microsoft.com/fwlink/?LinkId=733558
- // for the documentation about the tasks.json format
- "version": "2.0.0",
- "tasks": [
- {
- "type": "npm",
- "script": "build-all",
- "problemMatcher": []
- },
- {
- "type": "npm",
- "script": "watch-all",
- "problemMatcher": []
- },
- {
- "type": "npm",
- "script": "build-sample",
- "problemMatcher": []
- },
- {
- "type": "npm",
- "script": "watch-sample",
- "problemMatcher": []
- },
- {
- "type": "npm",
- "script": "build-framework",
- "problemMatcher": []
- }
- ]
-}
\ No newline at end of file
+ // See https://go.microsoft.com/fwlink/?LinkId=733558
+ // for the documentation about the tasks.json format
+ "version": "2.0.0",
+ "tasks": [
+ {
+ "type": "npm",
+ "script": "build-all",
+ "problemMatcher": []
+ },
+ {
+ "type": "npm",
+ "script": "watch-all",
+ "problemMatcher": []
+ },
+ {
+ "type": "npm",
+ "script": "build-sample",
+ "problemMatcher": []
+ },
+ {
+ "type": "npm",
+ "script": "watch-sample",
+ "problemMatcher": []
+ },
+ {
+ "type": "npm",
+ "script": "build-framework",
+ "problemMatcher": []
+ },
+ {
+ "type": "npm",
+ "script": "serve",
+ "problemMatcher": []
+ }
+ ]
+}
diff --git a/CHANGELOG.md b/CHANGELOG.md
new file mode 100644
index 0000000..d1a215f
--- /dev/null
+++ b/CHANGELOG.md
@@ -0,0 +1,36 @@
+# Changelog
+
+All notable changes to this project will be documented in this file.
+
+The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
+and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
+
+
+## [4-beta.1] - 2019-09-04
+
+### Added
+
+- Add method for Moc file version.
+- Support new Inverted Masking features.
+- Add `.editorconfig` and `.gitattributes` to manage file formats.
+- Add `CHANGELOG.md`.
+- Add way to create a simpler local server.
+- Add sample model `/Sample/TypeScript/Demo/Resources/Rice`.
+
+### Changed
+
+- Upgrade Core version to 04.00.0000 (67108864).
+- Convert all file formats according to `.editorconfig`.
+- Rename `cubismrenderer_WebGL.ts` to `cubismrenderer_webgl.ts`.
+- What was `CubismSdkPackage.json` is currently being changed to`cubism-info.yml`.
+- Upgrade all dependency packages and lock package version by adding `package-lock.json`.
+- Update `README.md`.
+ - Delete guidance from `README.md` due to suspension of *Cubism Bindings*.
+- Update `.gitignore`.
+
+### Fixed
+
+- Fix issue with reloading model images in WebKit.
+
+
+[4-beta.1]: https://github.com/Live2D/CubismWebSamples/compare/e36ab2233a89de9225f64e5a02d521bc7235bd03...4-beta.1
diff --git a/Core/Please copy cubism core for web b/Core/Please copy cubism core for web
deleted file mode 100644
index 60b3b34..0000000
--- a/Core/Please copy cubism core for web
+++ /dev/null
@@ -1 +0,0 @@
-Please copy cubism native core
\ No newline at end of file
diff --git a/Core/Please_copy_cubism_core_for_web b/Core/Please_copy_cubism_core_for_web
new file mode 100644
index 0000000..e69de29
diff --git a/Framework/cubismdefaultparameterid.ts b/Framework/cubismdefaultparameterid.ts
index bf16da8..f38e6c6 100644
--- a/Framework/cubismdefaultparameterid.ts
+++ b/Framework/cubismdefaultparameterid.ts
@@ -1,14 +1,14 @@
-/*
+/**
* Copyright(c) Live2D Inc. All rights reserved.
*
* Use of this source code is governed by the Live2D Open Software license
- * that can be found at http://live2d.com/eula/live2d-open-software-license-agreement_en.html.
+ * that can be found at https://www.live2d.com/eula/live2d-open-software-license-agreement_en.html.
*/
/**
* @brief パラメータIDのデフォルト値を保持する定数
* デフォルト値の仕様は以下のマニュアルに基づく
- * http://docs.live2d.com/cubism-editor-manual/standard-parametor-list/
+ * https://docs.live2d.com/cubism-editor-manual/standard-parametor-list/
*/
export namespace Live2DCubismFramework
{
@@ -63,4 +63,4 @@ export namespace Live2DCubismFramework
export const ParamBaseX: string = "ParamBaseX";
export const ParamBaseY: string = "ParamBaseY";
export const ParamNONE: string = "NONE:";
-}
\ No newline at end of file
+}
diff --git a/Framework/cubismframeworkconfig.ts b/Framework/cubismframeworkconfig.ts
index 535b519..596bd93 100644
--- a/Framework/cubismframeworkconfig.ts
+++ b/Framework/cubismframeworkconfig.ts
@@ -1,9 +1,9 @@
-/*
-* Copyright(c) Live2D Inc. All rights reserved.
-*
-* Use of this source code is governed by the Live2D Open Software license
-* that can be found at http://live2d.com/eula/live2d-open-software-license-agreement_en.html.
-*/
+/**
+ * Copyright(c) Live2D Inc. All rights reserved.
+ *
+ * Use of this source code is governed by the Live2D Open Software license
+ * that can be found at https://www.live2d.com/eula/live2d-open-software-license-agreement_en.html.
+ */
//========================================================
// ログ出力関数の設定
@@ -29,4 +29,4 @@ export const CSM_LOG_LEVEL_OFF: number = 5;
* 強制的にログ出力レベルを変える時に定義を有効にする。
* CSM_LOG_LEVEL_VERBOSE ~ CSM_LOG_LEVEL_OFF を選択する。
*/
-export const CSM_LOG_LEVEL: number = CSM_LOG_LEVEL_VERBOSE;
\ No newline at end of file
+export const CSM_LOG_LEVEL: number = CSM_LOG_LEVEL_VERBOSE;
diff --git a/Framework/cubismmodelsettingjson.ts b/Framework/cubismmodelsettingjson.ts
index eeb6f2c..c7d6cdd 100644
--- a/Framework/cubismmodelsettingjson.ts
+++ b/Framework/cubismmodelsettingjson.ts
@@ -1,8 +1,8 @@
-/*
+/**
* Copyright(c) Live2D Inc. All rights reserved.
*
* Use of this source code is governed by the Live2D Open Software license
- * that can be found at http://live2d.com/eula/live2d-open-software-license-agreement_en.html.
+ * that can be found at https://www.live2d.com/eula/live2d-open-software-license-agreement_en.html.
*/
import {Live2DCubismFramework as cubismframework} from "./live2dcubismframework";
@@ -33,21 +33,21 @@ export namespace Live2DCubismFramework
const Groups: string = "Groups";
const Layout: string = "Layout";
const HitAreas: string = "HitAreas";
-
+
const Moc: string = "Moc";
const Textures: string = "Textures";
const Physics: string = "Physics";
const Pose: string = "Pose";
const Expressions: string = "Expressions";
const Motions: string = "Motions";
-
+
const UserData: string = "UserData";
const Name: string = "Name";
const FilePath: string = "File";
const Id: string = "Id";
const Ids: string = "Ids";
const Target: string = "Target";
-
+
// Motions
const Idle: string = "Idle";
const TapBody: string = "TapBody";
@@ -56,11 +56,11 @@ export namespace Live2DCubismFramework
const Shake: string = "Shake";
const FlickHead: string = "FlickHead";
const Parameter: string = "Parameter";
-
+
const SoundPath: string = "Sound";
const FadeInTime: string = "FadeInTime";
const FadeOutTime: string = "FadeOutTime";
-
+
// Layout
const CenterX: string = "CenterX";
const CenterY: string = "CenterY";
@@ -68,10 +68,10 @@ export namespace Live2DCubismFramework
const Y: string = "Y";
const Width: string = "Width";
const Height: string = "Height";
-
+
const LipSync: string = "LipSync";
const EyeBlink: string = "EyeBlink";
-
+
const InitParameter: string = "init_param";
const InitPartsVisible: string = "init_parts_visible";
const Val: string = "val";
@@ -91,14 +91,14 @@ export namespace Live2DCubismFramework
/**
* Model3Jsonパーサー
- *
+ *
* model3.jsonファイルをパースして値を取得する
*/
export class CubismModelSettingJson extends ICubismModelSetting
{
/**
* 引数付きコンストラクタ
- *
+ *
* @param buffer Model3Jsonをバイト配列として読み込んだデータバッファ
* @param size Model3Jsonのデータサイズ
*/
@@ -135,7 +135,7 @@ export namespace Live2DCubismFramework
/**
* CubismJsonオブジェクトを取得する
- *
+ *
* @return CubismJson
*/
public GetJson(): CubismJson
@@ -166,7 +166,7 @@ export namespace Live2DCubismFramework
{
return 0;
}
-
+
return this._jsonValue.at(FrequestNode.FrequestNode_Textures).getSize();
}
@@ -205,7 +205,7 @@ export namespace Live2DCubismFramework
/**
* 当たり判定に設定されたIDを取得する
- *
+ *
* @param index 配列のindex
* @return 当たり判定に設定されたID
*/
@@ -374,7 +374,7 @@ export namespace Live2DCubismFramework
{
return -1.0;
}
-
+
return this._jsonValue.at(FrequestNode.FrequestNode_Motions).getValueByString(groupName).getValueByIndex(index).getValueByString(FadeInTime).toFloat();
}
@@ -445,7 +445,7 @@ export namespace Live2DCubismFramework
{
return 0;
}
-
+
let num: number = 0;
for (let i = 0; i < this._jsonValue.at(FrequestNode.FrequestNode_Groups).getSize(); i++)
{
@@ -461,7 +461,7 @@ export namespace Live2DCubismFramework
break;
}
}
-
+
return num;
}
@@ -476,7 +476,7 @@ export namespace Live2DCubismFramework
{
return null;
}
-
+
for (let i = 0; i < this._jsonValue.at(FrequestNode.FrequestNode_Groups).getSize(); i++)
{
let refI: Value = this._jsonValue.at(FrequestNode.FrequestNode_Groups).getValueByIndex(i);
@@ -503,7 +503,7 @@ export namespace Live2DCubismFramework
{
return 0;
}
-
+
let num: number = 0;
for (let i: number = 0; i < this._jsonValue.at(FrequestNode.FrequestNode_Groups).getSize(); i++)
{
@@ -519,7 +519,7 @@ export namespace Live2DCubismFramework
break;
}
}
-
+
return num;
}
@@ -534,7 +534,7 @@ export namespace Live2DCubismFramework
{
return null;
}
-
+
for (let i: number = 0; i < this._jsonValue.at(FrequestNode.FrequestNode_Groups).getSize(); i++)
{
let refI: Value = this._jsonValue.at(FrequestNode.FrequestNode_Groups).getValueByIndex(i);
@@ -605,7 +605,7 @@ export namespace Live2DCubismFramework
let node: Value = this._jsonValue.at(FrequestNode.FrequestNode_Pose);
return !node.isNull() && !node.isError();
}
-
+
/**
* 表情設定ファイルのキーが存在するかどうかを確認する
* @return true キーが存在する
@@ -709,7 +709,7 @@ export namespace Live2DCubismFramework
return true;
}
}
-
+
return false;
}
@@ -733,9 +733,9 @@ export namespace Live2DCubismFramework
}
return false;
}
-
-
+
+
private _json: CubismJson;
private _jsonValue: csmVector;
}
-}
\ No newline at end of file
+}
diff --git a/Framework/effect/cubismbreath.ts b/Framework/effect/cubismbreath.ts
index 32dc4a2..e86dde7 100644
--- a/Framework/effect/cubismbreath.ts
+++ b/Framework/effect/cubismbreath.ts
@@ -1,9 +1,9 @@
-/*
-* Copyright(c) Live2D Inc. All rights reserved.
-*
-* Use of this source code is governed by the Live2D Open Software license
-* that can be found at http://live2d.com/eula/live2d-open-software-license-agreement_en.html.
-*/
+/**
+ * Copyright(c) Live2D Inc. All rights reserved.
+ *
+ * Use of this source code is governed by the Live2D Open Software license
+ * that can be found at https://www.live2d.com/eula/live2d-open-software-license-agreement_en.html.
+ */
import {Live2DCubismFramework as csmvector} from "../type/csmvector";
import {Live2DCubismFramework as cubismmodel} from "../model/cubismmodel";
@@ -17,7 +17,7 @@ export namespace Live2DCubismFramework
{
/**
* 呼吸機能
- *
+ *
* 呼吸機能を提供する。
*/
export class CubismBreath
@@ -96,7 +96,7 @@ export namespace Live2DCubismFramework
_breathParameters: csmVector; // 呼吸にひもづいているパラメータのリスト
_currentTime: number; // 積算時間[秒]
}
-
+
/**
* 呼吸のパラメータ情報
*/
@@ -112,11 +112,11 @@ export namespace Live2DCubismFramework
*/
constructor(parameterId?: CubismIdHandle, offset?: number, peak?: number, cycle?: number, weight?: number)
{
- this.parameterId = (parameterId == undefined)
- ? null
+ this.parameterId = (parameterId == undefined)
+ ? null
: parameterId;
this.offset = (offset == undefined)
- ? 0.0
+ ? 0.0
: offset;
this.peak = (peak == undefined)
? 0.0
@@ -125,7 +125,7 @@ export namespace Live2DCubismFramework
? 0.0
: cycle;
this.weight = (weight == undefined)
- ? 0.0
+ ? 0.0
: weight;
}
@@ -135,4 +135,4 @@ export namespace Live2DCubismFramework
cycle: number; // 呼吸を正弦波としたときの、波の周期
weight: number; // パラメータへの重み
}
-}
\ No newline at end of file
+}
diff --git a/Framework/effect/cubismeyeblink.ts b/Framework/effect/cubismeyeblink.ts
index 3a1a444..06e624a 100644
--- a/Framework/effect/cubismeyeblink.ts
+++ b/Framework/effect/cubismeyeblink.ts
@@ -1,8 +1,8 @@
-/*
+/**
* Copyright(c) Live2D Inc. All rights reserved.
*
* Use of this source code is governed by the Live2D Open Software license
- * that can be found at http://live2d.com/eula/live2d-open-software-license-agreement_en.html.
+ * that can be found at https://www.live2d.com/eula/live2d-open-software-license-agreement_en.html.
*/
import {Live2DCubismFramework as csmvector} from "../type/csmvector";
@@ -18,7 +18,7 @@ export namespace Live2DCubismFramework
{
/**
* 自動まばたき機能
- *
+ *
* 自動まばたき機能を提供する。
*/
export class CubismEyeBlink
@@ -101,7 +101,7 @@ export namespace Live2DCubismFramework
{
case EyeState.EyeState_Closing:
t = ((this._userTimeSeconds - this._stateStartTimeSeconds) / this._closingSeconds);
-
+
if(t >= 1.0)
{
t = 1.0;
@@ -196,7 +196,7 @@ export namespace Live2DCubismFramework
/**
* 次の瞬きのタイミングの決定
- *
+ *
* @return 次のまばたきを行う時刻[秒]
*/
public determinNextBlinkingTiming(): number
@@ -217,13 +217,13 @@ export namespace Live2DCubismFramework
/**
* IDで指定された目のパラメータが、0のときに閉じるなら true 、1の時に閉じるなら false 。
- */
+ */
static readonly CloseIfZero: boolean = true;
}
/**
* まばたきの状態
- *
+ *
* まばたきの状態を表す列挙型
*/
export enum EyeState
@@ -234,4 +234,4 @@ export namespace Live2DCubismFramework
EyeState_Closed, // まぶたが閉じている状態
EyeState_Opening // まぶたが開いていく途中の状態
}
-}
\ No newline at end of file
+}
diff --git a/Framework/effect/cubismpose.ts b/Framework/effect/cubismpose.ts
index d9c9b84..5081cf0 100644
--- a/Framework/effect/cubismpose.ts
+++ b/Framework/effect/cubismpose.ts
@@ -1,8 +1,8 @@
-/*
+/**
* Copyright(c) Live2D Inc. All rights reserved.
*
* Use of this source code is governed by the Live2D Open Software license
- * that can be found at http://live2d.com/eula/live2d-open-software-license-agreement_en.html.
+ * that can be found at https://www.live2d.com/eula/live2d-open-software-license-agreement_en.html.
*/
import {Live2DCubismFramework as cubismid} from "../id/cubismid";
@@ -23,7 +23,7 @@ export namespace Live2DCubismFramework
{
const Epsilon: number = 0.001;
const DefaultFadeInSeconds: number = 0.5;
-
+
// Pose.jsonのタグ
const FadeIn: string = "FadeInTime";
const Link: string = "Link";
@@ -33,7 +33,7 @@ export namespace Live2DCubismFramework
/**
* パーツの不透明度の設定
- *
+ *
* パーツの不透明度の管理と設定を行う。
*/
export class CubismPose
@@ -197,7 +197,7 @@ export namespace Live2DCubismFramework
/**
* パーツの不透明度をコピー
- *
+ *
* @param model 対象のモデル
*/
public copyPartOpacities(model: CubismModel): void
@@ -349,7 +349,7 @@ export namespace Live2DCubismFramework
this.parameterIndex = 0;
this.partIndex = 0;
this.link = new csmVector();
-
+
if(v != undefined)
{
this.partId = v.partId;
@@ -407,10 +407,10 @@ export namespace Live2DCubismFramework
return clonePartData;
}
-
+
partId: CubismIdHandle; // パーツID
parameterIndex: number; // パラメータのインデックス
partIndex: number; // パーツのインデックス
link: csmVector; // 連動するパラメータ
}
-}
\ No newline at end of file
+}
diff --git a/Framework/icubismallcator.ts b/Framework/icubismallcator.ts
index feafb80..2a8640d 100644
--- a/Framework/icubismallcator.ts
+++ b/Framework/icubismallcator.ts
@@ -1,15 +1,15 @@
-/*
-* Copyright(c) Live2D Inc. All rights reserved.
-*
-* Use of this source code is governed by the Live2D Open Software license
-* that can be found at http://live2d.com/eula/live2d-open-software-license-agreement_en.html.
-*/
+/**
+ * Copyright(c) Live2D Inc. All rights reserved.
+ *
+ * Use of this source code is governed by the Live2D Open Software license
+ * that can be found at https://www.live2d.com/eula/live2d-open-software-license-agreement_en.html.
+ */
export namespace Live2DCubismFramework
{
/**
* メモリアロケーションを抽象化したクラス
- *
+ *
* メモリ確保・解放処理をプラットフォーム側で実装して
* フレームワークから呼び出すためのインターフェース
*/
@@ -17,7 +17,7 @@ export namespace Live2DCubismFramework
{
/**
* アラインメント制約なしのヒープ・メモリーを確保します
- *
+ *
* @param size 確保するバイト数
* @return 成功すると割り当てられたメモリのアドレス。そうでなければ'0'を返す
*/
@@ -25,7 +25,7 @@ export namespace Live2DCubismFramework
/**
* アラインメント制約なしのヒープ・メモリーを解放します。
- *
+ *
* @param memory 解放するメモリのアドレス
*/
public abstract deallocate(memory: any): void;
diff --git a/Framework/icubismmodelsetting.ts b/Framework/icubismmodelsetting.ts
index 3b85b4d..023cfff 100644
--- a/Framework/icubismmodelsetting.ts
+++ b/Framework/icubismmodelsetting.ts
@@ -1,8 +1,8 @@
-/*
+/**
* Copyright(c) Live2D Inc. All rights reserved.
*
* Use of this source code is governed by the Live2D Open Software license
- * that can be found at http://live2d.com/eula/live2d-open-software-license-agreement_en.html.
+ * that can be found at https://www.live2d.com/eula/live2d-open-software-license-agreement_en.html.
*/
import {Live2DCubismFramework as cubismid} from './id/cubismid';
@@ -52,7 +52,7 @@ export namespace Live2DCubismFramework
/**
* 当たり判定に設定されたIDを取得する
- *
+ *
* @param index 配列のindex
* @return 当たり判定に設定されたID
*/
@@ -190,4 +190,4 @@ export namespace Live2DCubismFramework
*/
public abstract getLipSyncParameterId(index: number): CubismIdHandle;
}
-}
\ No newline at end of file
+}
diff --git a/Framework/id/cubismid.ts b/Framework/id/cubismid.ts
index 8b850a5..e6cbdde 100644
--- a/Framework/id/cubismid.ts
+++ b/Framework/id/cubismid.ts
@@ -1,8 +1,8 @@
-/*
+/**
* Copyright(c) Live2D Inc. All rights reserved.
*
* Use of this source code is governed by the Live2D Open Software license
- * that can be found at http://live2d.com/eula/live2d-open-software-license-agreement_en.html.
+ * that can be found at https://www.live2d.com/eula/live2d-open-software-license-agreement_en.html.
*/
import {Live2DCubismFramework as csmstring} from "../type/csmstring";
@@ -12,7 +12,7 @@ export namespace Live2DCubismFramework
{
/**
* パラメータ名・パーツ名・Drawable名を保持
- *
+ *
* パラメータ名・パーツ名・Drawable名を保持するクラス。
*/
export class CubismId
@@ -24,7 +24,7 @@ export namespace Live2DCubismFramework
{
return this._id;
}
-
+
/**
* コンストラクタ
*/
@@ -35,7 +35,7 @@ export namespace Live2DCubismFramework
this._id = new csmString(id);
return;
}
-
+
this._id = id;
}
@@ -87,4 +87,4 @@ export namespace Live2DCubismFramework
}
export declare type CubismIdHandle = CubismId;
-}
\ No newline at end of file
+}
diff --git a/Framework/id/cubismidmanager.ts b/Framework/id/cubismidmanager.ts
index 096ea52..9d751c2 100644
--- a/Framework/id/cubismidmanager.ts
+++ b/Framework/id/cubismidmanager.ts
@@ -1,9 +1,9 @@
-/*
-* Copyright(c) Live2D Inc. All rights reserved.
-*
-* Use of this source code is governed by the Live2D Open Software license
-* that can be found at http://live2d.com/eula/live2d-open-software-license-agreement_en.html.
-*/
+/**
+ * Copyright(c) Live2D Inc. All rights reserved.
+ *
+ * Use of this source code is governed by the Live2D Open Software license
+ * that can be found at https://www.live2d.com/eula/live2d-open-software-license-agreement_en.html.
+ */
import {Live2DCubismFramework as csmvector} from "../type/csmvector";
import {Live2DCubismFramework as cubismid} from "./cubismid";
@@ -16,7 +16,7 @@ export namespace Live2DCubismFramework
{
/**
* ID名の管理
- *
+ *
* ID名を管理する。
*/
export class CubismIdManager
@@ -40,10 +40,10 @@ export namespace Live2DCubismFramework
}
this._ids = null;
}
-
+
/**
* ID名をリストから登録
- *
+ *
* @param ids ID名リスト
* @param count IDの個数
*/
@@ -57,7 +57,7 @@ export namespace Live2DCubismFramework
/**
* ID名を登録
- *
+ *
* @param id ID名
*/
public registerId(id: string | csmString): CubismId
@@ -84,7 +84,7 @@ export namespace Live2DCubismFramework
/**
* ID名からIDを取得する
- *
+ *
* @param id ID名
*/
public getId(id: csmString | string): CubismId
@@ -94,13 +94,13 @@ export namespace Live2DCubismFramework
/**
* ID名からIDの確認
- *
+ *
* @return true 存在する
* @return false 存在しない
*/
public isExist(id: csmString | string): boolean
{
- if ('string' == typeof(id))
+ if ('string' == typeof(id))
{
return (this.findId(id) != null);
}
@@ -109,7 +109,7 @@ export namespace Live2DCubismFramework
/**
* ID名からIDを検索する。
- *
+ *
* @param id ID名
* @return 登録されているID。なければNULL。
*/
@@ -128,4 +128,4 @@ export namespace Live2DCubismFramework
private _ids: csmVector; // 登録されているIDのリスト
}
-}
\ No newline at end of file
+}
diff --git a/Framework/live2dcubismframework.ts b/Framework/live2dcubismframework.ts
index 322ee19..6987614 100644
--- a/Framework/live2dcubismframework.ts
+++ b/Framework/live2dcubismframework.ts
@@ -1,8 +1,8 @@
-/*
+/**
* Copyright(c) Live2D Inc. All rights reserved.
*
* Use of this source code is governed by the Live2D Open Software license
- * that can be found at http://live2d.com/eula/live2d-open-software-license-agreement_en.html.
+ * that can be found at https://www.live2d.com/eula/live2d-open-software-license-agreement_en.html.
*/
///
@@ -55,12 +55,12 @@ export function strtod(s: string, endPtr: string[]): number
export namespace Live2DCubismFramework
{
// ファイルスコープの変数を初期化
-
+
let s_isStarted: boolean = false;
let s_isInitialized: boolean = false;
let s_option: Option = null;
let s_cubismIdManager: CubismIdManager = null;
-
+
/**
* Framework内で使う定数の宣言
*/
@@ -81,7 +81,7 @@ export namespace Live2DCubismFramework
}
/**
- * Live2D Cubism3 Original Workflow SDKのエントリポイント
+ * Live2D Cubism SDK Original Workflow SDKのエントリポイント
* 利用開始時はCubismFramework.initialize()を呼び、CubismFramework.dispose()で終了する。
*/
export class CubismFramework
@@ -121,7 +121,7 @@ export namespace Live2DCubismFramework
const patch: number = ((version & 0x0000FFFF));
const versionNumber: number = version;
- CubismLogInfo(`Live2D Cubism Core version: {0}.{1}.{2} ({3})`,
+ CubismLogInfo(`Live2D Cubism Core version: {0}.{1}.{2} ({3})`,
('00' + major).slice(-2),
('00' + minor).slice(-2),
('0000' + patch).slice(-4),
@@ -213,7 +213,7 @@ export namespace Live2DCubismFramework
CubismLogInfo("CubismFramework.dispose() is complete.");
}
-
+
/**
* Cubism FrameworkのAPIを使用する準備が完了したかどうか
* @return APIを使用する準備が完了していればtrueが返ります。
@@ -222,7 +222,7 @@ export namespace Live2DCubismFramework
{
return s_isStarted;
}
-
+
/**
* Cubism Frameworkのリソース初期化がすでに行われているかどうか
* @return リソース確保が完了していればtrueが返ります
@@ -234,7 +234,7 @@ export namespace Live2DCubismFramework
/**
* Core APIにバインドしたログ関数を実行する
- *
+ *
* @praram message ログメッセージ
*/
public static coreLogFunction(message: string): void
@@ -247,7 +247,7 @@ export namespace Live2DCubismFramework
Live2DCubismCore.Logging.csmGetLogFunction()(message);
}
-
+
/**
* 現在のログ出力レベル設定の値を返す。
*
diff --git a/Framework/math/cubismmath.ts b/Framework/math/cubismmath.ts
index 0131ef4..c1e906d 100644
--- a/Framework/math/cubismmath.ts
+++ b/Framework/math/cubismmath.ts
@@ -1,8 +1,8 @@
-/*
+/**
* Copyright(c) Live2D Inc. All rights reserved.
*
* Use of this source code is governed by the Live2D Open Software license
- * that can be found at http://live2d.com/eula/live2d-open-software-license-agreement_en.html.
+ * that can be found at https://www.live2d.com/eula/live2d-open-software-license-agreement_en.html.
*/
import {Live2DCubismFramework as cubismvector2} from "./cubismvector2";
@@ -17,7 +17,7 @@ export namespace Live2DCubismFramework
{
/**
* 第一引数の値を最小値と最大値の範囲に収めた値を返す
- *
+ *
* @param value 収められる値
* @param min 範囲の最小値
* @param max 範囲の最大値
@@ -36,10 +36,10 @@ export namespace Live2DCubismFramework
return value;
}
-
+
/**
* サイン関数の値を求める
- *
+ *
* @param x 角度値(ラジアン)
* @return サイン関数sin(x)の値
*/
@@ -50,7 +50,7 @@ export namespace Live2DCubismFramework
/**
* コサイン関数の値を求める
- *
+ *
* @param x 角度値(ラジアン)
* @return コサイン関数cos(x)の値
*/
@@ -61,7 +61,7 @@ export namespace Live2DCubismFramework
/**
* 値の絶対値を求める
- *
+ *
* @param x 絶対値を求める値
* @return 値の絶対値
*/
@@ -83,7 +83,7 @@ export namespace Live2DCubismFramework
/**
* イージング処理されたサインを求める
* フェードイン・アウト時のイージングに利用できる
- *
+ *
* @param value イージングを行う値
* @return イージング処理されたサイン値
*/
@@ -92,7 +92,7 @@ export namespace Live2DCubismFramework
if (value < 0.0)
{
return 0.0;
- }
+ }
else if (value > 1.0)
{
return 1.0;
@@ -103,7 +103,7 @@ export namespace Live2DCubismFramework
/**
* 大きい方の値を返す
- *
+ *
* @param left 左辺の値
* @param right 右辺の値
* @return 大きい方の値
@@ -117,7 +117,7 @@ export namespace Live2DCubismFramework
/**
* 小さい方の値を返す
- *
+ *
* @param left 左辺の値
* @param right 右辺の値
* @return 小さい方の値
@@ -131,7 +131,7 @@ export namespace Live2DCubismFramework
/**
* 角度値をラジアン値に変換する
- *
+ *
* @param degrees 角度値
* @return 角度値から変換したラジアン値
*/
@@ -142,7 +142,7 @@ export namespace Live2DCubismFramework
/**
* ラジアン値を角度値に変換する
- *
+ *
* @param radian ラジアン値
* @return ラジアン値から変換した角度値
*/
@@ -153,7 +153,7 @@ export namespace Live2DCubismFramework
/**
* 2つのベクトルからラジアン値を求める
- *
+ *
* @param from 始点ベクトル
* @param to 終点ベクトル
* @return ラジアン値から求めた方向ベクトル
@@ -180,7 +180,7 @@ export namespace Live2DCubismFramework
/**
* 2つのベクトルから角度値を求める
- *
+ *
* @param from 始点ベクトル
* @param to 終点ベクトル
* @return 角度値から求めた方向ベクトル
@@ -200,7 +200,7 @@ export namespace Live2DCubismFramework
/**
* ラジアン値を方向ベクトルに変換する。
- *
+ *
* @param totalAngle ラジアン値
* @return ラジアン値から変換した方向ベクトル
*/
@@ -223,4 +223,4 @@ export namespace Live2DCubismFramework
}
}
-}
\ No newline at end of file
+}
diff --git a/Framework/math/cubismmatrix44.ts b/Framework/math/cubismmatrix44.ts
index 0adf543..44c2cba 100644
--- a/Framework/math/cubismmatrix44.ts
+++ b/Framework/math/cubismmatrix44.ts
@@ -1,15 +1,15 @@
-/*
+/**
* Copyright(c) Live2D Inc. All rights reserved.
*
* Use of this source code is governed by the Live2D Open Software license
- * that can be found at http://live2d.com/eula/live2d-open-software-license-agreement_en.html.
+ * that can be found at https://www.live2d.com/eula/live2d-open-software-license-agreement_en.html.
*/
export namespace Live2DCubismFramework
{
/**
* 4x4の行列
- *
+ *
* 4x4行列の便利クラス。
*/
export class CubismMatrix44
@@ -25,7 +25,7 @@ export namespace Live2DCubismFramework
/**
* 受け取った2つの行列の乗算を行う。
- *
+ *
* @param a 行列a
* @param b 行列b
* @return 乗算結果の行列
@@ -79,7 +79,7 @@ export namespace Live2DCubismFramework
/**
* 行列を設定
- *
+ *
* @param tr 16個の浮動小数点数で表される4x4の行列
*/
public setMatrix(tr: Float32Array): void
@@ -92,7 +92,7 @@ export namespace Live2DCubismFramework
/**
* 行列を浮動小数点数の配列で取得
- *
+ *
* @return 16個の浮動小数点数で表される4x4の行列
*/
public getArray(): Float32Array
@@ -111,7 +111,7 @@ export namespace Live2DCubismFramework
/**
* Y軸の拡大率を取得する
- *
+ *
* @return Y軸の拡大率
*/
public getScaleY(): number
@@ -139,7 +139,7 @@ export namespace Live2DCubismFramework
/**
* X軸の値を現在の行列で計算
- *
+ *
* @param src X軸の値
* @return 現在の行列で計算されたX軸の値
*/
@@ -150,7 +150,7 @@ export namespace Live2DCubismFramework
/**
* Y軸の値を現在の行列で計算
- *
+ *
* @param src Y軸の値
* @return 現在の行列で計算されたY軸の値
*/
@@ -177,9 +177,9 @@ export namespace Live2DCubismFramework
/**
* 現在の行列の位置を起点にして移動
- *
+ *
* 現在の行列の位置を起点にして相対的に移動する。
- *
+ *
* @param x X軸の移動量
* @param y Y軸の移動量
*/
@@ -199,9 +199,9 @@ export namespace Live2DCubismFramework
/**
* 現在の行列の位置を移動
- *
+ *
* 現在の行列の位置を指定した位置へ移動する
- *
+ *
* @param x X軸の移動量
* @param y y軸の移動量
*/
@@ -213,7 +213,7 @@ export namespace Live2DCubismFramework
/**
* 現在の行列のX軸の位置を指定した位置へ移動する
- *
+ *
* @param x X軸の移動量
*/
public translateX(x: number): void
@@ -223,7 +223,7 @@ export namespace Live2DCubismFramework
/**
* 現在の行列のY軸の位置を指定した位置へ移動する
- *
+ *
* @param y Y軸の移動量
*/
public translateY(y: number): void
@@ -234,7 +234,7 @@ export namespace Live2DCubismFramework
/**
* 現在の行列の拡大率を相対的に設定する
- *
+ *
* @param x X軸の拡大率
* @param y Y軸の拡大率
*/
@@ -243,7 +243,7 @@ export namespace Live2DCubismFramework
let tr1: Float32Array = new Float32Array(
[
x, 0.0, 0.0, 0.0,
- 0.0, y, 0.0, 0.0,
+ 0.0, y, 0.0, 0.0,
0.0, 0.0, 1.0, 0.0,
0.0, 0.0, 0.0, 1.0
]
@@ -254,7 +254,7 @@ export namespace Live2DCubismFramework
/**
* 現在の行列の拡大率を指定した倍率に設定する
- *
+ *
* @param x X軸の拡大率
* @param y Y軸の拡大率
*/
@@ -291,4 +291,4 @@ export namespace Live2DCubismFramework
protected _tr: Float32Array; // 4x4行列データ
}
-}
\ No newline at end of file
+}
diff --git a/Framework/math/cubismmodelmatrix.ts b/Framework/math/cubismmodelmatrix.ts
index 1bdcca1..97a3642 100644
--- a/Framework/math/cubismmodelmatrix.ts
+++ b/Framework/math/cubismmodelmatrix.ts
@@ -1,8 +1,8 @@
-/*
+/**
* Copyright(c) Live2D Inc. All rights reserved.
*
* Use of this source code is governed by the Live2D Open Software license
- * that can be found at http://live2d.com/eula/live2d-open-software-license-agreement_en.html.
+ * that can be found at https://www.live2d.com/eula/live2d-open-software-license-agreement_en.html.
*/
import {Live2DCubismFramework as csmmap} from "../type/csmmap";
@@ -16,14 +16,14 @@ export namespace Live2DCubismFramework
{
/**
* モデル座標設定用の4x4行列
- *
+ *
* モデル座標設定用の4x4行列クラス
*/
export class CubismModelMatrix extends CubismMatrix44
{
/**
* コンストラクタ
- *
+ *
* @param w 横幅
* @param h 縦幅
*/
@@ -31,27 +31,19 @@ export namespace Live2DCubismFramework
{
super();
- this._width = (w !== undefined)
+ this._width = (w !== undefined)
? w
: 0.0;
this._height = (h !== undefined)
? h
: 0.0;
- // 原点(0, 0)を中心にして、画面に納まるような大きさで初期化
- if (this._width > this._height)
- {
- this.setWidth(this._height / this._width);
- }
- else
- {
- this.setHeight(1.0);
- }
+ this.setHeight(1.0);
}
/**
* 横幅を設定
- *
+ *
* @param w 横幅
*/
public setWidth(w: number): void
@@ -74,7 +66,7 @@ export namespace Live2DCubismFramework
/**
* 位置を設定
- *
+ *
* @param x X軸の位置
* @param y Y軸の位置
*/
@@ -85,10 +77,10 @@ export namespace Live2DCubismFramework
/**
* 中心位置を設定
- *
+ *
* @param x X軸の中心位置
* @param y Y軸の中心位置
- *
+ *
* @note widthかheightを設定したあとでないと、拡大率が正しく取得できないためずれる。
*/
public setCenterPosition(x: number, y: number)
@@ -99,17 +91,17 @@ export namespace Live2DCubismFramework
/**
* 上辺の位置を設定する
- *
+ *
* @param y 上辺のY軸位置
*/
public top(y: number): void
{
this.setY(y);
}
-
+
/**
* 下辺の位置を設定する
- *
+ *
* @param y 下辺のY軸位置
*/
public bottom(y: number)
@@ -121,7 +113,7 @@ export namespace Live2DCubismFramework
/**
* 左辺の位置を設定
- *
+ *
* @param x 左辺のX軸位置
*/
public left(x: number): void
@@ -131,7 +123,7 @@ export namespace Live2DCubismFramework
/**
* 右辺の位置を設定
- *
+ *
* @param x 右辺のX軸位置
*/
public right(x: number): void
@@ -143,7 +135,7 @@ export namespace Live2DCubismFramework
/**
* X軸の中心位置を設定
- *
+ *
* @param x X軸の中心位置
*/
public centerX(x: number): void
@@ -155,7 +147,7 @@ export namespace Live2DCubismFramework
/**
* X軸の位置を設定
- *
+ *
* @param x X軸の位置
*/
public setX(x: number): void
@@ -165,7 +157,7 @@ export namespace Live2DCubismFramework
/**
* Y軸の中心位置を設定
- *
+ *
* @param y Y軸の中心位置
*/
public centerY(y: number): void
@@ -177,7 +169,7 @@ export namespace Live2DCubismFramework
/**
* Y軸の位置を設定する
- *
+ *
* @param y Y軸の位置
*/
public setY(y: number): void
@@ -187,7 +179,7 @@ export namespace Live2DCubismFramework
/**
* レイアウト情報から位置を設定
- *
+ *
* @param layout レイアウト情報
*/
public setupFromLayout(layout: csmMap): void
@@ -202,7 +194,7 @@ export namespace Live2DCubismFramework
const keyBottom = "bottom";
const keyLeft = "left";
const keyRight = "right";
-
+
for(const ite: iterator = layout.begin(); ite.notEqual(layout.end()); ite.preIncrement())
{
const key: string = ite.ptr().first;
@@ -261,4 +253,4 @@ export namespace Live2DCubismFramework
private _width: number; // 横幅
private _height: number; // 縦幅
}
-}
\ No newline at end of file
+}
diff --git a/Framework/math/cubismtargetpoint.ts b/Framework/math/cubismtargetpoint.ts
index 386831c..9043a39 100644
--- a/Framework/math/cubismtargetpoint.ts
+++ b/Framework/math/cubismtargetpoint.ts
@@ -1,8 +1,8 @@
-/*
+/**
* Copyright(c) Live2D Inc. All rights reserved.
*
* Use of this source code is governed by the Live2D Open Software license
- * that can be found at http://live2d.com/eula/live2d-open-software-license-agreement_en.html.
+ * that can be found at https://www.live2d.com/eula/live2d-open-software-license-agreement_en.html.
*/
import {Live2DCubismFramework as cubismmath} from "./cubismmath";
@@ -16,7 +16,7 @@ export namespace Live2DCubismFramework
/**
* 顔の向きの制御機能
- *
+ *
* 顔の向きの制御機能を提供するクラス。
*/
export class CubismTargetPoint
@@ -35,7 +35,7 @@ export namespace Live2DCubismFramework
this._lastTimeSeconds = 0.0;
this._userTimeSeconds = 0.0;
}
-
+
/**
* 更新処理
*/
@@ -48,7 +48,7 @@ export namespace Live2DCubismFramework
// 顔の振り具合を、中央(0.0)から、左右は(+-1.0)とする
const faceParamMaxV: number = 40.0 / 10.0; // 7.5秒間に40分移動(5.3/sc)
const maxV: number = faceParamMaxV * 1.0 / FrameRate; // 1frameあたりに変化できる速度の上限
-
+
if(this._lastTimeSeconds == 0.0)
{
this._lastTimeSeconds = this._userTimeSeconds;
@@ -113,7 +113,7 @@ export namespace Live2DCubismFramework
const maxV: number = 0.5 * (CubismMath.sqrt((maxA * maxA) + 16.0 * maxA * d - 8.0 * maxA * d) - maxA);
const curV: number = CubismMath.sqrt((this._faceVX * this._faceVX) + (this._faceVY * this._faceVY));
-
+
if(curV > maxV)
{
// 現在の速度 > 最高速度のとき、最高速度まで減速
@@ -128,7 +128,7 @@ export namespace Live2DCubismFramework
/**
* X軸の顔の向きの値を取得
- *
+ *
* @return X軸の顔の向きの値(-1.0 ~ 1.0)
*/
public getX(): number
@@ -138,7 +138,7 @@ export namespace Live2DCubismFramework
/**
* Y軸の顔の向きの値を取得
- *
+ *
* @return Y軸の顔の向きの値(-1.0 ~ 1.0)
*/
public getY(): number
@@ -148,7 +148,7 @@ export namespace Live2DCubismFramework
/**
* 顔の向きの目標値を設定
- *
+ *
* @param x X軸の顔の向きの値(-1.0 ~ 1.0)
* @param y Y軸の顔の向きの値(-1.0 ~ 1.0)
*/
@@ -169,4 +169,4 @@ export namespace Live2DCubismFramework
private _userTimeSeconds: number; // デルタ時間の積算値[秒]
}
-}
\ No newline at end of file
+}
diff --git a/Framework/math/cubismvector2.ts b/Framework/math/cubismvector2.ts
index e3c50a3..199a193 100644
--- a/Framework/math/cubismvector2.ts
+++ b/Framework/math/cubismvector2.ts
@@ -1,19 +1,19 @@
-/*
+/**
* Copyright(c) Live2D Inc. All rights reserved.
*
* Use of this source code is governed by the Live2D Open Software license
- * that can be found at http://live2d.com/eula/live2d-open-software-license-agreement_en.html.
+ * that can be found at https://www.live2d.com/eula/live2d-open-software-license-agreement_en.html.
*/
export namespace Live2DCubismFramework
{
/**
* 2次元ベクトル型
- *
+ *
* 2次元ベクトル型の機能を提供する。
*/
export class CubismVector2
- {
+ {
/**
* コンストラクタ
*/
@@ -22,15 +22,15 @@ export namespace Live2DCubismFramework
this.x = (x == undefined)
? 0.0
: x;
-
+
this.y = (y == undefined)
? 0.0
: y;
}
-
+
/**
* ベクトルの加算
- *
+ *
* @param vector2 加算するベクトル値
* @return 加算結果 ベクトル値
*/
@@ -41,10 +41,10 @@ export namespace Live2DCubismFramework
ret.y = this.y + vector2.y;
return ret;
}
-
+
/**
* ベクトルの減算
- *
+ *
* @param vector2 減算するベクトル値
* @return 減算結果 ベクトル値
*/
@@ -55,10 +55,10 @@ export namespace Live2DCubismFramework
ret.y = this.y - vector2.y;
return ret;
}
-
+
/**
* ベクトルの乗算
- *
+ *
* @param vector2 乗算するベクトル値
* @return 乗算結果 ベクトル値
*/
@@ -69,10 +69,10 @@ export namespace Live2DCubismFramework
ret.y = this.y * vector2.y;
return ret;
}
-
+
/**
* ベクトルの乗算(スカラー)
- *
+ *
* @param scalar 乗算するスカラー値
* @return 乗算結果 ベクトル値
*/
@@ -83,7 +83,7 @@ export namespace Live2DCubismFramework
/**
* ベクトルの除算
- *
+ *
* @param vector2 除算するベクトル値
* @return 除算結果 ベクトル値
*/
@@ -97,7 +97,7 @@ export namespace Live2DCubismFramework
/**
* ベクトルの除算(スカラー)
- *
+ *
* @param scalar 除算するスカラー値
* @return 除算結果 ベクトル値
*/
@@ -108,7 +108,7 @@ export namespace Live2DCubismFramework
/**
* ベクトルの長さを取得する
- *
+ *
* @return ベクトルの長さ
*/
public getLength(): number
@@ -118,7 +118,7 @@ export namespace Live2DCubismFramework
/**
* ベクトルの距離の取得
- *
+ *
* @param a 点
* @return ベクトルの距離
*/
@@ -129,7 +129,7 @@ export namespace Live2DCubismFramework
/**
* ドット積の計算
- *
+ *
* @param a 値
* @return 結果
*/
@@ -151,9 +151,9 @@ export namespace Live2DCubismFramework
/**
* 等しさの確認(等しいか?)
- *
+ *
* 値が等しいか?
- *
+ *
* @param rhs 確認する値
* @return true 値は等しい
* @return false 値は等しくない
@@ -165,9 +165,9 @@ export namespace Live2DCubismFramework
/**
* 等しさの確認(等しくないか?)
- *
+ *
* 値が等しくないか?
- *
+ *
* @param rhs 確認する値
* @return true 値は等しくない
* @return false 値は等しい
@@ -177,4 +177,4 @@ export namespace Live2DCubismFramework
return !(this.isEqual(rhs));
}
}
-}
\ No newline at end of file
+}
diff --git a/Framework/math/cubismviewmatrix.ts b/Framework/math/cubismviewmatrix.ts
index 8b882a6..aaa07ce 100644
--- a/Framework/math/cubismviewmatrix.ts
+++ b/Framework/math/cubismviewmatrix.ts
@@ -1,8 +1,8 @@
-/*
+/**
* Copyright(c) Live2D Inc. All rights reserved.
*
* Use of this source code is governed by the Live2D Open Software license
- * that can be found at http://live2d.com/eula/live2d-open-software-license-agreement_en.html.
+ * that can be found at https://www.live2d.com/eula/live2d-open-software-license-agreement_en.html.
*/
import {Live2DCubismFramework as cubismmatrix44} from "./cubismmatrix44";
@@ -12,12 +12,12 @@ export namespace Live2DCubismFramework
{
/**
* カメラの位置変更に使うと便利な4x4行列
- *
+ *
* カメラの位置変更に使うと便利な4x4行列のクラス。
*/
export class CubismViewMatrix extends CubismMatrix44
{
-
+
/**
* コンストラクタ
*/
@@ -38,7 +38,7 @@ export namespace Live2DCubismFramework
/**
* 移動を調整
- *
+ *
* @param x X軸の移動量
* @param y Y軸の移動量
*/
@@ -78,7 +78,7 @@ export namespace Live2DCubismFramework
/**
* 拡大率を調整
- *
+ *
* @param cx 拡大を行うX軸の中心位置
* @param cy 拡大を行うY軸の中心位置
* @param scale 拡大率
@@ -139,7 +139,7 @@ export namespace Live2DCubismFramework
/**
* デバイスに対応する論理座養生の範囲の設定
- *
+ *
* @param left 左辺のX軸の位置
* @param right 右辺のX軸の位置
* @param bottom 下辺のY軸の位置
@@ -206,7 +206,7 @@ export namespace Live2DCubismFramework
/**
* 拡大率が最大になっているかを確認する
- *
+ *
* @return true 拡大率は最大
* @return false 拡大率は最大ではない
*/
@@ -217,7 +217,7 @@ export namespace Live2DCubismFramework
/**
* 拡大率が最小になっているかを確認する
- *
+ *
* @return true 拡大率は最小
* @return false 拡大率は最小ではない
*/
@@ -309,4 +309,4 @@ export namespace Live2DCubismFramework
private _maxScale: number; // 拡大率の最大値
private _minScale: number; // 拡大率の最小値
}
-}
\ No newline at end of file
+}
diff --git a/Framework/model/cubismmoc.ts b/Framework/model/cubismmoc.ts
index e03baf5..8cbb03c 100644
--- a/Framework/model/cubismmoc.ts
+++ b/Framework/model/cubismmoc.ts
@@ -1,8 +1,8 @@
-/*
+/**
* Copyright(c) Live2D Inc. All rights reserved.
*
* Use of this source code is governed by the Live2D Open Software license
- * that can be found at http://live2d.com/eula/live2d-open-software-license-agreement_en.html.
+ * that can be found at https://www.live2d.com/eula/live2d-open-software-license-agreement_en.html.
*/
///
@@ -14,7 +14,7 @@ export namespace Live2DCubismFramework
{
/**
* Mocデータの管理
- *
+ *
* Mocデータの管理を行うクラス。
*/
export class CubismMoc
@@ -37,7 +37,7 @@ export namespace Live2DCubismFramework
/**
* Mocデータを削除
- *
+ *
* Mocデータを削除する
*/
public static delete(moc: CubismMoc): void
@@ -46,10 +46,10 @@ export namespace Live2DCubismFramework
moc._moc = null;
moc = null;
}
-
+
/**
* モデルを作成する
- *
+ *
* @return Mocデータから作成されたモデル
*/
createModel(): CubismModel
@@ -106,4 +106,4 @@ export namespace Live2DCubismFramework
_moc: Live2DCubismCore.Moc; ///< Mocデータ
_modelCount: number; ///< Mocデータから作られたモデルの個数
}
-}
\ No newline at end of file
+}
diff --git a/Framework/model/cubismmodel.ts b/Framework/model/cubismmodel.ts
index d6b9aed..86eec74 100644
--- a/Framework/model/cubismmodel.ts
+++ b/Framework/model/cubismmodel.ts
@@ -1,8 +1,8 @@
-/*
+/**
* Copyright(c) Live2D Inc. All rights reserved.
*
* Use of this source code is governed by the Live2D Open Software license
- * that can be found at http://live2d.com/eula/live2d-open-software-license-agreement_en.html.
+ * that can be found at https://www.live2d.com/eula/live2d-open-software-license-agreement_en.html.
*/
///
@@ -22,7 +22,7 @@ export namespace Live2DCubismFramework
{
/**
* モデル
- *
+ *
* Mocデータから生成されるモデルのクラス。
*/
export class CubismModel
@@ -47,7 +47,7 @@ export namespace Live2DCubismFramework
{
return 0.0;
}
-
+
return this._model.canvasinfo.CanvasWidth / this._model.canvasinfo.PixelsPerUnit;
}
@@ -121,7 +121,7 @@ export namespace Live2DCubismFramework
partIndex = partCount + this._notExistPartId.getSize();
this._notExistPartId.setValue(partId, partIndex);
this._notExistPartOpacities.appendKey(partIndex);
-
+
return partIndex;
}
@@ -297,7 +297,7 @@ export namespace Live2DCubismFramework
// インデックスの範囲内検知
CSM_ASSERT(0 <= parameterIndex && parameterIndex < this.getParameterCount());
-
+
return this._parameterValues[parameterIndex];
}
@@ -573,7 +573,7 @@ export namespace Live2DCubismFramework
return !Live2DCubismCore.Utils.hasIsDoubleSidedBit(constantFlags[drawableIndex]);
}
-
+
/**
* Drawableのブレンドモードを取得
* @param drawableIndex Drawableのインデックス
@@ -582,7 +582,7 @@ export namespace Live2DCubismFramework
public getDrawableBlendMode(drawableIndex: number): CubismBlendMode
{
const constantFlags = this._model.drawables.constantFlags;
-
+
return (Live2DCubismCore.Utils.hasBlendAdditiveBit(constantFlags[drawableIndex]))
? CubismBlendMode.CubismBlendMode_Additive
: (Live2DCubismCore.Utils.hasBlendMultiplicativeBit(constantFlags[drawableIndex]))
@@ -590,6 +590,22 @@ export namespace Live2DCubismFramework
: CubismBlendMode.CubismBlendMode_Normal;
}
+ /**
+ * Drawableのマスクの反転使用の取得
+ *
+ * Drawableのマスク使用時の反転設定を取得する。
+ * マスクを使用しない場合は無視される。
+ *
+ * @param drawableIndex Drawableのインデックス
+ * @return Drawableの反転設定
+ */
+ public getDrawableInvertedMaskBit(drawableIndex: number): boolean
+ {
+ const constantFlags: Uint8Array = this._model.drawables.constantFlags;
+
+ return (Live2DCubismCore.Utils.hasIsInvertedMaskBit(constantFlags[drawableIndex]));
+ }
+
/**
* Drawableのクリッピングマスクリストの取得
* @return Drawableのクリッピングマスクリスト
@@ -612,7 +628,7 @@ export namespace Live2DCubismFramework
/**
* クリッピングマスクの使用状態
- *
+ *
* @return true クリッピングマスクを使用している
* @return false クリッピングマスクを使用していない
*/
@@ -631,7 +647,7 @@ export namespace Live2DCubismFramework
/**
* Drawableの表示情報を取得する
- *
+ *
* @param drawableIndex Drawableのインデックス
* @return true Drawableが表示
* @return false Drawableが非表示
@@ -644,7 +660,7 @@ export namespace Live2DCubismFramework
/**
* DrawableのDrawOrderの変化情報の取得
- *
+ *
* 直近のCubismModel.update関数でdrawableのdrawOrderが変化したかを取得する。
* drawOrderはartMesh上で指定する0から1000の情報
* @param drawableIndex drawableのインデックス
@@ -659,9 +675,9 @@ export namespace Live2DCubismFramework
/**
* Drawableの不透明度の変化情報の取得
- *
+ *
* 直近のCubismModel.update関数でdrawableの不透明度が変化したかを取得する。
- *
+ *
* @param drawableIndex drawableのインデックス
* @return true Drawableの不透明度が直近のCubismModel.update関数で変化した
* @return false Drawableの不透明度が直近のCubismModel.update関数で変化してない
@@ -674,9 +690,9 @@ export namespace Live2DCubismFramework
/**
* Drawableの描画順序の変化情報の取得
- *
+ *
* 直近のCubismModel.update関数でDrawableの描画の順序が変化したかを取得する。
- *
+ *
* @param drawableIndex Drawableのインデックス
* @return true Drawableの描画の順序が直近のCubismModel.update関数で変化した
* @return false Drawableの描画の順序が直近のCubismModel.update関数で変化してない
@@ -803,4 +819,4 @@ export namespace Live2DCubismFramework
private _partIds: csmVector;
private _drawableIds: csmVector;
}
-}
\ No newline at end of file
+}
diff --git a/Framework/model/cubismmodeluserdata.ts b/Framework/model/cubismmodeluserdata.ts
index bd98846..405bc7e 100644
--- a/Framework/model/cubismmodeluserdata.ts
+++ b/Framework/model/cubismmodeluserdata.ts
@@ -1,9 +1,9 @@
-/*
-* Copyright(c) Live2D Inc. All rights reserved.
-*
-* Use of this source code is governed by the Live2D Open Software license
-* that can be found at http://live2d.com/eula/live2d-open-software-license-agreement_en.html.
-*/
+/**
+ * Copyright(c) Live2D Inc. All rights reserved.
+ *
+ * Use of this source code is governed by the Live2D Open Software license
+ * that can be found at https://www.live2d.com/eula/live2d-open-software-license-agreement_en.html.
+ */
import {Live2DCubismFramework as cubismmodeluserdatajson} from "./cubismmodeluserdatajson";
import {Live2DCubismFramework as cubismid} from "../id/cubismid";
@@ -22,7 +22,7 @@ export namespace Live2DCubismFramework
/**
* ユーザーデータインターフェース
- *
+ *
* Jsonから読み込んだユーザーデータを記録しておくための構造体
*/
export class CubismModelUserDataNode
@@ -34,14 +34,14 @@ export namespace Live2DCubismFramework
/**
* ユーザデータの管理クラス
- *
+ *
* ユーザデータをロード、管理、検索インターフェイス、解放までを行う。
*/
export class CubismModelUserData
{
/**
* インスタンスの作成
- *
+ *
* @param buffer userdata3.jsonが読み込まれているバッファ
* @param size バッファのサイズ
* @return 作成されたインスタンス
@@ -57,7 +57,7 @@ export namespace Live2DCubismFramework
/**
* インスタンスを破棄する
- *
+ *
* @param modelUserData 破棄するインスタンス
*/
public static delete(modelUserData: CubismModelUserData): void
@@ -71,7 +71,7 @@ export namespace Live2DCubismFramework
/**
* ArtMeshのユーザーデータのリストの取得
- *
+ *
* @return ユーザーデータリスト
*/
public getArtMeshUserDatas(): csmVector
@@ -81,7 +81,7 @@ export namespace Live2DCubismFramework
/**
* userdata3.jsonのパース
- *
+ *
* @param buffer userdata3.jsonが読み込まれているバッファ
* @param size バッファのサイズ
*/
@@ -106,7 +106,7 @@ export namespace Live2DCubismFramework
this._artMeshUserDataNode.pushBack(addNode);
}
}
-
+
json.release();
json = void 0;
}
@@ -122,7 +122,7 @@ export namespace Live2DCubismFramework
/**
* デストラクタ相当の処理
- *
+ *
* ユーザーデータ構造体配列を解放する
*/
public release(): void
@@ -138,4 +138,4 @@ export namespace Live2DCubismFramework
private _userDataNodes: csmVector; // ユーザーデータ構造体配列
private _artMeshUserDataNode: csmVector; // 閲覧リストの保持
}
-}
\ No newline at end of file
+}
diff --git a/Framework/model/cubismmodeluserdatajson.ts b/Framework/model/cubismmodeluserdatajson.ts
index a87950c..c01b08c 100644
--- a/Framework/model/cubismmodeluserdatajson.ts
+++ b/Framework/model/cubismmodeluserdatajson.ts
@@ -1,8 +1,8 @@
-/*
+/**
* Copyright(c) Live2D Inc. All rights reserved.
*
* Use of this source code is governed by the Live2D Open Software license
- * that can be found at http://live2d.com/eula/live2d-open-software-license-agreement_en.html.
+ * that can be found at https://www.live2d.com/eula/live2d-open-software-license-agreement_en.html.
*/
import {Live2DCubismFramework as cubismjson} from "../utils/cubismjson";
@@ -54,7 +54,7 @@ export namespace Live2DCubismFramework
/**
* ユーザーデータ総文字列数の取得
- *
+ *
* @return ユーザーデータ総文字列数
*/
public getTotalUserDataSize(): number
@@ -64,7 +64,7 @@ export namespace Live2DCubismFramework
/**
* ユーザーデータのタイプの取得
- *
+ *
* @return ユーザーデータのタイプ
*/
public getUserDataTargetType(i: number): string
@@ -74,7 +74,7 @@ export namespace Live2DCubismFramework
/**
* ユーザーデータのターゲットIDの取得
- *
+ *
* @param i インデックス
* @return ユーザーデータターゲットID
*/
@@ -85,7 +85,7 @@ export namespace Live2DCubismFramework
/**
* ユーザーデータの文字列の取得
- *
+ *
* @param i インデックス
* @return ユーザーデータ
*/
@@ -96,4 +96,4 @@ export namespace Live2DCubismFramework
private _json: CubismJson;
}
-}
\ No newline at end of file
+}
diff --git a/Framework/model/cubismusermodel.ts b/Framework/model/cubismusermodel.ts
index e3ba72a..25fabfe 100644
--- a/Framework/model/cubismusermodel.ts
+++ b/Framework/model/cubismusermodel.ts
@@ -1,8 +1,8 @@
-/*
+/**
* Copyright(c) Live2D Inc. All rights reserved.
*
* Use of this source code is governed by the Live2D Open Software license
- * that can be found at http://live2d.com/eula/live2d-open-software-license-agreement_en.html.
+ * that can be found at https://www.live2d.com/eula/live2d-open-software-license-agreement_en.html.
*/
import {Live2DCubismFramework as cubismframework} from "../live2dcubismframework";
@@ -22,7 +22,7 @@ import {Live2DCubismFramework as csmstring} from "../type/csmstring";
import {Live2DCubismFramework as cubismmotionqueuemanager} from "../motion/cubismmotionqueuemanager";
import {Live2DCubismFramework as cubismbreath} from "../effect/cubismbreath";
import {Live2DCubismFramework as cubismeyeblink} from "../effect/cubismeyeblink";
-import {Live2DCubismFramework as cubismrenderer_webgl} from "../rendering/cubismrenderer_WebGL";
+import {Live2DCubismFramework as cubismrenderer_webgl} from "../rendering/cubismrenderer_webgl";
import {CubismLogError, CubismLogInfo} from "../utils/cubismdebug";
import CubismRenderer_WebGL = cubismrenderer_webgl.CubismRenderer_WebGL;
import CubismEyeBlink = cubismeyeblink.CubismEyeBlink;
@@ -47,16 +47,16 @@ export namespace Live2DCubismFramework
{
/**
* ユーザーが実際に使用するモデル
- *
+ *
* ユーザーが実際に使用するモデルの基底クラス。これを継承してユーザーが実装する。
*/
export class CubismUserModel
{
/**
* 初期化状態の取得
- *
+ *
* 初期化されている状態か?
- *
+ *
* @return true 初期化されている
* @return false 初期化されていない
*/
@@ -67,9 +67,9 @@ export namespace Live2DCubismFramework
/**
* 初期化状態の設定
- *
+ *
* 初期化状態を設定する。
- *
+ *
* @param v 初期化状態
*/
public setInitialized(v: boolean): void
@@ -79,9 +79,9 @@ export namespace Live2DCubismFramework
/**
* 更新状態の取得
- *
+ *
* 更新されている状態か?
- *
+ *
* @return true 更新されている
* @return false 更新されていない
*/
@@ -92,9 +92,9 @@ export namespace Live2DCubismFramework
/**
* 更新状態の設定
- *
+ *
* 更新状態を設定する
- *
+ *
* @param v 更新状態
*/
public setUpdating(v: boolean): void
@@ -154,7 +154,7 @@ export namespace Live2DCubismFramework
/**
* モデルデータを読み込む
- *
+ *
* @param buffer moc3ファイルが読み込まれているバッファ
*/
public loadModel(buffer: ArrayBuffer)
@@ -241,7 +241,7 @@ export namespace Live2DCubismFramework
{
return false; // 存在しない場合はfalse
}
-
+
const count: number = this._model.getDrawableVertexCount(drawIndex);
const vertices: Float32Array = this._model.getDrawableVertices(drawIndex);
@@ -259,7 +259,7 @@ export namespace Live2DCubismFramework
{
left = x; // Min x
}
-
+
if(x > right)
{
right = x; // Max x
@@ -328,11 +328,11 @@ export namespace Live2DCubismFramework
/**
* イベント発火時の標準処理
- *
+ *
* Eventが再生処理時にあった場合の処理をする。
* 継承で上書きすることを想定している。
* 上書きしない場合はログ出力をする。
- *
+ *
* @param eventValue 発火したイベントの文字列データ
*/
public motionEventFired(eventValue: csmString): void
@@ -342,10 +342,10 @@ export namespace Live2DCubismFramework
/**
* イベント用のコールバック
- *
+ *
* CubismMotionQueueManagerにイベント用に登録するためのCallback。
* CubismUserModelの継承先のEventFiredを呼ぶ。
- *
+ *
* @param caller 発火したイベントを管理していたモーションマネージャー、比較用
* @param eventValue 発火したイベントの文字列データ
* @param customData CubismUserModelを継承したインスタンスを想定
@@ -417,22 +417,22 @@ export namespace Live2DCubismFramework
this._expressionManager.release();
this._expressionManager = null;
}
-
+
if(this._moc != null)
{
this._moc.deleteModel(this._model);
this._moc.release();
this._moc = null;
}
-
+
this._modelMatrix = null;
CubismPose.delete(this._pose);
CubismEyeBlink.delete(this._eyeBlink);
CubismBreath.delete(this._breath);
-
+
this._dragManager = null;
-
+
CubismPhysics.delete(this._physics);
CubismModelUserData.delete(this._modelUserData);
@@ -441,7 +441,7 @@ export namespace Live2DCubismFramework
protected _moc: CubismMoc; // Mocデータ
protected _model: CubismModel; // Modelインスタンス
-
+
protected _motionManager: CubismMotionManager; // モーション管理
protected _expressionManager: CubismMotionManager; // 表情管理
protected _eyeBlink: CubismEyeBlink; // 自動まばたき
@@ -451,7 +451,7 @@ export namespace Live2DCubismFramework
protected _dragManager: CubismTargetPoint; // マウスドラッグ
protected _physics: CubismPhysics; // 物理演算
protected _modelUserData: CubismModelUserData; // ユーザーデータ
-
+
protected _initialized: boolean; // 初期化されたかどうか
protected _updating: boolean; // 更新されたかどうか
protected _opacity: number; // 不透明度
@@ -467,4 +467,4 @@ export namespace Live2DCubismFramework
private _renderer: CubismRenderer_WebGL; // レンダラ
}
-}
\ No newline at end of file
+}
diff --git a/Framework/motion/acubismmotion.ts b/Framework/motion/acubismmotion.ts
index 515d0d1..5dd14b1 100644
--- a/Framework/motion/acubismmotion.ts
+++ b/Framework/motion/acubismmotion.ts
@@ -1,8 +1,8 @@
-/*
+/**
* Copyright(c) Live2D Inc. All rights reserved.
*
* Use of this source code is governed by the Live2D Open Software license
- * that can be found at http://live2d.com/eula/live2d-open-software-license-agreement_en.html.
+ * that can be found at https://www.live2d.com/eula/live2d-open-software-license-agreement_en.html.
*/
import {Live2DCubismFramework as cubismmath} from '../math/cubismmath';
@@ -21,7 +21,7 @@ export namespace Live2DCubismFramework
{
/**
* モーションの抽象基底クラス
- *
+ *
* モーションの抽象基底クラス。MotionQueueManagerによってモーションの再生を管理する。
*/
export abstract class ACubismMotion
@@ -171,7 +171,7 @@ export namespace Live2DCubismFramework
/**
* モーションの長さの取得
* @return モーションの長さ[秒]
- *
+ *
* @note ループの時は「-1」。
* ループでない場合は、オーバーライドする。
* 正の値の時は取得される時間で終了する。
@@ -185,7 +185,7 @@ export namespace Live2DCubismFramework
/**
* モーションのループ1回分の長さの取得
* @return モーションのループ一回分の長さ[秒]
- *
+ *
* @note ループしない場合は、getDuration()と同じ値を返す
* ループ一回分の長さが定義できない場合(プログラム的に動き続けるサブクラスなど)の場合は「-1」を返す
*/
@@ -205,10 +205,10 @@ export namespace Live2DCubismFramework
/**
* モデルのパラメータ更新
- *
+ *
* イベント発火のチェック。
* 入力する時間は呼ばれるモーションタイミングを0とした秒数で行う。
- *
+ *
* @param beforeCheckTimeSeconds 前回のイベントチェック時間[秒]
* @param motionTimeSeconds 今回の再生時間[秒]
*/
@@ -236,4 +236,4 @@ export namespace Live2DCubismFramework
public _firedEventValues: csmVector;
}
-}
\ No newline at end of file
+}
diff --git a/Framework/motion/cubismexpressionmotion.ts b/Framework/motion/cubismexpressionmotion.ts
index 0d8d583..3af54ac 100644
--- a/Framework/motion/cubismexpressionmotion.ts
+++ b/Framework/motion/cubismexpressionmotion.ts
@@ -1,8 +1,8 @@
-/*
+/**
* Copyright(c) Live2D Inc. All rights reserved.
*
* Use of this source code is governed by the Live2D Open Software license
- * that can be found at http://live2d.com/eula/live2d-open-software-license-agreement_en.html.
+ * that can be found at https://www.live2d.com/eula/live2d-open-software-license-agreement_en.html.
*/
import {Live2DCubismFramework as acubismmotion} from './acubismmotion';
@@ -38,7 +38,7 @@ export namespace Live2DCubismFramework
/**
* 表情のモーション
- *
+ *
* 表情のモーションクラス。
*/
export class CubismExpressionMotion extends ACubismMotion
@@ -55,7 +55,7 @@ export namespace Live2DCubismFramework
let json: CubismJson = CubismJson.create(buffer, size);
let root: Value = json.getRoot();
-
+
expression.setFadeInTime(root.getValueByString(ExpressionKeyFadeIn).toFloat(DefaultFadeTime)); // フェードイン
expression.setFadeOutTime(root.getValueByString(ExpressionKeyFadeOut).toFloat(DefaultFadeTime)); // フェードアウト
@@ -174,4 +174,4 @@ export namespace Live2DCubismFramework
blendType: ExpressionBlendType; // パラメータの演算種類
value: number; // 値
}
-}
\ No newline at end of file
+}
diff --git a/Framework/motion/cubismmotion.ts b/Framework/motion/cubismmotion.ts
index a5322c4..5e97638 100644
--- a/Framework/motion/cubismmotion.ts
+++ b/Framework/motion/cubismmotion.ts
@@ -1,8 +1,8 @@
-/*
+/**
* Copyright(c) Live2D Inc. All rights reserved.
*
* Use of this source code is governed by the Live2D Open Software license
- * that can be found at http://live2d.com/eula/live2d-open-software-license-agreement_en.html.
+ * that can be found at https://www.live2d.com/eula/live2d-open-software-license-agreement_en.html.
*/
import {Live2DCubismFramework as cubismmotionjson} from './cubismmotionjson';
@@ -59,7 +59,7 @@ export namespace Live2DCubismFramework
{
t = 0.0;
}
-
+
return points[0].value + ((points[1].value - points[0].value) * t);
}
@@ -75,10 +75,10 @@ export namespace Live2DCubismFramework
const p01: CubismMotionPoint = lerpPoints(points[0], points[1], t);
const p12: CubismMotionPoint = lerpPoints(points[1], points[2], t);
const p23: CubismMotionPoint = lerpPoints(points[2], points[3], t);
-
+
const p012: CubismMotionPoint = lerpPoints(p01, p12, t);
const p123: CubismMotionPoint = lerpPoints(p12, p23, t);
-
+
return lerpPoints(p012, p123, t).value;
}
@@ -91,7 +91,7 @@ export namespace Live2DCubismFramework
{
return points[1].value;
}
-
+
function evaluateCurve(motionData: CubismMotionData, index: number, time: number): number
{
// Find segment to evaluate.
@@ -131,14 +131,14 @@ export namespace Live2DCubismFramework
/**
* モーションクラス
- *
+ *
* モーションのクラス。
*/
export class CubismMotion extends ACubismMotion
{
/**
* インスタンスを作成する
- *
+ *
* @param buffer motion3.jsonが読み込まれているバッファ
* @param size バッファのサイズ
* @return 作成されたインスタンス
@@ -150,7 +150,7 @@ export namespace Live2DCubismFramework
ret.parse(buffer, size);
ret._sourceFrameRate = ret._motionData.fps;
ret._loopDurationSeconds = ret._motionData.duration;
-
+
// NOTE: Editorではループありのモーション書き出しは非対応
// ret->_loop = (ret->_motionData->Loop > 0);
return ret;
@@ -184,7 +184,7 @@ export namespace Live2DCubismFramework
let lipSyncValue: number = Number.MAX_VALUE;
let eyeBlinkValue: number = Number.MAX_VALUE;
-
+
//まばたき、リップシンクのうちモーションの適用を検出するためのビット(maxFlagCount個まで
const MaxTargetSize = 64;
let lipSyncFlags = 0;
@@ -228,7 +228,7 @@ export namespace Live2DCubismFramework
{
// Evaluate curve and call handler.
value = evaluateCurve(this._motionData, c, time);
-
+
if (curves.at(c).id == this._modelCurveIdEyeBlink)
{
eyeBlinkValue = value;
@@ -247,13 +247,13 @@ export namespace Live2DCubismFramework
// Find parameter index.
parameterIndex = model.getParameterIndex(curves.at(c).id);
-
+
// Skip curve evaluation if no value in sink.
if (parameterIndex == -1)
{
continue;
}
-
+
const sourceValue: number = model.getParameterValueByIndex(parameterIndex);
// Evaluate curve and apply value.
@@ -592,13 +592,13 @@ export namespace Live2DCubismFramework
this._motionData = new CubismMotionData();
let json: CubismMotionJson = new CubismMotionJson(motionJson, size);
-
+
this._motionData.duration = json.getMotionDuration();
this._motionData.loop = json.isMotionLoop();
this._motionData.curveCount = json.getMotionCurveCount();
this._motionData.fps = json.getMotionFps();
this._motionData.eventCount = json.getEventCount();
-
+
if (json.isExistMotionFadeInTime())
{
this._fadeInSeconds = (json.getMotionFadeInTime() < 0.0)
@@ -625,10 +625,10 @@ export namespace Live2DCubismFramework
this._motionData.segments.updateSize(json.getMotionTotalSegmentCount(), CubismMotionSegment, true);
this._motionData.points.updateSize(json.getMotionTotalPointCount(), CubismMotionPoint, true);
this._motionData.events.updateSize(this._motionData.eventCount, CubismMotionEvent, true);
-
+
let totalPointCount: number = 0;
let totalSegmentCount: number = 0;
-
+
// Curves
for (let curveCount: number = 0; curveCount < this._motionData.curveCount; ++curveCount)
{
@@ -648,7 +648,7 @@ export namespace Live2DCubismFramework
this._motionData.curves.at(curveCount).id = json.getMotionCurveId(curveCount);
this._motionData.curves.at(curveCount).baseSegmentIndex = totalSegmentCount;
-
+
this._motionData.curves.at(curveCount).fadeInTime =
(json.isExistMotionCurveFadeInTime(curveCount))
? json.getMotionCurveFadeInTime(curveCount)
@@ -664,10 +664,10 @@ export namespace Live2DCubismFramework
if (segmentPosition == 0)
{
this._motionData.segments.at(totalSegmentCount).basePointIndex = totalPointCount;
-
+
this._motionData.points.at(totalPointCount).time = json.getMotionCurveSegment(curveCount, segmentPosition);
this._motionData.points.at(totalPointCount).value = json.getMotionCurveSegment(curveCount, segmentPosition + 1);
-
+
totalPointCount += 1;
segmentPosition += 2;
}
@@ -679,24 +679,24 @@ export namespace Live2DCubismFramework
const segment: number = json.getMotionCurveSegment(curveCount, segmentPosition);
switch (segment)
{
- case CubismMotionSegmentType.CubismMotionSegmentType_Linear:
+ case CubismMotionSegmentType.CubismMotionSegmentType_Linear:
{
this._motionData.segments.at(totalSegmentCount).segmentType = CubismMotionSegmentType.CubismMotionSegmentType_Linear;
this._motionData.segments.at(totalSegmentCount).evaluate = linearEvaluate;
-
+
this._motionData.points.at(totalPointCount).time = json.getMotionCurveSegment(curveCount, (segmentPosition + 1));
this._motionData.points.at(totalPointCount).value = json.getMotionCurveSegment(curveCount, (segmentPosition + 2));
-
+
totalPointCount += 1;
segmentPosition += 3;
-
+
break;
}
- case CubismMotionSegmentType.CubismMotionSegmentType_Bezier:
+ case CubismMotionSegmentType.CubismMotionSegmentType_Bezier:
{
this._motionData.segments.at(totalSegmentCount).segmentType = CubismMotionSegmentType.CubismMotionSegmentType_Bezier;
this._motionData.segments.at(totalSegmentCount).evaluate = bezierEvaluate;
-
+
this._motionData.points.at(totalPointCount).time = json.getMotionCurveSegment(curveCount, (segmentPosition + 1));
this._motionData.points.at(totalPointCount).value = json.getMotionCurveSegment(curveCount, (segmentPosition + 2));
@@ -705,38 +705,38 @@ export namespace Live2DCubismFramework
this._motionData.points.at(totalPointCount + 2).time = json.getMotionCurveSegment(curveCount, (segmentPosition + 5));
this._motionData.points.at(totalPointCount + 2).value = json.getMotionCurveSegment(curveCount, (segmentPosition + 6));
-
+
totalPointCount += 3;
segmentPosition += 7;
-
+
break;
}
- case CubismMotionSegmentType.CubismMotionSegmentType_Stepped:
+ case CubismMotionSegmentType.CubismMotionSegmentType_Stepped:
{
this._motionData.segments.at(totalSegmentCount).segmentType = CubismMotionSegmentType.CubismMotionSegmentType_Stepped;
this._motionData.segments.at(totalSegmentCount).evaluate = steppedEvaluate;
this._motionData.points.at(totalPointCount).time = json.getMotionCurveSegment(curveCount, (segmentPosition + 1));
this._motionData.points.at(totalPointCount).value = json.getMotionCurveSegment(curveCount, (segmentPosition + 2));
-
+
totalPointCount += 1;
segmentPosition += 3;
break;
}
- case CubismMotionSegmentType.CubismMotionSegmentType_InverseStepped:
+ case CubismMotionSegmentType.CubismMotionSegmentType_InverseStepped:
{
this._motionData.segments.at(totalSegmentCount).segmentType = CubismMotionSegmentType.CubismMotionSegmentType_InverseStepped;
this._motionData.segments.at(totalSegmentCount).evaluate = inverseSteppedEvaluate;
this._motionData.points.at(totalPointCount).time = json.getMotionCurveSegment(curveCount, (segmentPosition + 1));
this._motionData.points.at(totalPointCount).value = json.getMotionCurveSegment(curveCount, (segmentPosition + 2));
-
+
totalPointCount += 1;
segmentPosition += 3;
-
+
break;
}
default:
@@ -756,7 +756,7 @@ export namespace Live2DCubismFramework
this._motionData.events.at(userdatacount).fireTime = json.getEventTime(userdatacount);
this._motionData.events.at(userdatacount).value = json.getEventValue(userdatacount);
}
-
+
json.release();
json = void 0;
json = null;
@@ -774,7 +774,7 @@ export namespace Live2DCubismFramework
public getFiredEvent(beforeCheckTimeSeconds: number, motionTimeSeconds: number): csmVector
{
this._firedEventValues.updateSize(0);
-
+
// イベントの発火チェック
for (let u: number = 0; u < this._motionData.eventCount; ++u)
{
@@ -795,11 +795,11 @@ export namespace Live2DCubismFramework
public _lastWeight: number; // 最後に設定された重み
public _motionData: CubismMotionData; // 実際のモーションデータ本体
-
+
public _eyeBlinkParameterIds: csmVector; // 自動まばたきを適用するパラメータIDハンドルのリスト。 モデル(モデルセッティング)とパラメータを対応付ける。
public _lipSyncParameterIds: csmVector; // リップシンクを適用するパラメータIDハンドルのリスト。 モデル(モデルセッティング)とパラメータを対応付ける。
-
+
public _modelCurveIdEyeBlink: CubismIdHandle; // モデルが持つ自動まばたき用パラメータIDのハンドル。 モデルとモーションを対応付ける。
public _modelCurveIdLipSync: CubismIdHandle; // モデルが持つリップシンク用パラメータIDのハンドル。 モデルとモーションを対応付ける。
}
-}
\ No newline at end of file
+}
diff --git a/Framework/motion/cubismmotioninternal.ts b/Framework/motion/cubismmotioninternal.ts
index 78cd828..284ee04 100644
--- a/Framework/motion/cubismmotioninternal.ts
+++ b/Framework/motion/cubismmotioninternal.ts
@@ -1,8 +1,8 @@
-/*
+/**
* Copyright(c) Live2D Inc. All rights reserved.
*
* Use of this source code is governed by the Live2D Open Software license
- * that can be found at http://live2d.com/eula/live2d-open-software-license-agreement_en.html.
+ * that can be found at https://www.live2d.com/eula/live2d-open-software-license-agreement_en.html.
*/
import {Live2DCubismFramework as cubismid} from '../id/cubismid';
@@ -16,7 +16,7 @@ export namespace Live2DCubismFramework
{
/**
* @brief モーションカーブの種類
- *
+ *
* モーションカーブの種類。
*/
export enum CubismMotionCurveTarget
@@ -29,7 +29,7 @@ export namespace Live2DCubismFramework
/**
* @brief モーションカーブのセグメントの種類
- *
+ *
* モーションカーブのセグメントの種類。
*/
export enum CubismMotionSegmentType
@@ -42,7 +42,7 @@ export namespace Live2DCubismFramework
/**
* @brief モーションカーブの制御点
- *
+ *
* モーションカーブの制御点。
*/
export class CubismMotionPoint
@@ -54,7 +54,7 @@ export namespace Live2DCubismFramework
/**
* モーションカーブのセグメントの評価関数
- *
+ *
* @param points モーションカーブの制御点リスト
* @param time 評価する時間[秒]
*/
@@ -68,14 +68,14 @@ export namespace Live2DCubismFramework
/**
* @brief モーションカーブのセグメント
- *
+ *
* モーションカーブのセグメント。
*/
export class CubismMotionSegment
{
/**
* @brief コンストラクタ
- *
+ *
* コンストラクタ。
*/
public constructor()
@@ -92,7 +92,7 @@ export namespace Live2DCubismFramework
/**
* @brief モーションカーブ
- *
+ *
* モーションカーブ。
*/
export class CubismMotionCurve
@@ -125,7 +125,7 @@ export namespace Live2DCubismFramework
/**
* @brief モーションデータ
- *
+ *
* モーションデータ。
*/
export class CubismMotionData
@@ -154,4 +154,4 @@ export namespace Live2DCubismFramework
points: csmVector; // ポイントのリスト
events: csmVector; // イベントのリスト
};
-}
\ No newline at end of file
+}
diff --git a/Framework/motion/cubismmotionjson.ts b/Framework/motion/cubismmotionjson.ts
index dfd2de4..950434b 100644
--- a/Framework/motion/cubismmotionjson.ts
+++ b/Framework/motion/cubismmotionjson.ts
@@ -1,8 +1,8 @@
-/*
+/**
* Copyright(c) Live2D Inc. All rights reserved.
*
* Use of this source code is governed by the Live2D Open Software license
- * that can be found at http://live2d.com/eula/live2d-open-software-license-agreement_en.html.
+ * that can be found at https://www.live2d.com/eula/live2d-open-software-license-agreement_en.html.
*/
import {Live2DCubismFramework as cubismjson} from '../utils/cubismjson';
@@ -104,7 +104,7 @@ export namespace Live2DCubismFramework
{
return this._json.getRoot().getValueByString(Meta).getValueByString(TotalSegmentCount).toInt();
}
-
+
/**
* モーションのカーブの制御店の総合計の取得
* @return モーションのカーブの制御点の総合計
@@ -275,4 +275,4 @@ export namespace Live2DCubismFramework
_json: CubismJson; // motion3.jsonのデータ
}
-}
\ No newline at end of file
+}
diff --git a/Framework/motion/cubismmotionmanager.ts b/Framework/motion/cubismmotionmanager.ts
index 9870fe8..474bcd4 100644
--- a/Framework/motion/cubismmotionmanager.ts
+++ b/Framework/motion/cubismmotionmanager.ts
@@ -1,8 +1,8 @@
-/*
+/**
* Copyright(c) Live2D Inc. All rights reserved.
*
* Use of this source code is governed by the Live2D Open Software license
- * that can be found at http://live2d.com/eula/live2d-open-software-license-agreement_en.html.
+ * that can be found at https://www.live2d.com/eula/live2d-open-software-license-agreement_en.html.
*/
import {Live2DCubismFramework as cubismmotionqueuemanager} from "./cubismmotionqueuemanager";
@@ -17,7 +17,7 @@ export namespace Live2DCubismFramework
{
/**
* モーションの管理
- *
+ *
* モーションの管理を行うクラス
*/
export class CubismMotionManager extends CubismMotionQueueManager
@@ -92,7 +92,7 @@ export namespace Live2DCubismFramework
this._userTimeSeconds += deltaTimeSeconds;
const updated: boolean = super.doUpdateMotion(model, this._userTimeSeconds);
-
+
if(this.isFinished())
{
this._currentPriority = 0; // 再生中のモーションの優先度を解除
@@ -123,5 +123,5 @@ export namespace Live2DCubismFramework
_currentPriority: number; // 現在再生中のモーションの優先度
_reservePriority: number; // 再生予定のモーションの優先度。再生中は0になる。モーションファイルを別スレッドで読み込むときの機能。
}
-
-}
\ No newline at end of file
+
+}
diff --git a/Framework/motion/cubismmotionqueueentry.ts b/Framework/motion/cubismmotionqueueentry.ts
index f80b75c..6972697 100644
--- a/Framework/motion/cubismmotionqueueentry.ts
+++ b/Framework/motion/cubismmotionqueueentry.ts
@@ -1,8 +1,8 @@
-/*
+/**
* Copyright(c) Live2D Inc. All rights reserved.
*
* Use of this source code is governed by the Live2D Open Software license
- * that can be found at http://live2d.com/eula/live2d-open-software-license-agreement_en.html.
+ * that can be found at https://www.live2d.com/eula/live2d-open-software-license-agreement_en.html.
*/
import {Live2DCubismFramework as acubismmotion} from './acubismmotion';
@@ -64,7 +64,7 @@ export namespace Live2DCubismFramework
/**
* モーションの終了の確認
- *
+ *
* @return true モーションが終了した
* @return false 終了していない
*/
@@ -184,7 +184,7 @@ export namespace Live2DCubismFramework
this._stateTimeSeconds = timeSeconds;
this._stateWeight = weight;
}
-
+
/**
* モーションの現在時刻の取得
* @return モーションの現在時刻[秒]
@@ -205,7 +205,7 @@ export namespace Live2DCubismFramework
/**
* 最後にイベントの発火をチェックした時間を取得
- *
+ *
* @return 最後にイベントの発火をチェックした時間[秒]
*/
public getLastCheckEventTime(): number
@@ -237,4 +237,4 @@ export namespace Live2DCubismFramework
_motionQueueEntryHandle: CubismMotionQueueEntryHandle; // インスタンスごとに一意の値を持つ識別番号
}
-}
\ No newline at end of file
+}
diff --git a/Framework/motion/cubismmotionqueuemanager.ts b/Framework/motion/cubismmotionqueuemanager.ts
index e4ce842..25d8f70 100644
--- a/Framework/motion/cubismmotionqueuemanager.ts
+++ b/Framework/motion/cubismmotionqueuemanager.ts
@@ -1,8 +1,8 @@
-/*
+/**
* Copyright(c) Live2D Inc. All rights reserved.
*
* Use of this source code is governed by the Live2D Open Software license
- * that can be found at http://live2d.com/eula/live2d-open-software-license-agreement_en.html.
+ * that can be found at https://www.live2d.com/eula/live2d-open-software-license-agreement_en.html.
*/
import {Live2DCubismFramework as acubismmotion} from './acubismmotion';
@@ -216,7 +216,7 @@ export namespace Live2DCubismFramework
{
continue;
}
-
+
if(motionQueueEntry._motionQueueEntryHandle == motionQueueEntryNumber)
{
return motionQueueEntry;
@@ -228,7 +228,7 @@ export namespace Live2DCubismFramework
/**
* イベントを受け取るCallbackの登録
- *
+ *
* @param callback コールバック関数
* @param customData コールバックに返されるデータ
*/
@@ -281,7 +281,7 @@ export namespace Live2DCubismFramework
// ------ ユーザトリガーイベントを検査する ----
const firedList: csmVector = motion.getFiredEvent(
- motionQueueEntry.getLastCheckEventTime() - motionQueueEntry.getStartTime(),
+ motionQueueEntry.getLastCheckEventTime() - motionQueueEntry.getStartTime(),
userTimeSeconds - motionQueueEntry.getStartTime()
);
@@ -318,7 +318,7 @@ export namespace Live2DCubismFramework
/**
* イベントのコールバック関数を定義
- *
+ *
* イベントのコールバックに登録できる関数の型情報
* @param caller 発火したイベントを再生させたCubismMotionQueueManager
* @param eventValue 発火したイベントの文字列データ
@@ -335,9 +335,9 @@ export namespace Live2DCubismFramework
/**
* モーションの識別番号
- *
+ *
* モーションの識別番号の定義
*/
export declare type CubismMotionQueueEntryHandle = any;
export const InvalidMotionQueueEntryHandleValue: CubismMotionQueueEntryHandle = -1;
-}
\ No newline at end of file
+}
diff --git a/Framework/physics/cubismphysics.ts b/Framework/physics/cubismphysics.ts
index f295c4b..7838120 100644
--- a/Framework/physics/cubismphysics.ts
+++ b/Framework/physics/cubismphysics.ts
@@ -1,8 +1,8 @@
-/*
+/**
* Copyright(c) Live2D Inc. All rights reserved.
*
* Use of this source code is governed by the Live2D Open Software license
- * that can be found at http://live2d.com/eula/live2d-open-software-license-agreement_en.html.
+ * that can be found at https://www.live2d.com/eula/live2d-open-software-license-agreement_en.html.
*/
import {Live2DCubismFramework as cubismphysicsinternal} from './cubismphysicsinternal';
@@ -30,13 +30,13 @@ export namespace Live2DCubismFramework
const PhysicsTypeTagX: string = "X";
const PhysicsTypeTagY: string = "Y";
const PhysicsTypeTagAngle: string = "Angle";
-
+
/// Constant of air resistance.
const AirResistance: number = 5.0;
-
+
/// Constant of maximum weight of input and output ratio.
const MaximumWeight: number = 100.0;
-
+
/// Constant of threshold of movement.
const MovementThreshold: number = 0.001;
@@ -90,7 +90,7 @@ export namespace Live2DCubismFramework
let currentInput: CubismPhysicsInput[];
let currentOutput: CubismPhysicsOutput[];
let currentParticles: CubismPhysicsParticle[];
-
+
let parameterValue: Float32Array;
let parameterMaximumValue: Float32Array;
let parameterMinimumValue: Float32Array;
@@ -139,7 +139,7 @@ export namespace Live2DCubismFramework
totalTranslation.x = (totalTranslation.x * CubismMath.cos(radAngle) - totalTranslation.y * CubismMath.sin(radAngle));
totalTranslation.y = (totalTranslation.x * CubismMath.sin(radAngle) + totalTranslation.y * CubismMath.cos(radAngle));
-
+
// Calculate particles position.
updateParticles(
currentParticles,
@@ -251,7 +251,7 @@ export namespace Live2DCubismFramework
public parse(physicsJson: ArrayBuffer, size: number): void
{
this._physicsRig = new CubismPhysicsRig();
-
+
let json: CubismPhysicsJson = new CubismPhysicsJson(physicsJson, size);
this._physicsRig.gravity = json.getGravity();
@@ -278,7 +278,7 @@ export namespace Live2DCubismFramework
// Input
this._physicsRig.settings.at(i).inputCount = json.getInputCount(i);
this._physicsRig.settings.at(i).baseInputIndex = inputIndex;
-
+
for(let j: number = 0; j < this._physicsRig.settings.at(i).inputCount; ++j)
{
this._physicsRig.inputs.at(inputIndex + j).sourceParameterIndex = -1;
@@ -379,7 +379,7 @@ export namespace Live2DCubismFramework
{
currentSetting = this._physicsRig.settings.at(settingIndex);
strand = this._physicsRig.particles.get(currentSetting.baseParticleIndex);
-
+
// Initialize the top of particle.
strand[0].initialPosition = new CubismVector2(0.0, 0.0);
strand[0].lastPosition = new CubismVector2(strand[0].initialPosition.x, strand[0].initialPosition.y);
@@ -387,7 +387,7 @@ export namespace Live2DCubismFramework
strand[0].lastGravity.y *= -1.0;
strand[0].velocity = new CubismVector2(0.0, 0.0);
strand[0].force = new CubismVector2(0.0, 0.0);
-
+
// Initialize paritcles.
for (let i: number = 1; i < currentSetting.particleCount; ++i)
{
@@ -425,9 +425,9 @@ export namespace Live2DCubismFramework
/**
* Gets sign.
- *
+ *
* @param value Evaluation target value.
- *
+ *
* @return Sign of value.
*/
function sign(value: number): number
@@ -611,7 +611,7 @@ export namespace Live2DCubismFramework
/**
* Updates particles.
- *
+ *
* @param strand Target array of particle.
* @param strandCount Count of particle.
* @param totalTranslation Total translation value.
@@ -684,11 +684,11 @@ export namespace Live2DCubismFramework
strand[i].velocity = strand[i].velocity.divisionByScalar(delay);
strand[i].velocity = strand[i].velocity.multiplyByScaler(strand[i].mobility);
}
-
+
strand[i].force = new CubismVector2(0.0, 0.0);
strand[i].lastGravity = new CubismVector2(currentGravity.x, currentGravity.y);
}
-
+
}
/**
@@ -708,9 +708,9 @@ export namespace Live2DCubismFramework
let outputScale: number;
let value: number;
let weight: number;
-
+
outputScale = output.getScale(output.translationScale, output.angleScale);
-
+
value = translation * outputScale;
if (value < parameterValueMinimum)
@@ -719,7 +719,7 @@ export namespace Live2DCubismFramework
{
output.valueBelowMinimum = value;
}
-
+
value = parameterValueMinimum;
}
else if (value > parameterValueMaximum)
@@ -728,7 +728,7 @@ export namespace Live2DCubismFramework
{
output.valueExceededMaximum = value;
}
-
+
value = parameterValueMaximum;
}
@@ -798,7 +798,7 @@ export namespace Live2DCubismFramework
{
const nLength: number = minNormValue - middleNormValue;
const pLength: number = minValue - middleValue;
-
+
if(pLength != 0.0)
{
result = paramValue * (nLength / pLength);
@@ -823,4 +823,4 @@ export namespace Live2DCubismFramework
? result
: (result * -1.0);
}
-}
\ No newline at end of file
+}
diff --git a/Framework/physics/cubismphysicsinternal.ts b/Framework/physics/cubismphysicsinternal.ts
index da51324..3d0cdf2 100644
--- a/Framework/physics/cubismphysicsinternal.ts
+++ b/Framework/physics/cubismphysicsinternal.ts
@@ -1,8 +1,8 @@
-/*
+/**
* Copyright(c) Live2D Inc. All rights reserved.
*
* Use of this source code is governed by the Live2D Open Software license
- * that can be found at http://live2d.com/eula/live2d-open-software-license-agreement_en.html.
+ * that can be found at https://www.live2d.com/eula/live2d-open-software-license-agreement_en.html.
*/
import {Live2DCubismFramework as cubismvector2} from '../math/cubismvector2';
@@ -34,7 +34,7 @@ export namespace Live2DCubismFramework
/**
* @brief 物理演算で使用する外部の力
- *
+ *
* 物理演算で使用する外部の力。
*/
export class PhysicsJsonEffectiveForces
@@ -174,7 +174,7 @@ export namespace Live2DCubismFramework
translationScale: CubismVector2,
angleScale: number
): number;
- }
+ }
/**
* 物理演算の入力情報
@@ -195,7 +195,7 @@ export namespace Live2DCubismFramework
/**
* @brief 物理演算の出力情報
- *
+ *
* 物理演算の出力情報。
*/
export class CubismPhysicsOutput
@@ -222,7 +222,7 @@ export namespace Live2DCubismFramework
/**
* @brief 物理演算のデータ
- *
+ *
* 物理演算のデータ。
*/
export class CubismPhysicsRig
@@ -245,4 +245,4 @@ export namespace Live2DCubismFramework
gravity: CubismVector2; ///< 重力
wind: CubismVector2; ///< 風
};
-}
\ No newline at end of file
+}
diff --git a/Framework/physics/cubismphysicsjson.ts b/Framework/physics/cubismphysicsjson.ts
index 131d86e..b2edd8f 100644
--- a/Framework/physics/cubismphysicsjson.ts
+++ b/Framework/physics/cubismphysicsjson.ts
@@ -1,8 +1,8 @@
-/*
+/**
* Copyright(c) Live2D Inc. All rights reserved.
*
* Use of this source code is governed by the Live2D Open Software license
- * that can be found at http://live2d.com/eula/live2d-open-software-license-agreement_en.html.
+ * that can be found at https://www.live2d.com/eula/live2d-open-software-license-agreement_en.html.
*/
import {Live2DCubismFramework as cubismjson} from '../utils/cubismjson';
@@ -115,7 +115,7 @@ export namespace Live2DCubismFramework
{
return this._json.getRoot().getValueByString(Meta).getValueByString(PhysicsSettingCount).toInt();
}
-
+
/**
* 入力の総合計の取得
* @return 入力の総合計
@@ -142,7 +142,7 @@ export namespace Live2DCubismFramework
{
return this._json.getRoot().getValueByString(Meta).getValueByString(VertexCount).toInt();
}
-
+
/**
* 正規化された位置の最小値の取得
* @param physicsSettingIndex 物理演算の設定のインデックス
@@ -404,4 +404,4 @@ export namespace Live2DCubismFramework
_json: CubismJson; // physics3.jsonデータ
}
-}
\ No newline at end of file
+}
diff --git a/Framework/rendering/cubismrenderer.ts b/Framework/rendering/cubismrenderer.ts
index 8483dcb..0239319 100644
--- a/Framework/rendering/cubismrenderer.ts
+++ b/Framework/rendering/cubismrenderer.ts
@@ -1,8 +1,8 @@
-/*
+/**
* Copyright(c) Live2D Inc. All rights reserved.
*
* Use of this source code is governed by the Live2D Open Software license
- * that can be found at http://live2d.com/eula/live2d-open-software-license-agreement_en.html.
+ * that can be found at https://www.live2d.com/eula/live2d-open-software-license-agreement_en.html.
*/
import {Live2DCubismFramework as cubismmatrix44} from '../math/cubismmatrix44';
@@ -14,14 +14,14 @@ export namespace Live2DCubismFramework
{
/**
* モデル描画を処理するレンダラ
- *
+ *
* サブクラスに環境依存の描画命令を記述する。
*/
export abstract class CubismRenderer
{
/**
* レンダラのインスタンスを生成して取得する
- *
+ *
* @return レンダラのインスタンス
*/
public static create(): CubismRenderer
@@ -131,7 +131,7 @@ export namespace Live2DCubismFramework
/**
* モデルの色を取得する
* 各色0.0~1.0の間で指定する(1.0が標準の状態)
- *
+ *
* @return RGBAのカラー情報
*/
public getModelColor(): CubismTextureColor
@@ -186,7 +186,7 @@ export namespace Live2DCubismFramework
{
this._anisortopy = n;
}
-
+
/**
* テクスチャの異方性フィルタリングのパラメータをセットする
* @return 異方性フィルタリングのパラメータ
@@ -237,10 +237,11 @@ export namespace Live2DCubismFramework
* @param uvArray uv配列
* @param opacity 不透明度
* @param colorBlendMode カラーブレンディングのタイプ
+ * @param invertedMask マスク使用時のマスクの反転使用
*/
public abstract drawMesh(textureNo: number, indexCount: number, vertexCount: number,
indexArray: Uint16Array, vertexArray: Float32Array, uvArray: Float32Array,
- opacity: number, colorBlendMode: CubismBlendMode): void;
+ opacity: number, colorBlendMode: CubismBlendMode, invertedMask: boolean): void;
/**
* レンダラが保持する静的なリソースを開放する
@@ -283,4 +284,4 @@ export namespace Live2DCubismFramework
B: number; // 青チャンネル
A: number; // αチャンネル
}
-}
\ No newline at end of file
+}
diff --git a/Framework/rendering/cubismrenderer_WebGL.ts b/Framework/rendering/cubismrenderer_WebGL.ts
index 084748e..2ad9547 100644
--- a/Framework/rendering/cubismrenderer_WebGL.ts
+++ b/Framework/rendering/cubismrenderer_WebGL.ts
@@ -1,8 +1,8 @@
-/*
+/**
* Copyright(c) Live2D Inc. All rights reserved.
*
* Use of this source code is governed by the Live2D Open Software license
- * that can be found at http://live2d.com/eula/live2d-open-software-license-agreement_en.html.
+ * that can be found at https://www.live2d.com/eula/live2d-open-software-license-agreement_en.html.
*/
import {Live2DCubismFramework as cubismframework} from "../live2dcubismframework";
@@ -27,7 +27,7 @@ export namespace Live2DCubismFramework
{
const ColorChannelCount: number = 4; // 実験時に1チャンネルの場合は1、RGBだけの場合は3、アルファも含める場合は4
- const shaderCount: number = 7; // シェーダーの数 = マスク生成用 + (通常用 + 加算 + 乗算) * (マスク無の乗算済アルファ対応版 + マスク有の乗算済アルファ対応版)
+ const shaderCount: number = 10; // シェーダーの数 = マスク生成用 + (通常用 + 加算 + 乗算) * (マスク無の乗算済アルファ対応版 + マスク有の乗算済アルファ対応版 + マスク有反転の乗算済アルファ対応版)
let s_instance: CubismShader_WebGL;
let s_viewport: number[];
let s_fbo: WebGLFramebuffer;
@@ -49,7 +49,7 @@ export namespace Live2DCubismFramework
/**
* テンポラリのレンダーテクスチャのアドレスを取得する
* FrameBufferObjectが存在しない場合、新しく生成する
- *
+ *
* @return レンダーテクスチャのアドレス
*/
public getMaskRenderTexture(): WebGLFramebuffer
@@ -454,7 +454,8 @@ export namespace Live2DCubismFramework
model.getDrawableVertices(clipDrawIndex),
model.getDrawableVertexUvs(clipDrawIndex),
model.getDrawableOpacity(clipDrawIndex),
- CubismBlendMode.CubismBlendMode_Normal // クリッピングは通常描画を強制
+ CubismBlendMode.CubismBlendMode_Normal, // クリッピングは通常描画を強制
+ false // マスク生成時はクリッピングの反転使用は全く関係がない
);
}
}
@@ -482,7 +483,7 @@ export namespace Live2DCubismFramework
{
let clippingContext: CubismClippingContext = this._clippingContextListForMask.at(i);
const count: number = clippingContext._clippingIdCount;
-
+
// 個数が違う場合は別物
if(count != drawableMaskCounts)
{
@@ -495,7 +496,7 @@ export namespace Live2DCubismFramework
for(let j: number = 0; j < count; j++)
{
const clipId: number = clippingContext._clippingIdList[j];
-
+
for(let k: number = 0; k < count; k++)
{
if(drawableMasks[k] == clipId)
@@ -519,7 +520,7 @@ export namespace Live2DCubismFramework
* クリッピングコンテキストを配置するレイアウト
* 一つのレンダーテクスチャを極力いっぱいに使ってマスクをレイアウトする
* マスクグループの数が4以下ならRGBA各チャンネルに一つずつマスクを配置し、5以上6以下ならRGBAを2,2,1,1と配置する。
- *
+ *
* @param usingClipCount 配置するクリッピングコンテキストの数
*/
public setupLayoutBounds(usingClipCount: number): void
@@ -752,7 +753,7 @@ export namespace Live2DCubismFramework
/**
* このマスクにクリップされる描画オブジェクトを追加する
- *
+ *
* @param drawableIndex クリッピング対象に追加する描画オブジェクトのインデックス
*/
public addClippedDrawable(drawableIndex: number)
@@ -849,6 +850,7 @@ export namespace Live2DCubismFramework
* @param baseColor ベースカラー
* @param isPremultipliedAlpha 乗算済みアルファかどうか
* @param matrix4x4 Model-View-Projection行列
+ * @param invertedMask マスクを反転して使用するフラグ
*/
public setupShaderProgram(renderer: CubismRenderer_WebGL,
textureId: WebGLTexture,
@@ -865,7 +867,8 @@ export namespace Live2DCubismFramework
colorBlendMode: CubismBlendMode,
baseColor: CubismTextureColor,
isPremultipliedAlpha: boolean,
- matrix4x4: CubismMatrix44): void
+ matrix4x4: CubismMatrix44,
+ invertedMask: boolean): void
{
if(!isPremultipliedAlpha)
{
@@ -938,7 +941,7 @@ export namespace Live2DCubismFramework
else // マスク生成以外の場合
{
const masked: boolean = renderer.getClippingContextBufferForDraw() != null; // この描画オブジェクトはマスク対象か
- const offset: number = (masked ? 1 : 0);
+ const offset: number = (masked ? (invertedMask ? 2 : 1) : 0);
let shaderSet: CubismShaderSet = new CubismShaderSet();
@@ -960,7 +963,7 @@ export namespace Live2DCubismFramework
SRC_ALPHA = this.gl.ZERO;
DST_ALPHA = this.gl.ONE;
break;
-
+
case CubismBlendMode.CubismBlendMode_Multiplicative:
shaderSet = this._shaderSets.at(ShaderNames.ShaderNames_MultPremultipliedAlpha + offset);
SRC_COLOR = this.gl.DST_COLOR;
@@ -1015,7 +1018,7 @@ export namespace Live2DCubismFramework
// 座標変換
this.gl.uniformMatrix4fv(shaderSet.uniformMatrixLocation, false, matrix4x4.getArray());
-
+
this.gl.uniform4f(shaderSet.uniformBaseColorLocation, baseColor.R, baseColor.G, baseColor.B, baseColor.A);
}
@@ -1056,17 +1059,20 @@ export namespace Live2DCubismFramework
}
this._shaderSets.at(0).shaderProgram = this.loadShaderProgram(vertexShaderSrcSetupMask, fragmentShaderSrcsetupMask);
-
+
this._shaderSets.at(1).shaderProgram = this.loadShaderProgram(vertexShaderSrc, fragmentShaderSrcPremultipliedAlpha);
this._shaderSets.at(2).shaderProgram = this.loadShaderProgram(vertexShaderSrcMasked, fragmentShaderSrcMaskPremultipliedAlpha);
+ this._shaderSets.at(3).shaderProgram = this.loadShaderProgram(vertexShaderSrcMasked, fragmentShaderSrcMaskInvertedPremultipliedAlpha);
// 加算も通常と同じシェーダーを利用する
- this._shaderSets.at(3).shaderProgram = this._shaderSets.at(1).shaderProgram;
- this._shaderSets.at(4).shaderProgram = this._shaderSets.at(2).shaderProgram;
+ this._shaderSets.at(4).shaderProgram = this._shaderSets.at(1).shaderProgram;
+ this._shaderSets.at(5).shaderProgram = this._shaderSets.at(2).shaderProgram;
+ this._shaderSets.at(6).shaderProgram = this._shaderSets.at(3).shaderProgram;
// 乗算も通常と同じシェーダーを利用する
- this._shaderSets.at(5).shaderProgram = this._shaderSets.at(1).shaderProgram;
- this._shaderSets.at(6).shaderProgram = this._shaderSets.at(2).shaderProgram;
+ this._shaderSets.at(7).shaderProgram = this._shaderSets.at(1).shaderProgram;
+ this._shaderSets.at(8).shaderProgram = this._shaderSets.at(2).shaderProgram;
+ this._shaderSets.at(9).shaderProgram = this._shaderSets.at(3).shaderProgram;
// SetupMask
this._shaderSets.at(0).attributePositionLocation = this.gl.getAttribLocation(this._shaderSets.at(0).shaderProgram, "a_position");
@@ -1093,31 +1099,34 @@ export namespace Live2DCubismFramework
this._shaderSets.at(2).uniformChannelFlagLocation = this.gl.getUniformLocation(this._shaderSets.at(2).shaderProgram, "u_channelFlag");
this._shaderSets.at(2).uniformBaseColorLocation = this.gl.getUniformLocation(this._shaderSets.at(2).shaderProgram, "u_baseColor");
- // 加算(PremultipliedAlpha)
+ // 通常(クリッピング・反転, PremultipliedAlpha)
this._shaderSets.at(3).attributePositionLocation = this.gl.getAttribLocation(this._shaderSets.at(3).shaderProgram, "a_position");
this._shaderSets.at(3).attributeTexCoordLocation = this.gl.getAttribLocation(this._shaderSets.at(3).shaderProgram, "a_texCoord");
this._shaderSets.at(3).samplerTexture0Location = this.gl.getUniformLocation(this._shaderSets.at(3).shaderProgram, "s_texture0");
+ this._shaderSets.at(3).samplerTexture1Location = this.gl.getUniformLocation(this._shaderSets.at(3).shaderProgram, "s_texture1");
this._shaderSets.at(3).uniformMatrixLocation = this.gl.getUniformLocation(this._shaderSets.at(3).shaderProgram, "u_matrix");
+ this._shaderSets.at(3).uniformClipMatrixLocation = this.gl.getUniformLocation(this._shaderSets.at(3).shaderProgram, "u_clipMatrix");
+ this._shaderSets.at(3).uniformChannelFlagLocation = this.gl.getUniformLocation(this._shaderSets.at(3).shaderProgram, "u_channelFlag");
this._shaderSets.at(3).uniformBaseColorLocation = this.gl.getUniformLocation(this._shaderSets.at(3).shaderProgram, "u_baseColor");
- // 加算(クリッピング、PremultipliedAlpha)
+ // 加算(PremultipliedAlpha)
this._shaderSets.at(4).attributePositionLocation = this.gl.getAttribLocation(this._shaderSets.at(4).shaderProgram, "a_position");
this._shaderSets.at(4).attributeTexCoordLocation = this.gl.getAttribLocation(this._shaderSets.at(4).shaderProgram, "a_texCoord");
this._shaderSets.at(4).samplerTexture0Location = this.gl.getUniformLocation(this._shaderSets.at(4).shaderProgram, "s_texture0");
- this._shaderSets.at(4).samplerTexture1Location = this.gl.getUniformLocation(this._shaderSets.at(4).shaderProgram, "s_texture1");
this._shaderSets.at(4).uniformMatrixLocation = this.gl.getUniformLocation(this._shaderSets.at(4).shaderProgram, "u_matrix");
- this._shaderSets.at(4).uniformClipMatrixLocation = this.gl.getUniformLocation(this._shaderSets.at(4).shaderProgram, "u_clipMatrix");
- this._shaderSets.at(4).uniformChannelFlagLocation = this.gl.getUniformLocation(this._shaderSets.at(4).shaderProgram, "u_channelFlag");
this._shaderSets.at(4).uniformBaseColorLocation = this.gl.getUniformLocation(this._shaderSets.at(4).shaderProgram, "u_baseColor");
- // 乗算(PremultipliedAlpha)
+ // 加算(クリッピング、PremultipliedAlpha)
this._shaderSets.at(5).attributePositionLocation = this.gl.getAttribLocation(this._shaderSets.at(5).shaderProgram, "a_position");
this._shaderSets.at(5).attributeTexCoordLocation = this.gl.getAttribLocation(this._shaderSets.at(5).shaderProgram, "a_texCoord");
this._shaderSets.at(5).samplerTexture0Location = this.gl.getUniformLocation(this._shaderSets.at(5).shaderProgram, "s_texture0");
+ this._shaderSets.at(5).samplerTexture1Location = this.gl.getUniformLocation(this._shaderSets.at(5).shaderProgram, "s_texture1");
this._shaderSets.at(5).uniformMatrixLocation = this.gl.getUniformLocation(this._shaderSets.at(5).shaderProgram, "u_matrix");
+ this._shaderSets.at(5).uniformClipMatrixLocation = this.gl.getUniformLocation(this._shaderSets.at(5).shaderProgram, "u_clipMatrix");
+ this._shaderSets.at(5).uniformChannelFlagLocation = this.gl.getUniformLocation(this._shaderSets.at(5).shaderProgram, "u_channelFlag");
this._shaderSets.at(5).uniformBaseColorLocation = this.gl.getUniformLocation(this._shaderSets.at(5).shaderProgram, "u_baseColor");
- // 乗算(クリッピング、PremultipliedAlpha)
+ // 加算(クリッピング・反転、PremultipliedAlpha)
this._shaderSets.at(6).attributePositionLocation = this.gl.getAttribLocation(this._shaderSets.at(6).shaderProgram, "a_position");
this._shaderSets.at(6).attributeTexCoordLocation = this.gl.getAttribLocation(this._shaderSets.at(6).shaderProgram, "a_texCoord");
this._shaderSets.at(6).samplerTexture0Location = this.gl.getUniformLocation(this._shaderSets.at(6).shaderProgram, "s_texture0");
@@ -1126,6 +1135,33 @@ export namespace Live2DCubismFramework
this._shaderSets.at(6).uniformClipMatrixLocation = this.gl.getUniformLocation(this._shaderSets.at(6).shaderProgram, "u_clipMatrix");
this._shaderSets.at(6).uniformChannelFlagLocation = this.gl.getUniformLocation(this._shaderSets.at(6).shaderProgram, "u_channelFlag");
this._shaderSets.at(6).uniformBaseColorLocation = this.gl.getUniformLocation(this._shaderSets.at(6).shaderProgram, "u_baseColor");
+
+ // 乗算(PremultipliedAlpha)
+ this._shaderSets.at(7).attributePositionLocation = this.gl.getAttribLocation(this._shaderSets.at(7).shaderProgram, "a_position");
+ this._shaderSets.at(7).attributeTexCoordLocation = this.gl.getAttribLocation(this._shaderSets.at(7).shaderProgram, "a_texCoord");
+ this._shaderSets.at(7).samplerTexture0Location = this.gl.getUniformLocation(this._shaderSets.at(7).shaderProgram, "s_texture0");
+ this._shaderSets.at(7).uniformMatrixLocation = this.gl.getUniformLocation(this._shaderSets.at(7).shaderProgram, "u_matrix");
+ this._shaderSets.at(7).uniformBaseColorLocation = this.gl.getUniformLocation(this._shaderSets.at(7).shaderProgram, "u_baseColor");
+
+ // 乗算(クリッピング、PremultipliedAlpha)
+ this._shaderSets.at(8).attributePositionLocation = this.gl.getAttribLocation(this._shaderSets.at(8).shaderProgram, "a_position");
+ this._shaderSets.at(8).attributeTexCoordLocation = this.gl.getAttribLocation(this._shaderSets.at(8).shaderProgram, "a_texCoord");
+ this._shaderSets.at(8).samplerTexture0Location = this.gl.getUniformLocation(this._shaderSets.at(8).shaderProgram, "s_texture0");
+ this._shaderSets.at(8).samplerTexture1Location = this.gl.getUniformLocation(this._shaderSets.at(8).shaderProgram, "s_texture1");
+ this._shaderSets.at(8).uniformMatrixLocation = this.gl.getUniformLocation(this._shaderSets.at(8).shaderProgram, "u_matrix");
+ this._shaderSets.at(8).uniformClipMatrixLocation = this.gl.getUniformLocation(this._shaderSets.at(8).shaderProgram, "u_clipMatrix");
+ this._shaderSets.at(8).uniformChannelFlagLocation = this.gl.getUniformLocation(this._shaderSets.at(8).shaderProgram, "u_channelFlag");
+ this._shaderSets.at(8).uniformBaseColorLocation = this.gl.getUniformLocation(this._shaderSets.at(8).shaderProgram, "u_baseColor");
+
+ // 乗算(クリッピング・反転、PremultipliedAlpha)
+ this._shaderSets.at(9).attributePositionLocation = this.gl.getAttribLocation(this._shaderSets.at(9).shaderProgram, "a_position");
+ this._shaderSets.at(9).attributeTexCoordLocation = this.gl.getAttribLocation(this._shaderSets.at(9).shaderProgram, "a_texCoord");
+ this._shaderSets.at(9).samplerTexture0Location = this.gl.getUniformLocation(this._shaderSets.at(9).shaderProgram, "s_texture0");
+ this._shaderSets.at(9).samplerTexture1Location = this.gl.getUniformLocation(this._shaderSets.at(9).shaderProgram, "s_texture1");
+ this._shaderSets.at(9).uniformMatrixLocation = this.gl.getUniformLocation(this._shaderSets.at(9).shaderProgram, "u_matrix");
+ this._shaderSets.at(9).uniformClipMatrixLocation = this.gl.getUniformLocation(this._shaderSets.at(9).shaderProgram, "u_clipMatrix");
+ this._shaderSets.at(9).uniformChannelFlagLocation = this.gl.getUniformLocation(this._shaderSets.at(9).shaderProgram, "u_channelFlag");
+ this._shaderSets.at(9).uniformBaseColorLocation = this.gl.getUniformLocation(this._shaderSets.at(9).shaderProgram, "u_baseColor");
}
/**
@@ -1163,7 +1199,7 @@ export namespace Live2DCubismFramework
// link program
this.gl.linkProgram(shaderProgram)
let linkStatus = this.gl.getProgramParameter(shaderProgram, this.gl.LINK_STATUS);
-
+
// リンクに失敗したらシェーダーを削除
if(!linkStatus)
{
@@ -1195,7 +1231,7 @@ export namespace Live2DCubismFramework
* シェーダープログラムをコンパイルする
* @param shaderType シェーダタイプ(Vertex/Fragment)
* @param shaderSource シェーダソースコード
- *
+ *
* @return コンパイルされたシェーダープログラム
*/
public compileShaderSource(shaderType: GLenum, shaderSource: string): WebGLProgram
@@ -1205,7 +1241,7 @@ export namespace Live2DCubismFramework
let shader: WebGLProgram = this.gl.createShader(shaderType);
this.gl.shaderSource(shader, source);
this.gl.compileShader(shader);
-
+
if(!shader)
{
let log: string = this.gl.getShaderInfoLog(shader);
@@ -1255,14 +1291,17 @@ export namespace Live2DCubismFramework
// Normal
ShaderNames_NormalPremultipliedAlpha,
ShaderNames_NormalMaskedPremultipliedAlpha,
+ ShaderNames_NomralMaskedInvertedPremultipliedAlpha,
// Add
ShaderNames_AddPremultipliedAlpha,
- ShaderNames_AddMaskedPremultipledAlpha,
+ ShaderNames_AddMaskedPremultipliedAlpha,
+ ShaderNames_AddMaskedPremultipliedAlphaInverted,
// Mult
ShaderNames_MultPremultipliedAlpha,
ShaderNames_MultMaskedPremultipliedAlpha,
+ ShaderNames_MultMaskedPremultipliedAlphaInverted
};
export const vertexShaderSrcSetupMask =
@@ -1355,6 +1394,24 @@ export namespace Live2DCubismFramework
" gl_FragColor = col_formask;" +
"}";
+ // Normal & Add & Mult 共通(クリッピングされて反転使用の描画用、PremultipliedAlphaの場合)
+ export const fragmentShaderSrcMaskInvertedPremultipliedAlpha =
+ "precision mediump float;" +
+ "varying vec2 v_texCoord;" +
+ "varying vec4 v_clipPos;" +
+ "uniform sampler2D s_texture0;" +
+ "uniform sampler2D s_texture1;" +
+ "uniform vec4 u_channelFlag;" +
+ "uniform vec4 u_baseColor;" +
+ "void main()" +
+ "{" +
+ "vec4 col_formask = texture2D(s_texture0, v_texCoord) * u_baseColor;" +
+ "vec4 clipMask = (1.0 - texture2D(s_texture1, v_clipPos.xy / v_clipPos.w)) * u_channelFlag;" +
+ "float maskVal = clipMask.r + clipMask.g + clipMask.b + clipMask.a;" +
+ "col_formask = col_formask * (1.0 - maskVal);" +
+ "gl_FragColor = col_formask;" +
+ "}";
+
/**
* WebGL用の描画命令を実装したクラス
*/
@@ -1363,7 +1420,7 @@ export namespace Live2DCubismFramework
/**
* レンダラの初期化処理を実行する
* 引数に渡したモデルからレンダラの初期化処理に必要な情報を取り出すことができる
- *
+ *
* @param model モデルのインスタンス
*/
public initialize(model: CubismModel): void
@@ -1532,7 +1589,8 @@ export namespace Live2DCubismFramework
this.getModel().getDrawableVertices(drawableIndex),
this.getModel().getDrawableVertexUvs(drawableIndex),
this.getModel().getDrawableOpacity(drawableIndex),
- this.getModel().getDrawableBlendMode(drawableIndex)
+ this.getModel().getDrawableBlendMode(drawableIndex),
+ this.getModel().getDrawableInvertedMaskBit(drawableIndex)
);
}
}
@@ -1549,10 +1607,11 @@ export namespace Live2DCubismFramework
* @param uvArray uv配列
* @param opacity 不透明度
* @param colorBlendMode カラー合成タイプ
+ * @param invertedMask マスク使用時のマスクの反転使用
*/
public drawMesh(textureNo: number, indexCount: number, vertexCount: number,
indexArray: Uint16Array, vertexArray: Float32Array, uvArray: Float32Array,
- opacity: number, colorBlendMode: CubismBlendMode): void
+ opacity: number, colorBlendMode: CubismBlendMode, invertedMask: boolean): void
{
// 裏面描画の有効・無効
if(this.isCulling())
@@ -1564,7 +1623,7 @@ export namespace Live2DCubismFramework
this.gl.disable(this.gl.CULL_FACE);
}
- this.gl.frontFace(this.gl.CCW); // Cubism3 OpenGLはマスク・アートメッシュ共にCCWが表面
+ this.gl.frontFace(this.gl.CCW); // Cubism SDK OpenGLはマスク・アートメッシュ共にCCWが表面
let modelColorRGBA: CubismTextureColor = this.getModelColor();
@@ -1596,9 +1655,9 @@ export namespace Live2DCubismFramework
this, drawtexture, vertexCount, vertexArray, indexArray, uvArray,
this._bufferData,
opacity, colorBlendMode, modelColorRGBA, this.isPremultipliedAlpha(),
- this.getMvpMatrix()
+ this.getMvpMatrix(), invertedMask
);
-
+
// ポリゴンメッシュを描画する
this.gl.drawElements(this.gl.TRIANGLES, indexCount, this.gl.UNSIGNED_SHORT, 0);
@@ -1723,4 +1782,4 @@ export namespace Live2DCubismFramework
{
CubismRenderer_WebGL.doStaticRelease();
}
-}
\ No newline at end of file
+}
diff --git a/Framework/type/csmmap.ts b/Framework/type/csmmap.ts
index d9f64ac..18bc9de 100644
--- a/Framework/type/csmmap.ts
+++ b/Framework/type/csmmap.ts
@@ -1,8 +1,8 @@
-/*
+/**
* Copyright(c) Live2D Inc. All rights reserved.
*
* Use of this source code is governed by the Live2D Open Software license
- * that can be found at http://live2d.com/eula/live2d-open-software-license-agreement_en.html.
+ * that can be found at https://www.live2d.com/eula/live2d-open-software-license-agreement_en.html.
*/
import { CubismLogDebug } from "../utils/cubismdebug";
@@ -22,13 +22,13 @@ export namespace Live2DCubismFramework
*/
public constructor(key?: _KeyT, value?: _ValT)
{
- this.first = (key == undefined)
- ? null
+ this.first = (key == undefined)
+ ? null
: key;
this.second = (value == undefined)
? null
- : value;
+ : value;
}
public first: _KeyT; // keyとして用いる変数
@@ -75,7 +75,7 @@ export namespace Live2DCubismFramework
{
this.clear();
}
-
+
/**
* キーを追加する
* @param key 新たに追加するキー
@@ -97,7 +97,7 @@ export namespace Live2DCubismFramework
public getValue(key: _KeyT): _ValT
{
let found = -1;
-
+
for(let i: number = 0; i < this._size; i++)
{
if(this._keyValues[i].first == key)
@@ -106,7 +106,7 @@ export namespace Live2DCubismFramework
break;
}
}
-
+
if(found >= 0)
{
return this._keyValues[found].second;
@@ -117,7 +117,7 @@ export namespace Live2DCubismFramework
return this._keyValues[this._size - 1].second;
}
}
-
+
/**
* 添字演算子[key]のオーバーロード(set)
* @param key 添字から特定されるValue値
@@ -126,7 +126,7 @@ export namespace Live2DCubismFramework
public setValue(key: _KeyT, value: _ValT): void
{
let found = -1;
-
+
for(let i: number = 0; i < this._size; i++)
{
if(this._keyValues[i].first == key)
@@ -135,7 +135,7 @@ export namespace Live2DCubismFramework
break;
}
}
-
+
if(found >= 0)
{
this._keyValues[found].second = value;
@@ -146,7 +146,7 @@ export namespace Live2DCubismFramework
this._keyValues[this._size - 1].second = value;
}
}
-
+
/**
* 引数で渡したKeyを持つ要素が存在するか
* @param key 存在を確認するkey
@@ -164,7 +164,7 @@ export namespace Live2DCubismFramework
}
return false;
}
-
+
/**
* keyValueのポインタを全て解放する
*/
@@ -173,13 +173,13 @@ export namespace Live2DCubismFramework
this._keyValues = void 0;
this._keyValues = null;
this._keyValues = new Array();
-
+
this._size = 0;
}
-
+
/**
* コンテナのサイズを取得する
- *
+ *
* @return コンテナのサイズ
*/
public getSize(): number
@@ -229,7 +229,7 @@ export namespace Live2DCubismFramework
/**
* コンテナから要素を削除する
- *
+ *
* @param ite 削除する要素
*/
public erase(ite: iterator<_KeyT, _ValT>): iterator<_KeyT, _ValT>
@@ -355,4 +355,4 @@ export namespace Live2DCubismFramework
_index: number; // コンテナのインデックス値
_map: csmMap<_KeyT, _ValT>; // コンテナ
}
-}
\ No newline at end of file
+}
diff --git a/Framework/type/csmrectf.ts b/Framework/type/csmrectf.ts
index b79b0d0..3be34d3 100644
--- a/Framework/type/csmrectf.ts
+++ b/Framework/type/csmrectf.ts
@@ -1,8 +1,8 @@
-/*
+/**
* Copyright(c) Live2D Inc. All rights reserved.
*
* Use of this source code is governed by the Live2D Open Software license
- * that can be found at http://live2d.com/eula/live2d-open-software-license-agreement_en.html.
+ * that can be found at https://www.live2d.com/eula/live2d-open-software-license-agreement_en.html.
*/
export namespace Live2DCubismFramework
@@ -89,4 +89,4 @@ export namespace Live2DCubismFramework
public width: number; // 幅
public height: number; // 高さ
}
-}
\ No newline at end of file
+}
diff --git a/Framework/type/csmstring.ts b/Framework/type/csmstring.ts
index f56f291..de5a4f9 100644
--- a/Framework/type/csmstring.ts
+++ b/Framework/type/csmstring.ts
@@ -1,8 +1,8 @@
-/*
+/**
* Copyright(c) Live2D Inc. All rights reserved.
*
* Use of this source code is governed by the Live2D Open Software license
- * that can be found at http://live2d.com/eula/live2d-open-software-license-agreement_en.html.
+ * that can be found at https://www.live2d.com/eula/live2d-open-software-license-agreement_en.html.
*/
export namespace Live2DCubismFramework
@@ -14,7 +14,7 @@ export namespace Live2DCubismFramework
{
/**
* 文字列を後方に追加する
- *
+ *
* @param c 追加する文字列
* @return 更新された文字列
*/
@@ -114,4 +114,4 @@ export namespace Live2DCubismFramework
s: string;
}
-}
\ No newline at end of file
+}
diff --git a/Framework/type/csmvector.ts b/Framework/type/csmvector.ts
index 17ecb27..5a47f1b 100644
--- a/Framework/type/csmvector.ts
+++ b/Framework/type/csmvector.ts
@@ -1,8 +1,8 @@
-/*
+/**
* Copyright(c) Live2D Inc. All rights reserved.
*
* Use of this source code is governed by the Live2D Open Software license
- * that can be found at http://live2d.com/eula/live2d-open-software-license-agreement_en.html.
+ * that can be found at https://www.live2d.com/eula/live2d-open-software-license-agreement_en.html.
*/
export namespace Live2DCubismFramework
@@ -74,7 +74,7 @@ export namespace Live2DCubismFramework
{
this.prepareCapacity(this._capacity == 0 ? csmVector.s_defaultSize : this._capacity * 2);
}
-
+
this._ptr[this._size++] = value;
}
@@ -132,7 +132,7 @@ export namespace Live2DCubismFramework
public updateSize(newSize: number, value: any = null, callPlacementNew: boolean = true): void
{
let curSize: number = this._size;
-
+
if(curSize < newSize)
{
this.prepareCapacity(newSize); // capacity更新
@@ -194,7 +194,7 @@ export namespace Live2DCubismFramework
this._ptr.splice(dstSi + i, 0, null);
}
}
-
+
for(let i: number = srcSi; i < srcEi; i++, dstSi++)
{
this._ptr[dstSi] = begin._vector._ptr[i];
@@ -268,7 +268,7 @@ export namespace Live2DCubismFramework
*/
public begin(): iterator
{
- let ite: iterator = (this._size == 0)
+ let ite: iterator = (this._size == 0)
? this.end()
: new iterator(this, 0);
return ite;
@@ -329,7 +329,7 @@ export namespace Live2DCubismFramework
++this._index;
return this;
}
-
+
/**
* 前置き--演算
*/
@@ -390,4 +390,4 @@ export namespace Live2DCubismFramework
_index: number; // コンテナのインデックス値
_vector: csmVector; // コンテナ
}
-}
\ No newline at end of file
+}
diff --git a/Framework/utils/cubismdebug.ts b/Framework/utils/cubismdebug.ts
index 41fa83a..5ed87bb 100644
--- a/Framework/utils/cubismdebug.ts
+++ b/Framework/utils/cubismdebug.ts
@@ -1,15 +1,15 @@
-/*
+/**
* Copyright(c) Live2D Inc. All rights reserved.
*
* Use of this source code is governed by the Live2D Open Software license
- * that can be found at http://live2d.com/eula/live2d-open-software-license-agreement_en.html.
+ * that can be found at https://www.live2d.com/eula/live2d-open-software-license-agreement_en.html.
*/
import {Live2DCubismFramework as cubismframework, LogLevel} from "../live2dcubismframework";
import {CSM_LOG_LEVEL, CSM_LOG_LEVEL_VERBOSE, CSM_LOG_LEVEL_DEBUG, CSM_LOG_LEVEL_INFO, CSM_LOG_LEVEL_WARNING, CSM_LOG_LEVEL_ERROR} from "../cubismframeworkconfig";
-export const CubismLogPrint = (level: LogLevel, fmt: string, args: any[]) =>
+export const CubismLogPrint = (level: LogLevel, fmt: string, args: any[]) =>
{
Live2DCubismFramework.CubismDebug.print(level, "[CSM]" + fmt, args);
}
@@ -130,7 +130,7 @@ export namespace Live2DCubismFramework
/**
* ログを出力する。第一引数にログレベルを設定する。
* CubismFramework.initialize()時にオプションで設定されたログ出力レベルを下回る場合はログに出さない。
- *
+ *
* @param logLevel ログレベルの設定
* @param format 書式付き文字列
* @param args 可変長引数
@@ -148,7 +148,7 @@ export namespace Live2DCubismFramework
if (!logPrint)
return;
- let buffer: string =
+ let buffer: string =
format.replace(
/\{(\d+)\}/g,
(m, k) =>
@@ -162,7 +162,7 @@ export namespace Live2DCubismFramework
/**
* データから指定した長さだけダンプ出力する。
* CubismFramework.initialize()時にオプションで設定されたログ出力レベルを下回る場合はログに出さない。
- *
+ *
* @param logLevel ログレベルの設定
* @param data ダンプするデータ
* @param length ダンプする長さ
@@ -175,7 +175,7 @@ export namespace Live2DCubismFramework
else if (i % 8 == 0 && i > 0) this.print(logLevel, " ");
this.print(logLevel, "{0} ", [(data[i] & 0xFF)]);
}
-
+
this.print(logLevel, "\n");
}
@@ -189,4 +189,4 @@ export namespace Live2DCubismFramework
}
}
-//------------ LIVE2D NAMESPACE ------------
\ No newline at end of file
+//------------ LIVE2D NAMESPACE ------------
diff --git a/Framework/utils/cubismjson.ts b/Framework/utils/cubismjson.ts
index 32de14b..264112e 100644
--- a/Framework/utils/cubismjson.ts
+++ b/Framework/utils/cubismjson.ts
@@ -1,8 +1,8 @@
-/*
+/**
* Copyright(c) Live2D Inc. All rights reserved.
*
* Use of this source code is governed by the Live2D Open Software license
- * that can be found at http://live2d.com/eula/live2d-open-software-license-agreement_en.html.
+ * that can be found at https://www.live2d.com/eula/live2d-open-software-license-agreement_en.html.
*/
import {Live2DCubismFramework as csmstring} from "../type/csmstring";
@@ -123,7 +123,7 @@ export namespace Live2DCubismFramework
/**
* マップのキー一覧をコンテナで返す
- *
+ *
* @return マップのキーの一覧
*/
public getKeys(): csmVector
@@ -228,7 +228,7 @@ export namespace Live2DCubismFramework
Value.s_dummyKeys = new csmVector();
}
-
+
/**
* リリース用メソッド
*/
@@ -259,7 +259,7 @@ export namespace Live2DCubismFramework
* Ascii文字のみ対応した最小限の軽量JSONパーサ。
* 仕様はJSONのサブセットとなる。
* 設定ファイル(model3.json)などのロード用
- *
+ *
* [未対応項目]
* ・日本語などの非ASCII文字
* ・eによる指数表現
@@ -283,7 +283,7 @@ export namespace Live2DCubismFramework
/**
* バイトデータから直接ロードしてパースする
- *
+ *
* @param buffer バッファ
* @param size バッファサイズ
* @return CubismJsonクラスのインスタンス。失敗したらNULL
@@ -293,7 +293,7 @@ export namespace Live2DCubismFramework
let json = new CubismJson();
const succeeded: boolean = json.parseBytes(buffer, size);
- if(!succeeded)
+ if(!succeeded)
{
CubismJson.delete(json);
return null;
@@ -306,7 +306,7 @@ export namespace Live2DCubismFramework
/**
* パースしたJSONオブジェクトの解放処理
- *
+ *
* @param instance CubismJsonクラスのインスタンス
*/
public static delete(instance: CubismJson)
@@ -324,7 +324,7 @@ export namespace Live2DCubismFramework
/**
* UnicodeのバイナリをStringに変換
- *
+ *
* @param buffer 変換するバイナリデータ
* @return 変換後の文字列
*/
@@ -385,7 +385,7 @@ export namespace Live2DCubismFramework
/**
* パース時のエラー値を返す
*/
- public getParseError(): string
+ public getParseError(): string
{
return this._error;
}
@@ -411,7 +411,7 @@ export namespace Live2DCubismFramework
protected parseValue(buffer: string, length: number, begin: number, outEndPos: number[])
{
if (this._error) return null;
-
+
let o: Value = null;
let i: number = begin;
let f: number;
@@ -486,7 +486,7 @@ export namespace Live2DCubismFramework
case ']': // 不正な}だがスキップする。配列の最後に不要な , があると思われる
outEndPos[0] = i; // 同じ文字を再処理
return null;
- case '\n':
+ case '\n':
this._lineCount++;
case ' ':
case '\t':
@@ -502,7 +502,7 @@ export namespace Live2DCubismFramework
/**
* 次の「"」までの文字列をパースする。
- *
+ *
* @param string -> パース対象の文字列
* @param length -> パースする長さ
* @param begin -> パースを開始する位置
@@ -525,7 +525,7 @@ export namespace Live2DCubismFramework
switch(c)
{
case '\"': // 終端の”、エスケープ文字は別に処理されるのでここに来ない
- {
+ {
outEndPos[0] = i + 1; // ”の次の文字
ret.append(string.slice(bufStart), (i - bufStart)); // 前の文字までを登録する
return ret.s;
@@ -533,17 +533,17 @@ export namespace Live2DCubismFramework
case '//': // エスケープの場合
{
i++; // 2文字をセットで扱う
-
+
if(i - 1 > bufStart)
{
ret.append(string.slice(bufStart), (i - bufStart)); // 前の文字までを登録する
}
bufStart = i + 1; // エスケープ(2文字)の次の文字から
-
+
if (i < length)
{
c2 = string[i];
-
+
switch(c2)
{
case '\\':
@@ -595,7 +595,7 @@ export namespace Live2DCubismFramework
/**
* JSONのオブジェクトエレメントをパースしてValueオブジェクトを返す
- *
+ *
* @param buffer JSONエレメントのバッファ
* @param length パースする長さ
* @param begin パースを開始する位置
@@ -639,7 +639,7 @@ export namespace Live2DCubismFramework
case ':':
this._error = "illegal ':' position";
break;
- case '\n':
+ case '\n':
this._lineCount++;
default:
break; // スキップする文字
@@ -685,7 +685,7 @@ export namespace Live2DCubismFramework
if(this._error)
{
return null;
- }
+ }
i = localRetEndPos2[0];
@@ -768,7 +768,7 @@ export namespace Live2DCubismFramework
case '\n':
++this._lineCount;
//case ' ': case '\t': case '\r':
- default:
+ default:
break; // スキップ
}
}
@@ -815,7 +815,7 @@ export namespace Live2DCubismFramework
let strbuf: string = '\0';
this._value = parseFloat(strbuf);
this._stringBuffer = strbuf;
-
+
return this._stringBuffer;
}
@@ -936,7 +936,7 @@ export namespace Live2DCubismFramework
private _boolValue: boolean; // JSON要素の値
}
-
+
/**
* パースしたJSONの要素を文字列として扱う
*/
@@ -955,7 +955,7 @@ export namespace Live2DCubismFramework
{
this._stringBuffer = s;
}
-
+
if(s instanceof csmString)
{
this._stringBuffer = s.s;
@@ -1114,7 +1114,7 @@ export namespace Live2DCubismFramework
for(let ite: csmVector_iterator = this._array.begin(); ite.notEqual(this._array.end()); ite.preIncrement())
{
let v: Value = ite.ptr();
-
+
if(v && !v.isStatic())
{
v = void 0;
@@ -1171,7 +1171,7 @@ export namespace Live2DCubismFramework
let v: Value = ite.ptr();
this._stringBuffer += indent + "" + v.getString(indent + " ") + "\n";
}
-
+
this._stringBuffer = stringBuffer + indent + "]\n";
return this._stringBuffer;
@@ -1229,7 +1229,7 @@ export namespace Live2DCubismFramework
while(ite.notEqual(this._map.end()))
{
let v: Value = ite.ptr().second;
-
+
if(v && !v.isStatic())
{
v = void 0;
@@ -1352,9 +1352,9 @@ export namespace Live2DCubismFramework
{
return this._keys.getSize();
}
-
+
private _map: csmMap; // JSON要素の値
private _keys: csmVector; // JSON要素の値
}
-}
\ No newline at end of file
+}
diff --git a/Framework/utils/cubismstring.ts b/Framework/utils/cubismstring.ts
index c90bfab..c13bd77 100644
--- a/Framework/utils/cubismstring.ts
+++ b/Framework/utils/cubismstring.ts
@@ -1,8 +1,8 @@
-/*
+/**
* Copyright(c) Live2D Inc. All rights reserved.
*
* Use of this source code is governed by the Live2D Open Software license
- * that can be found at http://live2d.com/eula/live2d-open-software-license-agreement_en.html.
+ * that can be found at https://www.live2d.com/eula/live2d-open-software-license-agreement_en.html.
*/
export namespace Live2DCubismFramework
@@ -50,7 +50,7 @@ export namespace Live2DCubismFramework
/**
* position位置の文字から数字を解析する。
- *
+ *
* @param string 文字列
* @param length 文字列の長さ
* @param position 解析したい文字の位置
@@ -133,4 +133,4 @@ export namespace Live2DCubismFramework
}
}
-}
\ No newline at end of file
+}
diff --git a/README.md b/README.md
index 0210fdf..4878295 100644
--- a/README.md
+++ b/README.md
@@ -1,146 +1,155 @@
# Cubism Web Samples
-Live2D Cubism 3 Editorで出力したモデルを表示するアプリケーションのサンプル実装です。
+Live2D Cubism 4 Editorで出力したモデルを表示するアプリケーションのサンプル実装です。
-Cubism Coreライブラリと組み合わせて使用します。
+Cubism Coreライブラリと組み合わせて使用します。
-# フォルダ構成
+## ディレクトリ構成
-- README.md ...本ドキュメント
-- Core ...Coreライブラリが含まれるフォルダ
-- Framework ...レンダリングやアニメーション機能などのソースコードが含まれるフォルダ
-- Samples ...サンプルプロジェクトが含まれるフォルダ
-- .vscode ...Visual Studio Codeのタスクや設定が含まれるフォルダ
+```
+.
+├─ .vscode # Visual Studio Codeのタスクや設定が含まれるディレクトリ
+├─ Core # Cubism Coreが含まれるディレクトリ
+├─ Framework # レンダリングやアニメーション機能などのソースコードが含まれるディレクトリ
+└─ Samples
+ └─ TypeScript
+ └─ Demo # サンプルプロジェクトが含まれるディレクトリ
+ ├─ Resources # モデルのファイルや画像などのリソースが含まれるディレクトリ
+ └─ src
+```
-# Live2D Cubism Core for Web
+## Live2D Cubism Core for Web
モデルをロードするためのライブラリです。
-
-# TypeScript環境
-
-1. node.jsをインストールします。
-
-- https://nodejs.org/en/
-
-2. typescriptをインストールします。
-
-- https://www.typescriptlang.org/
-
-3. Visual Studio Codeをインストールします。
-
-4. 拡張機能として下記を追加します。
-
-- Debugger for Chrome
-- Live Server
-
-5. Visual Studio Codeを再起動します。
-
-6. ビルドに必要な物をインストールします。
-package.jsonがあるディレクトリに移動し、下記コマンドを実行します。
-`npm install`
+当リポジトリではCubism Coreを管理していません。
+[こちら](https://www.live2d.com/download/cubism-sdk/download-web/)からCubism SDK for Webをダウンロードして、
+Coreディレクトリのファイルをコピーしてください。
-# TypeScript Core Binding
+## 開発環境の構築方法
-CoreライブラリはTypeScript用に以下プロジェクトでバインドし、出力されたファイルをCoreフォルダに入れる必要があります。
+1. [Node.js](https://nodejs.org/)をインストールします。
-インストール、バインドに必要な手順については下記を参考にしてください。
-https://github.com/Live2D/CubismBindings
+1. [Visual Studio Code](https://code.visualstudio.com/)をインストールします。
-動作確認バージョン
-- emscripten 1.37.40, 1.38.12, 1.38.21
-- Python 2.7.15
-- PyYAML 3.12
-- Pystache 0.5.4
-
-バインドに必要なemscriptenについては下記を参考にしてください。
-https://kripken.github.io/emscripten-site/docs/getting_started/downloads.html#updating-the-sdk
+1. Visual Studio Codeの拡張機能として下記を追加します。
+ - [Debugger for Chrome](https://marketplace.visualstudio.com/items?itemName=msjsdiag.debugger-for-chrome)
+ - [Live Server](https://marketplace.visualstudio.com/items?itemName=ritwickdey.LiveServer)
-# ビルド方法
+## ビルド方法
-上記TypeScript環境を前提とした操作になります。
+1. Visual Studio Codeでプロジェクトディレクトリを開きます。
-1. Visual Studio Codeでプロジェクトフォルダを開きます。
-(例)E:\Workspace\CubismWebSamples
+1. ビルドに必要な物をインストールします。
+ ctrl+shift+P(macOSでは⌘+⇧+P)で`Tasks: Run Task`から`npm: install`を選択、
+ または、`package.json`があるディレクトリ上にてターミナル上で`npm install`でサーバが起動します。
-2. ビルドし、JavaScriptを生成します。
-ctrl+shift+Bでビルドタスクを選択
-または ターミナル上で npm run build-sample を実行すると、JavaScriptが生成されます。
+1. ビルドを行います。
+ ctrl+shift+B(macOSでは⌘+⇧+B)でビルドタスクを選択、またはターミナル上でnpmコマンドを実行してJavaScriptを生成します。
- 各タスクの説明
- `npm:build-framework` : フレームワークのみをビルドし、JavaScriptファイルを生成します。
- `npm:watch-framework` : フレームワークのみをウォッチし、変更が保存された際にJavaScriptファイルを生成します。
- `npm:build-sample` : サンプルをビルドします。
- `npm:watch-sample` : サンプルをウォッチします。
- `npm:build-all` : フレームワークとサンプルをビルドします。
- `npm:watch-all` : フレームワークとサンプルをウォッチします。
+### ビルドタスクの説明
-3. サーバーを起動します。
-Visual Studio Codeの画面下の水色のフッターからGo Liveをクリックすると、サーバーが起動します。
-
-4. 実行
-F5で実行し、remote web site with sourcemapを選択します。
+| コマンド | 説明 |
+| --- | --- |
+| `npm: build-framework` | フレームワークのみをビルドし、JavaScriptファイルを生成します |
+| `npm: watch-framework` | フレームワークのみをウォッチし、変更が保存された際にJavaScriptファイルを再生成します |
+| `npm: build-sample` | サンプルをビルドします |
+| `npm: watch-sample` | サンプルをウォッチします |
+| `npm: build-all` | フレームワークとサンプルをビルドします |
+| `npm: watch-all` | フレームワークとサンプルをウォッチします |
-# SDKマニュアル
+## ローカルサーバの起動方法
-[Cubism SDK Manual](http://docs.live2d.com/cubism-sdk-manual/top/)
+ビルドした成果物はそのままファイルを開くだけでは正常に動作しないため、ローカルサーバを起動する必要があります。
+
+### 開発時
+
+Visual Studio Codeの画面下の水色のフッターから「Go Live」をクリックするとサーバが起動します。
+ブラウザ上で`index.html`のパスまで進むと動作を確認することが出来ます。
+
+ファイルの更新が行われると自動でブラウザのリロードが行われます。
+また、`F5`を押すとでDebugger for Chromeの拡張が起動してデバッグを行うことが出来ます。
+
+### 検証時
+
+ctrl+shift+P(macOSでは⌘+⇧+P)で`Tasks: Run Task`から`npm: serve`を選択、
+または、`package.json`があるディレクトリ上にてターミナル上で`npm run serve`でサーバが起動します。
+ブラウザ上で`index.html`のパスまで進むと動作を確認することが出来ます。
+
+シンプルな構成のサーバのため検証時におすすめです。
-# 変更履歴
+## SDKマニュアル
-当リポジトリの変更履歴については[コミットログ](https://github.com/Live2D/CubismWebSamples/commits/master)を参照ください。
+[Cubism SDK Manual](https://docs.live2d.com/cubism-sdk-manual/top/)
-# 動作確認環境
+## 変更履歴
-- Windows Google Chrome 70.0.3538.67
-- Windows Mozilla Firefox 63.0
-- Windows Microsoft Edge 17.17134
-- Windows Internet Explorer11 11.407.17134.0 ※(こちらのコミット以降に限ります。: [923b2398266be6f98b9fdbbdeb0bf3fd1d27a2b5](https://github.com/Live2D/CubismWebSamples/commit/923b2398266be6f98b9fdbbdeb0bf3fd1d27a2b5))
-- macOS Google Chrome 70.0.3538.77
-- macOS Mozilla Firefox 63.0
-- macOS Safari 12.0
-- iOS Safari 12.0
-- Android Google Chrome 70.0.3538.64
+当リポジトリの変更履歴については[CHANGELOG.md](/CHANGELOG.md)を参照ください。
-# TODO
-- 無し
+## 動作確認環境
+
+| Node.js | バージョン |
+| --- | --- |
+| Current | 12.9.1 |
+| LTS | 10.16.3 |
+
+| プラットフォーム | ブラウザ | バージョン |
+| --- | --- | --- |
+| Android | Google Chrome | 76.0.3809.89 |
+| Android | Microsoft Edge | 42.0.2.3819 |
+| Android | Mozilla Firefox | 68.0 |
+| iOS | Google Chrome | 76.0.3809.81 |
+| iOS | Microsoft Edge | 44.5.3 |
+| iOS | Mozilla Firefox | 18.1 |
+| iOS | Safari | 604.1 |
+| macOS | Google Chrome | 76.0.3809.87 |
+| macOS | Mozilla Firefox | 68.0.1 |
+| macOS | Safari | 12.1.2 |
+| Windows | Google Chrome | 76.0.3809.100 |
+| Windows | Internet Explorer 11 | 11.885.17134.0 |
+| Windows | Microsoft Edge | 44.18362.1.0 |
+| Windows | Mozilla Firefox | 68.0.1 |
+
+Note: 動作確認時のサーバの起動は[検証時](/README.md#検証時)の方法で行っています。
-# ライセンス
+## ライセンス
Cubism Web Samples は Live2D Open Software License で提供しています。
-- Live2D Open Software License
-[日本語](http://www.live2d.com/eula/live2d-open-software-license-agreement_jp.html)
-[English](http://www.live2d.com/eula/live2d-open-software-license-agreement_en.html)
+- Live2D Open Software License
+ [日本語](https://www.live2d.com/eula/live2d-open-software-license-agreement_jp.html)
+ [English](https://www.live2d.com/eula/live2d-open-software-license-agreement_en.html)
Live2D Cubism Core for Web は Live2D Proprietary Software License で提供しています。
- - Live2D Proprietary Software License
-[日本語](http://www.live2d.com/eula/live2d-proprietary-software-license-agreement_jp.html)
-[English](http://www.live2d.com/eula/live2d-proprietary-software-license-agreement_en.html)
+- Live2D Proprietary Software License
+ [日本語](https://www.live2d.com/eula/live2d-proprietary-software-license-agreement_jp.html)
+ [English](https://www.live2d.com/eula/live2d-proprietary-software-license-agreement_en.html)
Live2D のサンプルモデルは Free Material License で提供しています。
-- Free Material License
-[日本語](http://www.live2d.com/eula/live2d-free-material-license-agreement_jp.html)
-[English](http://www.live2d.com/eula/live2d-free-material-license-agreement_en.html)
- - Samples/Resources/Haru/*
- - Samples/Resources/Hiyori/*
- - Samples/Resources/Mark/*
- - Samples/Res/Natori/
+- Free Material License
+
+ [日本語](https://www.live2d.com/eula/live2d-free-material-license-agreement_jp.html)
+ [English](https://www.live2d.com/eula/live2d-free-material-license-agreement_en.html)
+ - `./Sample/TypeScript/Demo/Resources/Haru`
+ - `./Sample/TypeScript/Demo/Resources/Hiyori`
+ - `./Sample/TypeScript/Demo/Resources/Mark`
+ - `./Sample/TypeScript/Demo/Resources/Natori`
+ - `./Sample/TypeScript/Demo/Resources/Rice`
上記のモデルをご利用になられる場合、[こちら](https://docs.live2d.com/cubism-editor-manual/sample-model/)で各モデルに設定された利用条件に同意して頂く必要がございます。
-直近会計年度の売上高が 1000 万円以上の事業者様がご利用になる場合は、SDKリリース(出版許諾)ライセンスに同意していただく必要がございます。
-- [SDKリリース(出版許諾)ライセンス](http://www.live2d.com/ja/products/releaselicense)
+直近会計年度の売上高が 1000 万円以上の事業者様がご利用になる場合は、SDKリリース(出版許諾)ライセンスに同意していただく必要がございます。
+- [SDKリリース(出版許諾)ライセンス](https://www.live2d.com/ja/products/releaselicense)
-
-*All business* users must obtain a Publication License. "Business" means an entity with the annual gross revenue more than ten million (10,000,000) JPY for the most recent fiscal year.
-- [SDK Release (Publication) License](http://www.live2d.com/en/products/releaselicense)
+*All business* users must obtain a Publication License. "Business" means an entity with the annual gross revenue more than ten million (10,000,000) JPY for the most recent fiscal year.
+- [SDK Release (Publication) License](https://www.live2d.com/en/products/releaselicense)
diff --git a/Sample/TypeScript/Demo/Resources/Rice/Rice.2048/texture_00.png b/Sample/TypeScript/Demo/Resources/Rice/Rice.2048/texture_00.png
new file mode 100644
index 0000000..85897e8
Binary files /dev/null and b/Sample/TypeScript/Demo/Resources/Rice/Rice.2048/texture_00.png differ
diff --git a/Sample/TypeScript/Demo/Resources/Rice/Rice.2048/texture_01.png b/Sample/TypeScript/Demo/Resources/Rice/Rice.2048/texture_01.png
new file mode 100644
index 0000000..42fce23
Binary files /dev/null and b/Sample/TypeScript/Demo/Resources/Rice/Rice.2048/texture_01.png differ
diff --git a/Sample/TypeScript/Demo/Resources/Rice/Rice.cdi3.json b/Sample/TypeScript/Demo/Resources/Rice/Rice.cdi3.json
new file mode 100644
index 0000000..6b83f99
--- /dev/null
+++ b/Sample/TypeScript/Demo/Resources/Rice/Rice.cdi3.json
@@ -0,0 +1,679 @@
+{
+ "Version": 3,
+ "Parameters": [
+ {
+ "Id": "ParamAngleX",
+ "GroupId": "ParamGroupFace",
+ "Name": "角度 X"
+ },
+ {
+ "Id": "ParamAngleZ",
+ "GroupId": "ParamGroupFace",
+ "Name": "角度 Z"
+ },
+ {
+ "Id": "ParamEyeLOpen",
+ "GroupId": "ParamGroupEyes",
+ "Name": "左目 開閉"
+ },
+ {
+ "Id": "ParamEyeROpen",
+ "GroupId": "ParamGroupEyes",
+ "Name": "右目 開閉"
+ },
+ {
+ "Id": "ParamEyeBallX",
+ "GroupId": "ParamGroupEyes",
+ "Name": "目玉 X"
+ },
+ {
+ "Id": "ParamEyeBallY",
+ "GroupId": "ParamGroupEyes",
+ "Name": "目玉 Y"
+ },
+ {
+ "Id": "ParamBodyAngleX",
+ "GroupId": "ParamGroupBody",
+ "Name": "体の回転 X"
+ },
+ {
+ "Id": "ParamBodyAngleY",
+ "GroupId": "ParamGroupBody",
+ "Name": "体の回転 Y"
+ },
+ {
+ "Id": "ParamBodyAngleZ",
+ "GroupId": "ParamGroupBody",
+ "Name": "体の回転 Z"
+ },
+ {
+ "Id": "ParamShoulderR",
+ "GroupId": "ParamGroupBody",
+ "Name": "右肩"
+ },
+ {
+ "Id": "ParamShoulderL",
+ "GroupId": "ParamGroupBody",
+ "Name": "左肩"
+ },
+ {
+ "Id": "ParamLegKnee",
+ "GroupId": "ParamGroupBody",
+ "Name": "屈伸"
+ },
+ {
+ "Id": "ParamLegR",
+ "GroupId": "ParamGroupBody",
+ "Name": "右足の位置"
+ },
+ {
+ "Id": "ParamLegRUpDw",
+ "GroupId": "ParamGroupBody",
+ "Name": "右足の上下"
+ },
+ {
+ "Id": "ParamAllZ",
+ "GroupId": "ParamGroupBody",
+ "Name": "全体のZ"
+ },
+ {
+ "Id": "ParamArmR01",
+ "GroupId": "ParamGroupArms",
+ "Name": "右上腕"
+ },
+ {
+ "Id": "ParamArmR01Y",
+ "GroupId": "ParamGroupArms",
+ "Name": "右上腕 Y"
+ },
+ {
+ "Id": "ParamArmR02",
+ "GroupId": "ParamGroupArms",
+ "Name": "右前腕"
+ },
+ {
+ "Id": "ParamArmR02Y",
+ "GroupId": "ParamGroupArms",
+ "Name": "右前腕 Y"
+ },
+ {
+ "Id": "ParamArmR03",
+ "GroupId": "ParamGroupArms",
+ "Name": "右手"
+ },
+ {
+ "Id": "ParamArmL01",
+ "GroupId": "ParamGroupArms",
+ "Name": "左上腕"
+ },
+ {
+ "Id": "ParamArmL02",
+ "GroupId": "ParamGroupArms",
+ "Name": "左前腕"
+ },
+ {
+ "Id": "ParamArmL03",
+ "GroupId": "ParamGroupArms",
+ "Name": "左手"
+ },
+ {
+ "Id": "ParamArmChange",
+ "GroupId": "ParamGroupArms",
+ "Name": "腕 切り替え"
+ },
+ {
+ "Id": "ParamBookPage",
+ "GroupId": "ParamGroupArms",
+ "Name": "本 ページ"
+ },
+ {
+ "Id": "ParamFlameOn",
+ "GroupId": "ParamGroupFlame",
+ "Name": "炎 表示"
+ },
+ {
+ "Id": "ParamFlame",
+ "GroupId": "ParamGroupFlame",
+ "Name": "炎"
+ },
+ {
+ "Id": "ParamFlameShaking",
+ "GroupId": "ParamGroupFlame",
+ "Name": "炎の揺れ"
+ },
+ {
+ "Id": "ParamFlameX",
+ "GroupId": "ParamGroupFlame",
+ "Name": "炎の位置 X"
+ },
+ {
+ "Id": "ParamFlameY",
+ "GroupId": "ParamGroupFlame",
+ "Name": "炎の位置 Y"
+ },
+ {
+ "Id": "ParamCharge01On",
+ "GroupId": "ParamGroupEffectsA",
+ "Name": "溜めの表示"
+ },
+ {
+ "Id": "ParamCharge01",
+ "GroupId": "ParamGroupEffectsA",
+ "Name": "溜め"
+ },
+ {
+ "Id": "ParamHandLightAOn",
+ "GroupId": "ParamGroupEffectsA",
+ "Name": "手の光Aの表示"
+ },
+ {
+ "Id": "ParamHandLightASize",
+ "GroupId": "ParamGroupEffectsA",
+ "Name": "手の光Aの拡縮"
+ },
+ {
+ "Id": "ParamMagicPowersA",
+ "GroupId": "ParamGroupEffectsA",
+ "Name": "波動A"
+ },
+ {
+ "Id": "ParamMagicAOn",
+ "GroupId": "ParamGroupEffectsA",
+ "Name": "魔法陣Aの表示"
+ },
+ {
+ "Id": "ParamMagicARotation",
+ "GroupId": "ParamGroupEffectsA",
+ "Name": "魔法陣Aの回転"
+ },
+ {
+ "Id": "ParamMagicALight",
+ "GroupId": "ParamGroupEffectsA",
+ "Name": "魔法陣A 光"
+ },
+ {
+ "Id": "ParamEffectAX",
+ "GroupId": "ParamGroupEffectsA",
+ "Name": "エフェクトAの位置 X"
+ },
+ {
+ "Id": "ParamEffectAY",
+ "GroupId": "ParamGroupEffectsA",
+ "Name": "エフェクトAの位置 Y"
+ },
+ {
+ "Id": "ParamHandLightBOn",
+ "GroupId": "ParamGroupEffectsB",
+ "Name": "手の光Bの表示"
+ },
+ {
+ "Id": "ParamHandLightBSize",
+ "GroupId": "ParamGroupEffectsB",
+ "Name": "手の光Bの拡張"
+ },
+ {
+ "Id": "ParamMagicBOn",
+ "GroupId": "ParamGroupEffectsB",
+ "Name": "魔法陣Bの表示"
+ },
+ {
+ "Id": "ParamMagicBRotation",
+ "GroupId": "ParamGroupEffectsB",
+ "Name": "魔法陣Bの回転"
+ },
+ {
+ "Id": "ParamMagicBMove",
+ "GroupId": "ParamGroupEffectsB",
+ "Name": "魔法陣Bの移動"
+ },
+ {
+ "Id": "ParamMagicBX",
+ "GroupId": "ParamGroupEffectsB",
+ "Name": "魔法陣Bの角度 X"
+ },
+ {
+ "Id": "ParamMagicPowersBOn",
+ "GroupId": "ParamGroupEffectsB",
+ "Name": "波動Bの表示"
+ },
+ {
+ "Id": "ParamMagicPowersBSize",
+ "GroupId": "ParamGroupEffectsB",
+ "Name": "波動Bの拡張"
+ },
+ {
+ "Id": "ParamMagicPowersBThicknesses",
+ "GroupId": "ParamGroupEffectsB",
+ "Name": "波動Bの太さ"
+ },
+ {
+ "Id": "ParamEffectBX",
+ "GroupId": "ParamGroupEffectsB",
+ "Name": "エフェクトBの位置 X"
+ },
+ {
+ "Id": "ParamEffectBY",
+ "GroupId": "ParamGroupEffectsB",
+ "Name": "エフェクトBの位置 Y"
+ },
+ {
+ "Id": "ParamHeadRibbon",
+ "GroupId": "ParamGroupSwing",
+ "Name": "頭リボンの揺れ"
+ },
+ {
+ "Id": "ParamBustRibbon01",
+ "GroupId": "ParamGroupSwing",
+ "Name": "胸リボンの揺れ01"
+ },
+ {
+ "Id": "ParamBustRibbon02",
+ "GroupId": "ParamGroupSwing",
+ "Name": "胸リボンの揺れ02"
+ },
+ {
+ "Id": "ParamWaistRibbon01",
+ "GroupId": "ParamGroupSwing",
+ "Name": "腰リボンの揺れ01"
+ },
+ {
+ "Id": "ParamWaistRibbon02",
+ "GroupId": "ParamGroupSwing",
+ "Name": "腰リボンの揺れ02"
+ },
+ {
+ "Id": "ParamSkirt",
+ "GroupId": "ParamGroupSwing",
+ "Name": "スカートのなびき"
+ },
+ {
+ "Id": "ParamSkirtX",
+ "GroupId": "ParamGroupSwing",
+ "Name": "スカートの揺れ X"
+ },
+ {
+ "Id": "ParamSkirtY",
+ "GroupId": "ParamGroupSwing",
+ "Name": "スカートの揺れ Y"
+ },
+ {
+ "Id": "ParamHairFront01",
+ "GroupId": "ParamGroupHairFront",
+ "Name": "髪揺れ 前01"
+ },
+ {
+ "Id": "ParamHairFront02",
+ "GroupId": "ParamGroupHairFront",
+ "Name": "髪揺れ 前02"
+ },
+ {
+ "Id": "Param_Angle_Rotation_1_ArtMesh67",
+ "GroupId": "ParamGroupHairSideR",
+ "Name": "[0]右横髪"
+ },
+ {
+ "Id": "Param_Angle_Rotation_2_ArtMesh67",
+ "GroupId": "ParamGroupHairSideR",
+ "Name": "[1]右横髪"
+ },
+ {
+ "Id": "Param_Angle_Rotation_3_ArtMesh67",
+ "GroupId": "ParamGroupHairSideR",
+ "Name": "[2]右横髪"
+ },
+ {
+ "Id": "Param_Angle_Rotation_4_ArtMesh67",
+ "GroupId": "ParamGroupHairSideR",
+ "Name": "[3]右横髪"
+ },
+ {
+ "Id": "Param_Angle_Rotation_5_ArtMesh67",
+ "GroupId": "ParamGroupHairSideR",
+ "Name": "[4]右横髪"
+ },
+ {
+ "Id": "Param_Angle_Rotation_1_ArtMesh20",
+ "GroupId": "ParamGroupHairSideL",
+ "Name": "[0]左横髪"
+ },
+ {
+ "Id": "Param_Angle_Rotation_2_ArtMesh20",
+ "GroupId": "ParamGroupHairSideL",
+ "Name": "[1]左横髪"
+ },
+ {
+ "Id": "Param_Angle_Rotation_3_ArtMesh20",
+ "GroupId": "ParamGroupHairSideL",
+ "Name": "[2]左横髪"
+ },
+ {
+ "Id": "Param_Angle_Rotation_4_ArtMesh20",
+ "GroupId": "ParamGroupHairSideL",
+ "Name": "[3]左横髪"
+ },
+ {
+ "Id": "Param_Angle_Rotation_5_ArtMesh20",
+ "GroupId": "ParamGroupHairSideL",
+ "Name": "[4]左横髪"
+ },
+ {
+ "Id": "Param_Angle_Rotation_1_ArtMesh82",
+ "GroupId": "ParamGroupHairBackA",
+ "Name": "[0]後髪A"
+ },
+ {
+ "Id": "Param_Angle_Rotation_2_ArtMesh82",
+ "GroupId": "ParamGroupHairBackA",
+ "Name": "[1]後髪A"
+ },
+ {
+ "Id": "Param_Angle_Rotation_3_ArtMesh82",
+ "GroupId": "ParamGroupHairBackA",
+ "Name": "[2]後髪A"
+ },
+ {
+ "Id": "Param_Angle_Rotation_4_ArtMesh82",
+ "GroupId": "ParamGroupHairBackA",
+ "Name": "[3]後髪A"
+ },
+ {
+ "Id": "Param_Angle_Rotation_5_ArtMesh82",
+ "GroupId": "ParamGroupHairBackA",
+ "Name": "[4]後髪A"
+ },
+ {
+ "Id": "Param_Angle_Rotation_6_ArtMesh82",
+ "GroupId": "ParamGroupHairBackA",
+ "Name": "[5]後髪A"
+ },
+ {
+ "Id": "Param_Angle_Rotation_7_ArtMesh82",
+ "GroupId": "ParamGroupHairBackA",
+ "Name": "[6]後髪A"
+ },
+ {
+ "Id": "Param_Angle_Rotation_1_ArtMesh81",
+ "GroupId": "ParamGroupHairBackB",
+ "Name": "[0]後髪B"
+ },
+ {
+ "Id": "Param_Angle_Rotation_2_ArtMesh81",
+ "GroupId": "ParamGroupHairBackB",
+ "Name": "[1]後髪B"
+ },
+ {
+ "Id": "Param_Angle_Rotation_3_ArtMesh81",
+ "GroupId": "ParamGroupHairBackB",
+ "Name": "[2]後髪B"
+ },
+ {
+ "Id": "Param_Angle_Rotation_4_ArtMesh81",
+ "GroupId": "ParamGroupHairBackB",
+ "Name": "[3]後髪B"
+ },
+ {
+ "Id": "Param_Angle_Rotation_5_ArtMesh81",
+ "GroupId": "ParamGroupHairBackB",
+ "Name": "[4]後髪B"
+ },
+ {
+ "Id": "Param_Angle_Rotation_6_ArtMesh81",
+ "GroupId": "ParamGroupHairBackB",
+ "Name": "[5]後髪B"
+ },
+ {
+ "Id": "Param_Angle_Rotation_7_ArtMesh81",
+ "GroupId": "ParamGroupHairBackB",
+ "Name": "[6]後髪B"
+ },
+ {
+ "Id": "Param_Angle_Rotation_8_ArtMesh81",
+ "GroupId": "ParamGroupHairBackB",
+ "Name": "[7]後髪B"
+ },
+ {
+ "Id": "Param_Angle_Rotation_9_ArtMesh81",
+ "GroupId": "ParamGroupHairBackB",
+ "Name": "[8]後髪B"
+ },
+ {
+ "Id": "Param_Angle_Rotation_1_ArtMesh80",
+ "GroupId": "ParamGroupHairBackC",
+ "Name": "[0]後髪C"
+ },
+ {
+ "Id": "Param_Angle_Rotation_2_ArtMesh80",
+ "GroupId": "ParamGroupHairBackC",
+ "Name": "[1]後髪C"
+ },
+ {
+ "Id": "Param_Angle_Rotation_3_ArtMesh80",
+ "GroupId": "ParamGroupHairBackC",
+ "Name": "[2]後髪C"
+ },
+ {
+ "Id": "Param_Angle_Rotation_4_ArtMesh80",
+ "GroupId": "ParamGroupHairBackC",
+ "Name": "[3]後髪C"
+ },
+ {
+ "Id": "Param_Angle_Rotation_5_ArtMesh80",
+ "GroupId": "ParamGroupHairBackC",
+ "Name": "[4]後髪C"
+ },
+ {
+ "Id": "Param_Angle_Rotation_6_ArtMesh80",
+ "GroupId": "ParamGroupHairBackC",
+ "Name": "[5]後髪C"
+ },
+ {
+ "Id": "Param_Angle_Rotation_7_ArtMesh80",
+ "GroupId": "ParamGroupHairBackC",
+ "Name": "[6]後髪C"
+ },
+ {
+ "Id": "Param_Angle_Rotation_8_ArtMesh80",
+ "GroupId": "ParamGroupHairBackC",
+ "Name": "[7]後髪C"
+ },
+ {
+ "Id": "Param_Angle_Rotation_9_ArtMesh80",
+ "GroupId": "ParamGroupHairBackC",
+ "Name": "[8]後髪C"
+ }
+ ],
+ "ParameterGroups": [
+ {
+ "Id": "ParamGroupFace",
+ "GroupId": "",
+ "Name": "顔"
+ },
+ {
+ "Id": "ParamGroupEyes",
+ "GroupId": "",
+ "Name": "目"
+ },
+ {
+ "Id": "ParamGroupBody",
+ "GroupId": "",
+ "Name": "体"
+ },
+ {
+ "Id": "ParamGroupArms",
+ "GroupId": "",
+ "Name": "腕"
+ },
+ {
+ "Id": "ParamGroupFlame",
+ "GroupId": "",
+ "Name": "炎"
+ },
+ {
+ "Id": "ParamGroupEffectsA",
+ "GroupId": "",
+ "Name": "エフェクトA"
+ },
+ {
+ "Id": "ParamGroupEffectsB",
+ "GroupId": "",
+ "Name": "エフェクトB"
+ },
+ {
+ "Id": "ParamGroupSwing",
+ "GroupId": "",
+ "Name": "揺れもの"
+ },
+ {
+ "Id": "ParamGroupHairFront",
+ "GroupId": "",
+ "Name": "前髪"
+ },
+ {
+ "Id": "ParamGroupHairSideR",
+ "GroupId": "",
+ "Name": "右横髪"
+ },
+ {
+ "Id": "ParamGroupHairSideL",
+ "GroupId": "",
+ "Name": "左横髪"
+ },
+ {
+ "Id": "ParamGroupHairBackA",
+ "GroupId": "",
+ "Name": "後髪A"
+ },
+ {
+ "Id": "ParamGroupHairBackB",
+ "GroupId": "",
+ "Name": "後髪B"
+ },
+ {
+ "Id": "ParamGroupHairBackC",
+ "GroupId": "",
+ "Name": "後髪C"
+ }
+ ],
+ "Parts": [
+ {
+ "Id": "PartCore",
+ "Name": "コア"
+ },
+ {
+ "Id": "PartFlame",
+ "Name": "炎"
+ },
+ {
+ "Id": "PartMagicPowersB",
+ "Name": "波動B"
+ },
+ {
+ "Id": "PartMagicB",
+ "Name": "魔法陣B"
+ },
+ {
+ "Id": "PartMagicPowersA",
+ "Name": "波動A"
+ },
+ {
+ "Id": "PartMagicA",
+ "Name": "魔法陣A"
+ },
+ {
+ "Id": "PartHat",
+ "Name": "帽子"
+ },
+ {
+ "Id": "PartHair",
+ "Name": "髪"
+ },
+ {
+ "Id": "PartBrow",
+ "Name": "眉"
+ },
+ {
+ "Id": "PartEyeL",
+ "Name": "左目"
+ },
+ {
+ "Id": "PartEyeR",
+ "Name": "右目"
+ },
+ {
+ "Id": "PartFace",
+ "Name": "顔"
+ },
+ {
+ "Id": "PartArmR02",
+ "Name": "右腕 差分"
+ },
+ {
+ "Id": "PartArmR01",
+ "Name": "右腕"
+ },
+ {
+ "Id": "PartBody",
+ "Name": "体"
+ },
+ {
+ "Id": "PartLegR",
+ "Name": "右足"
+ },
+ {
+ "Id": "PartLegL",
+ "Name": "左足"
+ },
+ {
+ "Id": "PartArmL",
+ "Name": "左腕"
+ },
+ {
+ "Id": "PartHairBack",
+ "Name": "後ろ髪"
+ },
+ {
+ "Id": "PartWaveSave",
+ "Name": "波動 溜め"
+ },
+ {
+ "Id": "ArtMesh20_Skinning",
+ "Name": "左横髪(スキニング)"
+ },
+ {
+ "Id": "Part20",
+ "Name": "左横髪(回転)"
+ },
+ {
+ "Id": "ArtMesh67_Skinning",
+ "Name": "右横髪(スキニング)"
+ },
+ {
+ "Id": "Part19",
+ "Name": "右横髪(回転)"
+ },
+ {
+ "Id": "ArtMesh80_Skinning",
+ "Name": "後髪C(スキニング)"
+ },
+ {
+ "Id": "Part17",
+ "Name": "後髪C(回転)"
+ },
+ {
+ "Id": "ArtMesh81_Skinning",
+ "Name": "後髪B(スキニング)"
+ },
+ {
+ "Id": "Part18",
+ "Name": "後髪B(回転)"
+ },
+ {
+ "Id": "ArtMesh82_Skinning",
+ "Name": "後髪A(スキニング)"
+ },
+ {
+ "Id": "Part16",
+ "Name": "後髪A(回転)"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/Sample/TypeScript/Demo/Resources/Rice/Rice.moc3 b/Sample/TypeScript/Demo/Resources/Rice/Rice.moc3
new file mode 100644
index 0000000..a872a6f
Binary files /dev/null and b/Sample/TypeScript/Demo/Resources/Rice/Rice.moc3 differ
diff --git a/Sample/TypeScript/Demo/Resources/Rice/Rice.model3.json b/Sample/TypeScript/Demo/Resources/Rice/Rice.model3.json
new file mode 100644
index 0000000..5366717
--- /dev/null
+++ b/Sample/TypeScript/Demo/Resources/Rice/Rice.model3.json
@@ -0,0 +1,51 @@
+{
+ "Version": 3,
+ "FileReferences": {
+ "Moc": "Rice.moc3",
+ "Textures": [
+ "Rice.2048/texture_00.png",
+ "Rice.2048/texture_01.png"
+ ],
+ "Physics": "Rice.physics3.json",
+ "DisplayInfo": "Rice.cdi3.json",
+ "Motions": {
+ "Idle": [
+ {
+ "File": "motions/mtn_00.motion3.json"
+ }
+ ],
+ "TapBody": [
+ {
+ "File": "motions/mtn_01.motion3.json"
+ },
+ {
+ "File": "motions/mtn_02.motion3.json"
+ },
+ {
+ "File": "motions/mtn_03.motion3.json"
+ }
+ ]
+ }
+ },
+ "Groups": [
+ {
+ "Target": "Parameter",
+ "Name": "EyeBlink",
+ "Ids": [
+ "ParamEyeLOpen",
+ "ParamEyeROpen"
+ ]
+ },
+ {
+ "Target": "Parameter",
+ "Name": "LipSync",
+ "Ids": []
+ }
+ ],
+ "HitAreas": [
+ {
+ "Id": "HitAreaBody",
+ "Name": "Body"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/Sample/TypeScript/Demo/Resources/Rice/Rice.physics3.json b/Sample/TypeScript/Demo/Resources/Rice/Rice.physics3.json
new file mode 100644
index 0000000..42d2b3b
--- /dev/null
+++ b/Sample/TypeScript/Demo/Resources/Rice/Rice.physics3.json
@@ -0,0 +1,1508 @@
+{
+ "Version": 3,
+ "Meta": {
+ "PhysicsSettingCount": 9,
+ "TotalInputCount": 32,
+ "TotalOutputCount": 42,
+ "VertexCount": 51,
+ "EffectiveForces": {
+ "Gravity": {
+ "X": 0,
+ "Y": -1
+ },
+ "Wind": {
+ "X": 0,
+ "Y": 0
+ }
+ },
+ "PhysicsDictionary": [
+ {
+ "Id": "PhysicsSetting1",
+ "Name": "後髪A"
+ },
+ {
+ "Id": "PhysicsSetting2",
+ "Name": "後髪B"
+ },
+ {
+ "Id": "PhysicsSetting3",
+ "Name": "後髪C"
+ },
+ {
+ "Id": "PhysicsSetting4",
+ "Name": "右横髪"
+ },
+ {
+ "Id": "PhysicsSetting5",
+ "Name": "左横髪"
+ },
+ {
+ "Id": "PhysicsSetting6",
+ "Name": "前髪"
+ },
+ {
+ "Id": "PhysicsSetting7",
+ "Name": "頭リボン"
+ },
+ {
+ "Id": "PhysicsSetting8",
+ "Name": "胸リボン"
+ },
+ {
+ "Id": "PhysicsSetting9",
+ "Name": "腰リボン"
+ }
+ ]
+ },
+ "PhysicsSettings": [
+ {
+ "Id": "PhysicsSetting1",
+ "Input": [
+ {
+ "Source": {
+ "Target": "Parameter",
+ "Id": "ParamAngleX"
+ },
+ "Weight": 60,
+ "Type": "X",
+ "Reflect": false
+ },
+ {
+ "Source": {
+ "Target": "Parameter",
+ "Id": "ParamAngleZ"
+ },
+ "Weight": 60,
+ "Type": "Angle",
+ "Reflect": false
+ },
+ {
+ "Source": {
+ "Target": "Parameter",
+ "Id": "ParamBodyAngleX"
+ },
+ "Weight": 40,
+ "Type": "X",
+ "Reflect": false
+ },
+ {
+ "Source": {
+ "Target": "Parameter",
+ "Id": "ParamBodyAngleZ"
+ },
+ "Weight": 40,
+ "Type": "Angle",
+ "Reflect": false
+ }
+ ],
+ "Output": [
+ {
+ "Destination": {
+ "Target": "Parameter",
+ "Id": "Param_Angle_Rotation_1_ArtMesh82"
+ },
+ "VertexIndex": 1,
+ "Scale": 15,
+ "Weight": 100,
+ "Type": "Angle",
+ "Reflect": false
+ },
+ {
+ "Destination": {
+ "Target": "Parameter",
+ "Id": "Param_Angle_Rotation_2_ArtMesh82"
+ },
+ "VertexIndex": 2,
+ "Scale": 30,
+ "Weight": 100,
+ "Type": "Angle",
+ "Reflect": false
+ },
+ {
+ "Destination": {
+ "Target": "Parameter",
+ "Id": "Param_Angle_Rotation_3_ArtMesh82"
+ },
+ "VertexIndex": 3,
+ "Scale": 30,
+ "Weight": 100,
+ "Type": "Angle",
+ "Reflect": false
+ },
+ {
+ "Destination": {
+ "Target": "Parameter",
+ "Id": "Param_Angle_Rotation_4_ArtMesh82"
+ },
+ "VertexIndex": 4,
+ "Scale": 30,
+ "Weight": 100,
+ "Type": "Angle",
+ "Reflect": false
+ },
+ {
+ "Destination": {
+ "Target": "Parameter",
+ "Id": "Param_Angle_Rotation_5_ArtMesh82"
+ },
+ "VertexIndex": 5,
+ "Scale": 30,
+ "Weight": 100,
+ "Type": "Angle",
+ "Reflect": false
+ },
+ {
+ "Destination": {
+ "Target": "Parameter",
+ "Id": "Param_Angle_Rotation_6_ArtMesh82"
+ },
+ "VertexIndex": 6,
+ "Scale": 30,
+ "Weight": 100,
+ "Type": "Angle",
+ "Reflect": false
+ },
+ {
+ "Destination": {
+ "Target": "Parameter",
+ "Id": "Param_Angle_Rotation_7_ArtMesh82"
+ },
+ "VertexIndex": 7,
+ "Scale": 30,
+ "Weight": 100,
+ "Type": "Angle",
+ "Reflect": false
+ }
+ ],
+ "Vertices": [
+ {
+ "Position": {
+ "X": 0,
+ "Y": 0
+ },
+ "Mobility": 1,
+ "Delay": 0.95,
+ "Acceleration": 1.5,
+ "Radius": 7
+ },
+ {
+ "Position": {
+ "X": 0,
+ "Y": 7
+ },
+ "Mobility": 0.85,
+ "Delay": 0.95,
+ "Acceleration": 1.5,
+ "Radius": 7
+ },
+ {
+ "Position": {
+ "X": 0,
+ "Y": 14
+ },
+ "Mobility": 0.85,
+ "Delay": 0.95,
+ "Acceleration": 1.5,
+ "Radius": 7
+ },
+ {
+ "Position": {
+ "X": 0,
+ "Y": 21
+ },
+ "Mobility": 0.85,
+ "Delay": 0.95,
+ "Acceleration": 1.5,
+ "Radius": 7
+ },
+ {
+ "Position": {
+ "X": 0,
+ "Y": 28
+ },
+ "Mobility": 0.85,
+ "Delay": 0.95,
+ "Acceleration": 1.5,
+ "Radius": 7
+ },
+ {
+ "Position": {
+ "X": 0,
+ "Y": 35
+ },
+ "Mobility": 0.85,
+ "Delay": 0.95,
+ "Acceleration": 1.5,
+ "Radius": 7
+ },
+ {
+ "Position": {
+ "X": 0,
+ "Y": 42
+ },
+ "Mobility": 0.85,
+ "Delay": 0.95,
+ "Acceleration": 1.5,
+ "Radius": 7
+ },
+ {
+ "Position": {
+ "X": 0,
+ "Y": 49
+ },
+ "Mobility": 0.85,
+ "Delay": 0.95,
+ "Acceleration": 1.5,
+ "Radius": 7
+ }
+ ],
+ "Normalization": {
+ "Position": {
+ "Minimum": -10,
+ "Default": 0,
+ "Maximum": 10
+ },
+ "Angle": {
+ "Minimum": -10,
+ "Default": 0,
+ "Maximum": 10
+ }
+ }
+ },
+ {
+ "Id": "PhysicsSetting2",
+ "Input": [
+ {
+ "Source": {
+ "Target": "Parameter",
+ "Id": "ParamAngleX"
+ },
+ "Weight": 60,
+ "Type": "X",
+ "Reflect": false
+ },
+ {
+ "Source": {
+ "Target": "Parameter",
+ "Id": "ParamAngleZ"
+ },
+ "Weight": 60,
+ "Type": "Angle",
+ "Reflect": false
+ },
+ {
+ "Source": {
+ "Target": "Parameter",
+ "Id": "ParamBodyAngleX"
+ },
+ "Weight": 40,
+ "Type": "X",
+ "Reflect": false
+ },
+ {
+ "Source": {
+ "Target": "Parameter",
+ "Id": "ParamBodyAngleZ"
+ },
+ "Weight": 40,
+ "Type": "Angle",
+ "Reflect": false
+ }
+ ],
+ "Output": [
+ {
+ "Destination": {
+ "Target": "Parameter",
+ "Id": "Param_Angle_Rotation_1_ArtMesh81"
+ },
+ "VertexIndex": 1,
+ "Scale": 15,
+ "Weight": 100,
+ "Type": "Angle",
+ "Reflect": false
+ },
+ {
+ "Destination": {
+ "Target": "Parameter",
+ "Id": "Param_Angle_Rotation_2_ArtMesh81"
+ },
+ "VertexIndex": 2,
+ "Scale": 35,
+ "Weight": 100,
+ "Type": "Angle",
+ "Reflect": false
+ },
+ {
+ "Destination": {
+ "Target": "Parameter",
+ "Id": "Param_Angle_Rotation_3_ArtMesh81"
+ },
+ "VertexIndex": 3,
+ "Scale": 35,
+ "Weight": 100,
+ "Type": "Angle",
+ "Reflect": false
+ },
+ {
+ "Destination": {
+ "Target": "Parameter",
+ "Id": "Param_Angle_Rotation_4_ArtMesh81"
+ },
+ "VertexIndex": 4,
+ "Scale": 35,
+ "Weight": 100,
+ "Type": "Angle",
+ "Reflect": false
+ },
+ {
+ "Destination": {
+ "Target": "Parameter",
+ "Id": "Param_Angle_Rotation_5_ArtMesh81"
+ },
+ "VertexIndex": 5,
+ "Scale": 35,
+ "Weight": 100,
+ "Type": "Angle",
+ "Reflect": false
+ },
+ {
+ "Destination": {
+ "Target": "Parameter",
+ "Id": "Param_Angle_Rotation_6_ArtMesh81"
+ },
+ "VertexIndex": 6,
+ "Scale": 35,
+ "Weight": 100,
+ "Type": "Angle",
+ "Reflect": false
+ },
+ {
+ "Destination": {
+ "Target": "Parameter",
+ "Id": "Param_Angle_Rotation_7_ArtMesh81"
+ },
+ "VertexIndex": 7,
+ "Scale": 35,
+ "Weight": 100,
+ "Type": "Angle",
+ "Reflect": false
+ },
+ {
+ "Destination": {
+ "Target": "Parameter",
+ "Id": "Param_Angle_Rotation_8_ArtMesh81"
+ },
+ "VertexIndex": 8,
+ "Scale": 35,
+ "Weight": 100,
+ "Type": "Angle",
+ "Reflect": false
+ },
+ {
+ "Destination": {
+ "Target": "Parameter",
+ "Id": "Param_Angle_Rotation_9_ArtMesh81"
+ },
+ "VertexIndex": 9,
+ "Scale": 35,
+ "Weight": 100,
+ "Type": "Angle",
+ "Reflect": false
+ }
+ ],
+ "Vertices": [
+ {
+ "Position": {
+ "X": 0,
+ "Y": 0
+ },
+ "Mobility": 1,
+ "Delay": 0.9,
+ "Acceleration": 1.5,
+ "Radius": 6
+ },
+ {
+ "Position": {
+ "X": 0,
+ "Y": 6
+ },
+ "Mobility": 0.85,
+ "Delay": 0.9,
+ "Acceleration": 1.5,
+ "Radius": 6
+ },
+ {
+ "Position": {
+ "X": 0,
+ "Y": 12
+ },
+ "Mobility": 0.85,
+ "Delay": 0.9,
+ "Acceleration": 1.5,
+ "Radius": 6
+ },
+ {
+ "Position": {
+ "X": 0,
+ "Y": 18
+ },
+ "Mobility": 0.85,
+ "Delay": 0.9,
+ "Acceleration": 1.5,
+ "Radius": 6
+ },
+ {
+ "Position": {
+ "X": 0,
+ "Y": 24
+ },
+ "Mobility": 0.85,
+ "Delay": 0.9,
+ "Acceleration": 2,
+ "Radius": 6
+ },
+ {
+ "Position": {
+ "X": 0,
+ "Y": 30
+ },
+ "Mobility": 0.85,
+ "Delay": 0.9,
+ "Acceleration": 2,
+ "Radius": 6
+ },
+ {
+ "Position": {
+ "X": 0,
+ "Y": 36
+ },
+ "Mobility": 0.85,
+ "Delay": 0.9,
+ "Acceleration": 2,
+ "Radius": 6
+ },
+ {
+ "Position": {
+ "X": 0,
+ "Y": 42
+ },
+ "Mobility": 0.85,
+ "Delay": 0.9,
+ "Acceleration": 2.5,
+ "Radius": 6
+ },
+ {
+ "Position": {
+ "X": 0,
+ "Y": 48
+ },
+ "Mobility": 0.95,
+ "Delay": 0.9,
+ "Acceleration": 2.5,
+ "Radius": 6
+ },
+ {
+ "Position": {
+ "X": 0,
+ "Y": 54
+ },
+ "Mobility": 0.95,
+ "Delay": 0.9,
+ "Acceleration": 2.5,
+ "Radius": 6
+ }
+ ],
+ "Normalization": {
+ "Position": {
+ "Minimum": -10,
+ "Default": 0,
+ "Maximum": 10
+ },
+ "Angle": {
+ "Minimum": -10,
+ "Default": 0,
+ "Maximum": 10
+ }
+ }
+ },
+ {
+ "Id": "PhysicsSetting3",
+ "Input": [
+ {
+ "Source": {
+ "Target": "Parameter",
+ "Id": "ParamAngleX"
+ },
+ "Weight": 60,
+ "Type": "X",
+ "Reflect": false
+ },
+ {
+ "Source": {
+ "Target": "Parameter",
+ "Id": "ParamAngleZ"
+ },
+ "Weight": 60,
+ "Type": "Angle",
+ "Reflect": false
+ },
+ {
+ "Source": {
+ "Target": "Parameter",
+ "Id": "ParamBodyAngleX"
+ },
+ "Weight": 40,
+ "Type": "X",
+ "Reflect": false
+ },
+ {
+ "Source": {
+ "Target": "Parameter",
+ "Id": "ParamBodyAngleZ"
+ },
+ "Weight": 40,
+ "Type": "Angle",
+ "Reflect": false
+ }
+ ],
+ "Output": [
+ {
+ "Destination": {
+ "Target": "Parameter",
+ "Id": "Param_Angle_Rotation_1_ArtMesh80"
+ },
+ "VertexIndex": 1,
+ "Scale": 15,
+ "Weight": 100,
+ "Type": "Angle",
+ "Reflect": false
+ },
+ {
+ "Destination": {
+ "Target": "Parameter",
+ "Id": "Param_Angle_Rotation_2_ArtMesh80"
+ },
+ "VertexIndex": 2,
+ "Scale": 30,
+ "Weight": 100,
+ "Type": "Angle",
+ "Reflect": false
+ },
+ {
+ "Destination": {
+ "Target": "Parameter",
+ "Id": "Param_Angle_Rotation_3_ArtMesh80"
+ },
+ "VertexIndex": 3,
+ "Scale": 30,
+ "Weight": 100,
+ "Type": "Angle",
+ "Reflect": false
+ },
+ {
+ "Destination": {
+ "Target": "Parameter",
+ "Id": "Param_Angle_Rotation_4_ArtMesh80"
+ },
+ "VertexIndex": 4,
+ "Scale": 30,
+ "Weight": 100,
+ "Type": "Angle",
+ "Reflect": false
+ },
+ {
+ "Destination": {
+ "Target": "Parameter",
+ "Id": "Param_Angle_Rotation_5_ArtMesh80"
+ },
+ "VertexIndex": 5,
+ "Scale": 30,
+ "Weight": 100,
+ "Type": "Angle",
+ "Reflect": false
+ },
+ {
+ "Destination": {
+ "Target": "Parameter",
+ "Id": "Param_Angle_Rotation_6_ArtMesh80"
+ },
+ "VertexIndex": 6,
+ "Scale": 30,
+ "Weight": 100,
+ "Type": "Angle",
+ "Reflect": false
+ },
+ {
+ "Destination": {
+ "Target": "Parameter",
+ "Id": "Param_Angle_Rotation_7_ArtMesh80"
+ },
+ "VertexIndex": 7,
+ "Scale": 30,
+ "Weight": 100,
+ "Type": "Angle",
+ "Reflect": false
+ },
+ {
+ "Destination": {
+ "Target": "Parameter",
+ "Id": "Param_Angle_Rotation_8_ArtMesh80"
+ },
+ "VertexIndex": 8,
+ "Scale": 30,
+ "Weight": 100,
+ "Type": "Angle",
+ "Reflect": false
+ },
+ {
+ "Destination": {
+ "Target": "Parameter",
+ "Id": "Param_Angle_Rotation_9_ArtMesh80"
+ },
+ "VertexIndex": 9,
+ "Scale": 30,
+ "Weight": 100,
+ "Type": "Angle",
+ "Reflect": false
+ }
+ ],
+ "Vertices": [
+ {
+ "Position": {
+ "X": 0,
+ "Y": 0
+ },
+ "Mobility": 1,
+ "Delay": 0.9,
+ "Acceleration": 1.5,
+ "Radius": 6
+ },
+ {
+ "Position": {
+ "X": 0,
+ "Y": 6
+ },
+ "Mobility": 0.85,
+ "Delay": 0.9,
+ "Acceleration": 1.5,
+ "Radius": 6
+ },
+ {
+ "Position": {
+ "X": 0,
+ "Y": 12
+ },
+ "Mobility": 0.85,
+ "Delay": 0.9,
+ "Acceleration": 1.5,
+ "Radius": 6
+ },
+ {
+ "Position": {
+ "X": 0,
+ "Y": 18
+ },
+ "Mobility": 0.85,
+ "Delay": 0.9,
+ "Acceleration": 1.5,
+ "Radius": 6
+ },
+ {
+ "Position": {
+ "X": 0,
+ "Y": 24
+ },
+ "Mobility": 0.85,
+ "Delay": 0.9,
+ "Acceleration": 2,
+ "Radius": 6
+ },
+ {
+ "Position": {
+ "X": 0,
+ "Y": 30
+ },
+ "Mobility": 0.85,
+ "Delay": 0.9,
+ "Acceleration": 2,
+ "Radius": 6
+ },
+ {
+ "Position": {
+ "X": 0,
+ "Y": 36
+ },
+ "Mobility": 0.85,
+ "Delay": 0.9,
+ "Acceleration": 2,
+ "Radius": 6
+ },
+ {
+ "Position": {
+ "X": 0,
+ "Y": 42
+ },
+ "Mobility": 0.85,
+ "Delay": 0.9,
+ "Acceleration": 2.5,
+ "Radius": 6
+ },
+ {
+ "Position": {
+ "X": 0,
+ "Y": 48
+ },
+ "Mobility": 0.95,
+ "Delay": 0.9,
+ "Acceleration": 2.5,
+ "Radius": 6
+ },
+ {
+ "Position": {
+ "X": 0,
+ "Y": 54
+ },
+ "Mobility": 0.95,
+ "Delay": 0.9,
+ "Acceleration": 2.5,
+ "Radius": 6
+ }
+ ],
+ "Normalization": {
+ "Position": {
+ "Minimum": -10,
+ "Default": 0,
+ "Maximum": 10
+ },
+ "Angle": {
+ "Minimum": -10,
+ "Default": 0,
+ "Maximum": 10
+ }
+ }
+ },
+ {
+ "Id": "PhysicsSetting4",
+ "Input": [
+ {
+ "Source": {
+ "Target": "Parameter",
+ "Id": "ParamAngleX"
+ },
+ "Weight": 60,
+ "Type": "X",
+ "Reflect": false
+ },
+ {
+ "Source": {
+ "Target": "Parameter",
+ "Id": "ParamAngleZ"
+ },
+ "Weight": 60,
+ "Type": "Angle",
+ "Reflect": false
+ },
+ {
+ "Source": {
+ "Target": "Parameter",
+ "Id": "ParamBodyAngleX"
+ },
+ "Weight": 40,
+ "Type": "X",
+ "Reflect": false
+ },
+ {
+ "Source": {
+ "Target": "Parameter",
+ "Id": "ParamBodyAngleZ"
+ },
+ "Weight": 40,
+ "Type": "Angle",
+ "Reflect": false
+ }
+ ],
+ "Output": [
+ {
+ "Destination": {
+ "Target": "Parameter",
+ "Id": "Param_Angle_Rotation_1_ArtMesh67"
+ },
+ "VertexIndex": 1,
+ "Scale": 30,
+ "Weight": 100,
+ "Type": "Angle",
+ "Reflect": false
+ },
+ {
+ "Destination": {
+ "Target": "Parameter",
+ "Id": "Param_Angle_Rotation_2_ArtMesh67"
+ },
+ "VertexIndex": 2,
+ "Scale": 40,
+ "Weight": 100,
+ "Type": "Angle",
+ "Reflect": false
+ },
+ {
+ "Destination": {
+ "Target": "Parameter",
+ "Id": "Param_Angle_Rotation_3_ArtMesh67"
+ },
+ "VertexIndex": 3,
+ "Scale": 40,
+ "Weight": 100,
+ "Type": "Angle",
+ "Reflect": false
+ },
+ {
+ "Destination": {
+ "Target": "Parameter",
+ "Id": "Param_Angle_Rotation_4_ArtMesh67"
+ },
+ "VertexIndex": 4,
+ "Scale": 40,
+ "Weight": 100,
+ "Type": "Angle",
+ "Reflect": false
+ },
+ {
+ "Destination": {
+ "Target": "Parameter",
+ "Id": "Param_Angle_Rotation_5_ArtMesh67"
+ },
+ "VertexIndex": 5,
+ "Scale": 40,
+ "Weight": 100,
+ "Type": "Angle",
+ "Reflect": false
+ }
+ ],
+ "Vertices": [
+ {
+ "Position": {
+ "X": 0,
+ "Y": 0
+ },
+ "Mobility": 1,
+ "Delay": 0.9,
+ "Acceleration": 1.5,
+ "Radius": 6
+ },
+ {
+ "Position": {
+ "X": 0,
+ "Y": 6
+ },
+ "Mobility": 0.85,
+ "Delay": 0.9,
+ "Acceleration": 1.5,
+ "Radius": 6
+ },
+ {
+ "Position": {
+ "X": 0,
+ "Y": 12
+ },
+ "Mobility": 0.85,
+ "Delay": 0.9,
+ "Acceleration": 1.5,
+ "Radius": 6
+ },
+ {
+ "Position": {
+ "X": 0,
+ "Y": 18
+ },
+ "Mobility": 0.85,
+ "Delay": 0.9,
+ "Acceleration": 1.5,
+ "Radius": 6
+ },
+ {
+ "Position": {
+ "X": 0,
+ "Y": 24
+ },
+ "Mobility": 0.85,
+ "Delay": 0.9,
+ "Acceleration": 2,
+ "Radius": 6
+ },
+ {
+ "Position": {
+ "X": 0,
+ "Y": 30
+ },
+ "Mobility": 0.85,
+ "Delay": 0.9,
+ "Acceleration": 2,
+ "Radius": 6
+ }
+ ],
+ "Normalization": {
+ "Position": {
+ "Minimum": -10,
+ "Default": 0,
+ "Maximum": 10
+ },
+ "Angle": {
+ "Minimum": -10,
+ "Default": 0,
+ "Maximum": 10
+ }
+ }
+ },
+ {
+ "Id": "PhysicsSetting5",
+ "Input": [
+ {
+ "Source": {
+ "Target": "Parameter",
+ "Id": "ParamAngleX"
+ },
+ "Weight": 60,
+ "Type": "X",
+ "Reflect": false
+ },
+ {
+ "Source": {
+ "Target": "Parameter",
+ "Id": "ParamAngleZ"
+ },
+ "Weight": 60,
+ "Type": "Angle",
+ "Reflect": false
+ },
+ {
+ "Source": {
+ "Target": "Parameter",
+ "Id": "ParamBodyAngleX"
+ },
+ "Weight": 40,
+ "Type": "X",
+ "Reflect": false
+ },
+ {
+ "Source": {
+ "Target": "Parameter",
+ "Id": "ParamBodyAngleZ"
+ },
+ "Weight": 40,
+ "Type": "Angle",
+ "Reflect": false
+ }
+ ],
+ "Output": [
+ {
+ "Destination": {
+ "Target": "Parameter",
+ "Id": "Param_Angle_Rotation_1_ArtMesh20"
+ },
+ "VertexIndex": 1,
+ "Scale": 10,
+ "Weight": 100,
+ "Type": "Angle",
+ "Reflect": false
+ },
+ {
+ "Destination": {
+ "Target": "Parameter",
+ "Id": "Param_Angle_Rotation_2_ArtMesh20"
+ },
+ "VertexIndex": 2,
+ "Scale": 35,
+ "Weight": 100,
+ "Type": "Angle",
+ "Reflect": false
+ },
+ {
+ "Destination": {
+ "Target": "Parameter",
+ "Id": "Param_Angle_Rotation_3_ArtMesh20"
+ },
+ "VertexIndex": 3,
+ "Scale": 40,
+ "Weight": 100,
+ "Type": "Angle",
+ "Reflect": false
+ },
+ {
+ "Destination": {
+ "Target": "Parameter",
+ "Id": "Param_Angle_Rotation_4_ArtMesh20"
+ },
+ "VertexIndex": 4,
+ "Scale": 40,
+ "Weight": 100,
+ "Type": "Angle",
+ "Reflect": false
+ },
+ {
+ "Destination": {
+ "Target": "Parameter",
+ "Id": "Param_Angle_Rotation_5_ArtMesh20"
+ },
+ "VertexIndex": 5,
+ "Scale": 40,
+ "Weight": 100,
+ "Type": "Angle",
+ "Reflect": false
+ }
+ ],
+ "Vertices": [
+ {
+ "Position": {
+ "X": 0,
+ "Y": 0
+ },
+ "Mobility": 1,
+ "Delay": 0.9,
+ "Acceleration": 1.5,
+ "Radius": 6
+ },
+ {
+ "Position": {
+ "X": 0,
+ "Y": 5
+ },
+ "Mobility": 0.85,
+ "Delay": 0.9,
+ "Acceleration": 1.5,
+ "Radius": 6
+ },
+ {
+ "Position": {
+ "X": 0,
+ "Y": 10
+ },
+ "Mobility": 0.85,
+ "Delay": 0.9,
+ "Acceleration": 1.5,
+ "Radius": 6
+ },
+ {
+ "Position": {
+ "X": 0,
+ "Y": 15.5
+ },
+ "Mobility": 0.85,
+ "Delay": 0.9,
+ "Acceleration": 1.5,
+ "Radius": 6
+ },
+ {
+ "Position": {
+ "X": 0,
+ "Y": 21.5
+ },
+ "Mobility": 0.85,
+ "Delay": 0.9,
+ "Acceleration": 2,
+ "Radius": 6
+ },
+ {
+ "Position": {
+ "X": 0,
+ "Y": 27.5
+ },
+ "Mobility": 0.85,
+ "Delay": 0.9,
+ "Acceleration": 2,
+ "Radius": 6
+ }
+ ],
+ "Normalization": {
+ "Position": {
+ "Minimum": -10,
+ "Default": 0,
+ "Maximum": 10
+ },
+ "Angle": {
+ "Minimum": -10,
+ "Default": 0,
+ "Maximum": 10
+ }
+ }
+ },
+ {
+ "Id": "PhysicsSetting6",
+ "Input": [
+ {
+ "Source": {
+ "Target": "Parameter",
+ "Id": "ParamAngleX"
+ },
+ "Weight": 60,
+ "Type": "X",
+ "Reflect": false
+ },
+ {
+ "Source": {
+ "Target": "Parameter",
+ "Id": "ParamAngleZ"
+ },
+ "Weight": 60,
+ "Type": "Angle",
+ "Reflect": false
+ },
+ {
+ "Source": {
+ "Target": "Parameter",
+ "Id": "ParamBodyAngleX"
+ },
+ "Weight": 40,
+ "Type": "X",
+ "Reflect": false
+ },
+ {
+ "Source": {
+ "Target": "Parameter",
+ "Id": "ParamBodyAngleZ"
+ },
+ "Weight": 40,
+ "Type": "Angle",
+ "Reflect": false
+ }
+ ],
+ "Output": [
+ {
+ "Destination": {
+ "Target": "Parameter",
+ "Id": "ParamHairFront01"
+ },
+ "VertexIndex": 1,
+ "Scale": 3,
+ "Weight": 100,
+ "Type": "Angle",
+ "Reflect": false
+ },
+ {
+ "Destination": {
+ "Target": "Parameter",
+ "Id": "ParamHairFront02"
+ },
+ "VertexIndex": 2,
+ "Scale": 3,
+ "Weight": 100,
+ "Type": "Angle",
+ "Reflect": false
+ }
+ ],
+ "Vertices": [
+ {
+ "Position": {
+ "X": 0,
+ "Y": 0
+ },
+ "Mobility": 0.8,
+ "Delay": 0.9,
+ "Acceleration": 1,
+ "Radius": 0
+ },
+ {
+ "Position": {
+ "X": 0,
+ "Y": 7
+ },
+ "Mobility": 0.8,
+ "Delay": 0.9,
+ "Acceleration": 1.5,
+ "Radius": 7
+ },
+ {
+ "Position": {
+ "X": 0,
+ "Y": 14
+ },
+ "Mobility": 0.8,
+ "Delay": 0.9,
+ "Acceleration": 1.5,
+ "Radius": 7
+ }
+ ],
+ "Normalization": {
+ "Position": {
+ "Minimum": -10,
+ "Default": 0,
+ "Maximum": 10
+ },
+ "Angle": {
+ "Minimum": -10,
+ "Default": 0,
+ "Maximum": 10
+ }
+ }
+ },
+ {
+ "Id": "PhysicsSetting7",
+ "Input": [
+ {
+ "Source": {
+ "Target": "Parameter",
+ "Id": "ParamAngleX"
+ },
+ "Weight": 60,
+ "Type": "X",
+ "Reflect": false
+ },
+ {
+ "Source": {
+ "Target": "Parameter",
+ "Id": "ParamAngleZ"
+ },
+ "Weight": 60,
+ "Type": "Angle",
+ "Reflect": false
+ },
+ {
+ "Source": {
+ "Target": "Parameter",
+ "Id": "ParamBodyAngleX"
+ },
+ "Weight": 40,
+ "Type": "X",
+ "Reflect": false
+ },
+ {
+ "Source": {
+ "Target": "Parameter",
+ "Id": "ParamBodyAngleZ"
+ },
+ "Weight": 40,
+ "Type": "Angle",
+ "Reflect": false
+ }
+ ],
+ "Output": [
+ {
+ "Destination": {
+ "Target": "Parameter",
+ "Id": "ParamHeadRibbon"
+ },
+ "VertexIndex": 1,
+ "Scale": 2,
+ "Weight": 100,
+ "Type": "Angle",
+ "Reflect": false
+ }
+ ],
+ "Vertices": [
+ {
+ "Position": {
+ "X": 0,
+ "Y": 0
+ },
+ "Mobility": 1,
+ "Delay": 1,
+ "Acceleration": 1,
+ "Radius": 0
+ },
+ {
+ "Position": {
+ "X": 0,
+ "Y": 4
+ },
+ "Mobility": 0.9,
+ "Delay": 0.9,
+ "Acceleration": 1.5,
+ "Radius": 4
+ }
+ ],
+ "Normalization": {
+ "Position": {
+ "Minimum": -10,
+ "Default": 0,
+ "Maximum": 10
+ },
+ "Angle": {
+ "Minimum": -10,
+ "Default": 0,
+ "Maximum": 10
+ }
+ }
+ },
+ {
+ "Id": "PhysicsSetting8",
+ "Input": [
+ {
+ "Source": {
+ "Target": "Parameter",
+ "Id": "ParamBodyAngleX"
+ },
+ "Weight": 100,
+ "Type": "X",
+ "Reflect": false
+ },
+ {
+ "Source": {
+ "Target": "Parameter",
+ "Id": "ParamBodyAngleZ"
+ },
+ "Weight": 100,
+ "Type": "Angle",
+ "Reflect": false
+ }
+ ],
+ "Output": [
+ {
+ "Destination": {
+ "Target": "Parameter",
+ "Id": "ParamBustRibbon01"
+ },
+ "VertexIndex": 1,
+ "Scale": 1,
+ "Weight": 100,
+ "Type": "Angle",
+ "Reflect": false
+ },
+ {
+ "Destination": {
+ "Target": "Parameter",
+ "Id": "ParamBustRibbon02"
+ },
+ "VertexIndex": 2,
+ "Scale": 1,
+ "Weight": 100,
+ "Type": "Angle",
+ "Reflect": false
+ }
+ ],
+ "Vertices": [
+ {
+ "Position": {
+ "X": 0,
+ "Y": 0
+ },
+ "Mobility": 1,
+ "Delay": 1,
+ "Acceleration": 1,
+ "Radius": 0
+ },
+ {
+ "Position": {
+ "X": 0,
+ "Y": 7
+ },
+ "Mobility": 0.9,
+ "Delay": 0.9,
+ "Acceleration": 1.2,
+ "Radius": 7
+ },
+ {
+ "Position": {
+ "X": 0,
+ "Y": 13
+ },
+ "Mobility": 0.9,
+ "Delay": 0.9,
+ "Acceleration": 1.2,
+ "Radius": 6
+ }
+ ],
+ "Normalization": {
+ "Position": {
+ "Minimum": -10,
+ "Default": 0,
+ "Maximum": 10
+ },
+ "Angle": {
+ "Minimum": -10,
+ "Default": 0,
+ "Maximum": 10
+ }
+ }
+ },
+ {
+ "Id": "PhysicsSetting9",
+ "Input": [
+ {
+ "Source": {
+ "Target": "Parameter",
+ "Id": "ParamBodyAngleX"
+ },
+ "Weight": 100,
+ "Type": "X",
+ "Reflect": false
+ },
+ {
+ "Source": {
+ "Target": "Parameter",
+ "Id": "ParamBodyAngleZ"
+ },
+ "Weight": 100,
+ "Type": "Angle",
+ "Reflect": false
+ }
+ ],
+ "Output": [
+ {
+ "Destination": {
+ "Target": "Parameter",
+ "Id": "ParamWaistRibbon01"
+ },
+ "VertexIndex": 1,
+ "Scale": 1,
+ "Weight": 100,
+ "Type": "Angle",
+ "Reflect": false
+ },
+ {
+ "Destination": {
+ "Target": "Parameter",
+ "Id": "ParamWaistRibbon02"
+ },
+ "VertexIndex": 2,
+ "Scale": 1,
+ "Weight": 100,
+ "Type": "Angle",
+ "Reflect": false
+ }
+ ],
+ "Vertices": [
+ {
+ "Position": {
+ "X": 0,
+ "Y": 0
+ },
+ "Mobility": 1,
+ "Delay": 1,
+ "Acceleration": 1,
+ "Radius": 0
+ },
+ {
+ "Position": {
+ "X": 0,
+ "Y": 12
+ },
+ "Mobility": 0.95,
+ "Delay": 0.8,
+ "Acceleration": 1.5,
+ "Radius": 12
+ },
+ {
+ "Position": {
+ "X": 0,
+ "Y": 22
+ },
+ "Mobility": 0.95,
+ "Delay": 0.8,
+ "Acceleration": 1.5,
+ "Radius": 10
+ }
+ ],
+ "Normalization": {
+ "Position": {
+ "Minimum": -10,
+ "Default": 0,
+ "Maximum": 10
+ },
+ "Angle": {
+ "Minimum": -10,
+ "Default": 0,
+ "Maximum": 10
+ }
+ }
+ }
+ ]
+}
\ No newline at end of file
diff --git a/Sample/TypeScript/Demo/Resources/Rice/motions/mtn_00.motion3.json b/Sample/TypeScript/Demo/Resources/Rice/motions/mtn_00.motion3.json
new file mode 100644
index 0000000..7b1f405
--- /dev/null
+++ b/Sample/TypeScript/Demo/Resources/Rice/motions/mtn_00.motion3.json
@@ -0,0 +1,1003 @@
+{
+ "Version": 3,
+ "Meta": {
+ "Duration": 4,
+ "Fps": 30.0,
+ "Loop": true,
+ "AreBeziersRestricted": true,
+ "CurveCount": 54,
+ "TotalSegmentCount": 95,
+ "TotalPointCount": 283,
+ "UserDataCount": 0,
+ "TotalUserDataSize": 0
+ },
+ "Curves": [
+ {
+ "Target": "Parameter",
+ "Id": "ParamAngleX",
+ "Segments": [
+ 0,
+ 0,
+ 1,
+ 1.333,
+ 0,
+ 2.667,
+ 0,
+ 4,
+ 0
+ ]
+ },
+ {
+ "Target": "Parameter",
+ "Id": "ParamAngleZ",
+ "Segments": [
+ 0,
+ 0,
+ 1,
+ 0.344,
+ 0,
+ 0.689,
+ 3,
+ 1.033,
+ 3,
+ 1,
+ 1.4,
+ 3,
+ 1.767,
+ 0,
+ 2.133,
+ 0,
+ 1,
+ 2.444,
+ 0,
+ 2.756,
+ 2,
+ 3.067,
+ 2,
+ 1,
+ 3.378,
+ 2,
+ 3.689,
+ 0,
+ 4,
+ 0
+ ]
+ },
+ {
+ "Target": "Parameter",
+ "Id": "ParamEyeLOpen",
+ "Segments": [
+ 0,
+ 1,
+ 0,
+ 4,
+ 1
+ ]
+ },
+ {
+ "Target": "Parameter",
+ "Id": "ParamEyeROpen",
+ "Segments": [
+ 0,
+ 1,
+ 0,
+ 4,
+ 1
+ ]
+ },
+ {
+ "Target": "Parameter",
+ "Id": "ParamEyeBallX",
+ "Segments": [
+ 0,
+ 0,
+ 0,
+ 4,
+ 0
+ ]
+ },
+ {
+ "Target": "Parameter",
+ "Id": "ParamEyeBallY",
+ "Segments": [
+ 0,
+ 0,
+ 0,
+ 4,
+ 0
+ ]
+ },
+ {
+ "Target": "Parameter",
+ "Id": "ParamBodyAngleX",
+ "Segments": [
+ 0,
+ 0,
+ 1,
+ 0.667,
+ 0,
+ 1.333,
+ -3,
+ 2,
+ -3,
+ 1,
+ 2.667,
+ -3,
+ 3.333,
+ 0,
+ 4,
+ 0
+ ]
+ },
+ {
+ "Target": "Parameter",
+ "Id": "ParamBodyAngleY",
+ "Segments": [
+ 0,
+ 0,
+ 1,
+ 1.333,
+ 0,
+ 2.667,
+ 0,
+ 4,
+ 0
+ ]
+ },
+ {
+ "Target": "Parameter",
+ "Id": "ParamBodyAngleZ",
+ "Segments": [
+ 0,
+ 0,
+ 1,
+ 0.667,
+ 0,
+ 1.333,
+ 1,
+ 2,
+ 1,
+ 1,
+ 2.667,
+ 1,
+ 3.333,
+ 0,
+ 4,
+ 0
+ ]
+ },
+ {
+ "Target": "Parameter",
+ "Id": "ParamShoulderR",
+ "Segments": [
+ 0,
+ 0,
+ 1,
+ 0.344,
+ 0,
+ 0.689,
+ 2,
+ 1.033,
+ 2,
+ 1,
+ 1.367,
+ 2,
+ 1.7,
+ 0,
+ 2.033,
+ 0,
+ 1,
+ 2.378,
+ 0,
+ 2.722,
+ 1,
+ 3.067,
+ 1,
+ 1,
+ 3.378,
+ 1,
+ 3.689,
+ 0,
+ 4,
+ 0
+ ]
+ },
+ {
+ "Target": "Parameter",
+ "Id": "ParamShoulderL",
+ "Segments": [
+ 0,
+ 0,
+ 1,
+ 0.344,
+ 0,
+ 0.689,
+ 2,
+ 1.033,
+ 2,
+ 1,
+ 1.367,
+ 2,
+ 1.7,
+ 0,
+ 2.033,
+ 0,
+ 1,
+ 2.378,
+ 0,
+ 2.722,
+ 1,
+ 3.067,
+ 1,
+ 1,
+ 3.378,
+ 1,
+ 3.689,
+ 0,
+ 4,
+ 0
+ ]
+ },
+ {
+ "Target": "Parameter",
+ "Id": "ParamLegKnee",
+ "Segments": [
+ 0,
+ 0,
+ 1,
+ 0.311,
+ 0,
+ 0.622,
+ 1,
+ 0.933,
+ 1,
+ 1,
+ 1.267,
+ 1,
+ 1.6,
+ 0,
+ 1.933,
+ 0,
+ 1,
+ 2.289,
+ 0,
+ 2.644,
+ 1,
+ 3,
+ 1,
+ 1,
+ 3.333,
+ 1,
+ 3.667,
+ 0,
+ 4,
+ 0
+ ]
+ },
+ {
+ "Target": "Parameter",
+ "Id": "ParamLegR",
+ "Segments": [
+ 0,
+ 0,
+ 1,
+ 1.333,
+ 0,
+ 2.667,
+ 0,
+ 4,
+ 0
+ ]
+ },
+ {
+ "Target": "Parameter",
+ "Id": "ParamLegRUpDw",
+ "Segments": [
+ 0,
+ 0,
+ 1,
+ 1.333,
+ 0,
+ 2.667,
+ 0,
+ 4,
+ 0
+ ]
+ },
+ {
+ "Target": "Parameter",
+ "Id": "ParamAllZ",
+ "Segments": [
+ 0,
+ 0,
+ 0,
+ 4,
+ 0
+ ]
+ },
+ {
+ "Target": "Parameter",
+ "Id": "ParamArmR01",
+ "Segments": [
+ 0,
+ 0,
+ 1,
+ 0.133,
+ 0,
+ 0.267,
+ -0.175,
+ 0.4,
+ -0.175,
+ 1,
+ 0.678,
+ -0.175,
+ 0.956,
+ 0.55,
+ 1.233,
+ 0.55,
+ 1,
+ 1.578,
+ 0.55,
+ 1.922,
+ -0.375,
+ 2.267,
+ -0.375,
+ 1,
+ 2.6,
+ -0.375,
+ 2.933,
+ 0.475,
+ 3.267,
+ 0.475,
+ 1,
+ 3.511,
+ 0.475,
+ 3.756,
+ 0,
+ 4,
+ 0
+ ]
+ },
+ {
+ "Target": "Parameter",
+ "Id": "ParamArmR01Y",
+ "Segments": [
+ 0,
+ 0,
+ 1,
+ 1.333,
+ 0,
+ 2.667,
+ 0,
+ 4,
+ 0
+ ]
+ },
+ {
+ "Target": "Parameter",
+ "Id": "ParamArmR02",
+ "Segments": [
+ 0,
+ 0,
+ 1,
+ 1.333,
+ 0,
+ 2.667,
+ 0,
+ 4,
+ 0
+ ]
+ },
+ {
+ "Target": "Parameter",
+ "Id": "ParamArmR02Y",
+ "Segments": [
+ 0,
+ -10,
+ 1,
+ 1.333,
+ -10,
+ 2.667,
+ -10,
+ 4,
+ -10
+ ]
+ },
+ {
+ "Target": "Parameter",
+ "Id": "ParamArmR03",
+ "Segments": [
+ 0,
+ 0,
+ 1,
+ 0.167,
+ 0,
+ 0.333,
+ -1,
+ 0.5,
+ -1,
+ 1,
+ 0.778,
+ -1,
+ 1.056,
+ 3,
+ 1.333,
+ 3,
+ 1,
+ 1.667,
+ 3,
+ 2,
+ -2,
+ 2.333,
+ -2,
+ 1,
+ 2.678,
+ -2,
+ 3.022,
+ 1,
+ 3.367,
+ 1,
+ 1,
+ 3.578,
+ 1,
+ 3.789,
+ 0,
+ 4,
+ 0
+ ]
+ },
+ {
+ "Target": "Parameter",
+ "Id": "ParamArmL01",
+ "Segments": [
+ 0,
+ 0,
+ 1,
+ 1.333,
+ 0,
+ 2.667,
+ 0,
+ 4,
+ 0
+ ]
+ },
+ {
+ "Target": "Parameter",
+ "Id": "ParamArmL02",
+ "Segments": [
+ 0,
+ 0,
+ 1,
+ 1.333,
+ 0,
+ 2.667,
+ 0,
+ 4,
+ 0
+ ]
+ },
+ {
+ "Target": "Parameter",
+ "Id": "ParamArmL03",
+ "Segments": [
+ 0,
+ 0,
+ 1,
+ 1.333,
+ 0,
+ 2.667,
+ 0,
+ 4,
+ 0
+ ]
+ },
+ {
+ "Target": "Parameter",
+ "Id": "ParamArmChange",
+ "FadeInTime": 0.0,
+ "FadeOutTime": 0.0,
+ "Segments": [
+ 0,
+ 0,
+ 1,
+ 1.333,
+ 0,
+ 2.667,
+ 0,
+ 4,
+ 0
+ ]
+ },
+ {
+ "Target": "Parameter",
+ "Id": "ParamBookPage",
+ "Segments": [
+ 0,
+ 0,
+ 0,
+ 0.667,
+ 0,
+ 0,
+ 1.367,
+ 29,
+ 2,
+ 1.4,
+ 0,
+ 0,
+ 2.733,
+ 0,
+ 0,
+ 3.433,
+ 29,
+ 2,
+ 3.467,
+ 0,
+ 0,
+ 4,
+ 0
+ ]
+ },
+ {
+ "Target": "Parameter",
+ "Id": "ParamFlameOn",
+ "Segments": [
+ 0,
+ 0,
+ 1,
+ 1.333,
+ 0,
+ 2.667,
+ 0,
+ 4,
+ 0
+ ]
+ },
+ {
+ "Target": "Parameter",
+ "Id": "ParamFlame",
+ "Segments": [
+ 0,
+ 0,
+ 0,
+ 4,
+ 0
+ ]
+ },
+ {
+ "Target": "Parameter",
+ "Id": "ParamFlameShaking",
+ "Segments": [
+ 0,
+ 0,
+ 1,
+ 1.333,
+ 0,
+ 2.667,
+ 0,
+ 4,
+ 0
+ ]
+ },
+ {
+ "Target": "Parameter",
+ "Id": "ParamFlameX",
+ "Segments": [
+ 0,
+ 0,
+ 1,
+ 1.333,
+ 0,
+ 2.667,
+ 0,
+ 4,
+ 0
+ ]
+ },
+ {
+ "Target": "Parameter",
+ "Id": "ParamFlameY",
+ "Segments": [
+ 0,
+ 0,
+ 1,
+ 1.333,
+ 0,
+ 2.667,
+ 0,
+ 4,
+ 0
+ ]
+ },
+ {
+ "Target": "Parameter",
+ "Id": "ParamCharge01On",
+ "Segments": [
+ 0,
+ 0,
+ 1,
+ 1.333,
+ 0,
+ 2.667,
+ 0,
+ 4,
+ 0
+ ]
+ },
+ {
+ "Target": "Parameter",
+ "Id": "ParamCharge01",
+ "Segments": [
+ 0,
+ 0,
+ 0,
+ 4,
+ 0
+ ]
+ },
+ {
+ "Target": "Parameter",
+ "Id": "ParamHandLightAOn",
+ "Segments": [
+ 0,
+ 0,
+ 1,
+ 1.333,
+ 0,
+ 2.667,
+ 0,
+ 4,
+ 0
+ ]
+ },
+ {
+ "Target": "Parameter",
+ "Id": "ParamHandLightASize",
+ "Segments": [
+ 0,
+ 0,
+ 1,
+ 1.333,
+ 0,
+ 2.667,
+ 0,
+ 4,
+ 0
+ ]
+ },
+ {
+ "Target": "Parameter",
+ "Id": "ParamMagicPowersA",
+ "Segments": [
+ 0,
+ 0,
+ 1,
+ 1.333,
+ 0,
+ 2.667,
+ 0,
+ 4,
+ 0
+ ]
+ },
+ {
+ "Target": "Parameter",
+ "Id": "ParamMagicAOn",
+ "Segments": [
+ 0,
+ 0,
+ 1,
+ 1.333,
+ 0,
+ 2.667,
+ 0,
+ 4,
+ 0
+ ]
+ },
+ {
+ "Target": "Parameter",
+ "Id": "ParamMagicARotation",
+ "Segments": [
+ 0,
+ 0,
+ 0,
+ 4,
+ 0
+ ]
+ },
+ {
+ "Target": "Parameter",
+ "Id": "ParamMagicALight",
+ "Segments": [
+ 0,
+ 0,
+ 1,
+ 1.333,
+ 0,
+ 2.667,
+ 0,
+ 4,
+ 0
+ ]
+ },
+ {
+ "Target": "Parameter",
+ "Id": "ParamEffectAX",
+ "Segments": [
+ 0,
+ 0,
+ 0,
+ 4,
+ 0
+ ]
+ },
+ {
+ "Target": "Parameter",
+ "Id": "ParamEffectAY",
+ "Segments": [
+ 0,
+ 0,
+ 0,
+ 4,
+ 0
+ ]
+ },
+ {
+ "Target": "Parameter",
+ "Id": "ParamHandLightBOn",
+ "Segments": [
+ 0,
+ 0,
+ 0,
+ 4,
+ 0
+ ]
+ },
+ {
+ "Target": "Parameter",
+ "Id": "ParamHandLightBSize",
+ "Segments": [
+ 0,
+ 0,
+ 1,
+ 1.333,
+ 0,
+ 2.667,
+ 0,
+ 4,
+ 0
+ ]
+ },
+ {
+ "Target": "Parameter",
+ "Id": "ParamMagicBOn",
+ "Segments": [
+ 0,
+ 0,
+ 1,
+ 1.333,
+ 0,
+ 2.667,
+ 0,
+ 4,
+ 0
+ ]
+ },
+ {
+ "Target": "Parameter",
+ "Id": "ParamMagicBRotation",
+ "Segments": [
+ 0,
+ 0,
+ 0,
+ 4,
+ 0
+ ]
+ },
+ {
+ "Target": "Parameter",
+ "Id": "ParamMagicBMove",
+ "Segments": [
+ 0,
+ 0,
+ 1,
+ 1.333,
+ 0,
+ 2.667,
+ 0,
+ 4,
+ 0
+ ]
+ },
+ {
+ "Target": "Parameter",
+ "Id": "ParamMagicBX",
+ "Segments": [
+ 0,
+ 0,
+ 1,
+ 1.333,
+ 0,
+ 2.667,
+ 0,
+ 4,
+ 0
+ ]
+ },
+ {
+ "Target": "Parameter",
+ "Id": "ParamMagicPowersBOn",
+ "Segments": [
+ 0,
+ 0,
+ 1,
+ 1.333,
+ 0,
+ 2.667,
+ 0,
+ 4,
+ 0
+ ]
+ },
+ {
+ "Target": "Parameter",
+ "Id": "ParamMagicPowersBSize",
+ "Segments": [
+ 0,
+ 0,
+ 1,
+ 1.333,
+ 0,
+ 2.667,
+ 0,
+ 4,
+ 0
+ ]
+ },
+ {
+ "Target": "Parameter",
+ "Id": "ParamMagicPowersBThicknesses",
+ "Segments": [
+ 0,
+ 0,
+ 1,
+ 1.333,
+ 0,
+ 2.667,
+ 0,
+ 4,
+ 0
+ ]
+ },
+ {
+ "Target": "Parameter",
+ "Id": "ParamEffectBX",
+ "Segments": [
+ 0,
+ 0,
+ 0,
+ 4,
+ 0
+ ]
+ },
+ {
+ "Target": "Parameter",
+ "Id": "ParamEffectBY",
+ "Segments": [
+ 0,
+ 0,
+ 0,
+ 4,
+ 0
+ ]
+ },
+ {
+ "Target": "Parameter",
+ "Id": "ParamSkirt",
+ "Segments": [
+ 0,
+ 0,
+ 0,
+ 1,
+ 30,
+ 2,
+ 1.033,
+ 1,
+ 0,
+ 2,
+ 30,
+ 2,
+ 2.033,
+ 1,
+ 0,
+ 3,
+ 30,
+ 2,
+ 3.033,
+ 1,
+ 0,
+ 4,
+ 30
+ ]
+ },
+ {
+ "Target": "Parameter",
+ "Id": "ParamSkirtX",
+ "Segments": [
+ 0,
+ 0,
+ 1,
+ 0.167,
+ 0,
+ 0.333,
+ -0.5,
+ 0.5,
+ -0.5,
+ 1,
+ 0.778,
+ -0.5,
+ 1.056,
+ 0.2,
+ 1.333,
+ 0.2,
+ 1,
+ 1.633,
+ 0.2,
+ 1.933,
+ -0.4,
+ 2.233,
+ -0.4,
+ 1,
+ 2.567,
+ -0.4,
+ 2.9,
+ 0.4,
+ 3.233,
+ 0.4,
+ 1,
+ 3.489,
+ 0.4,
+ 3.744,
+ 0,
+ 4,
+ 0
+ ]
+ },
+ {
+ "Target": "Parameter",
+ "Id": "ParamSkirtY",
+ "Segments": [
+ 0,
+ 0,
+ 1,
+ 0.289,
+ 0,
+ 0.578,
+ 0.4,
+ 0.867,
+ 0.4,
+ 1,
+ 1.189,
+ 0.4,
+ 1.511,
+ -0.7,
+ 1.833,
+ -0.7,
+ 1,
+ 2.189,
+ -0.7,
+ 2.544,
+ 0.6,
+ 2.9,
+ 0.6,
+ 1,
+ 3.267,
+ 0.6,
+ 3.633,
+ 0,
+ 4,
+ 0
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/Sample/TypeScript/Demo/Resources/Rice/motions/mtn_01.motion3.json b/Sample/TypeScript/Demo/Resources/Rice/motions/mtn_01.motion3.json
new file mode 100644
index 0000000..9ce514b
--- /dev/null
+++ b/Sample/TypeScript/Demo/Resources/Rice/motions/mtn_01.motion3.json
@@ -0,0 +1,2428 @@
+{
+ "Version": 3,
+ "Meta": {
+ "Duration": 6,
+ "Fps": 30.0,
+ "Loop": true,
+ "AreBeziersRestricted": true,
+ "CurveCount": 54,
+ "TotalSegmentCount": 322,
+ "TotalPointCount": 880,
+ "UserDataCount": 0,
+ "TotalUserDataSize": 0
+ },
+ "Curves": [
+ {
+ "Target": "Parameter",
+ "Id": "ParamAngleX",
+ "Segments": [
+ 0,
+ 0,
+ 1,
+ 0.144,
+ 0,
+ 0.289,
+ -10,
+ 0.433,
+ -10,
+ 1,
+ 0.578,
+ -10,
+ 0.722,
+ 11.077,
+ 0.867,
+ 15,
+ 1,
+ 1.311,
+ 27.071,
+ 1.756,
+ 30,
+ 2.2,
+ 30,
+ 1,
+ 2.267,
+ 30,
+ 2.333,
+ 30,
+ 2.4,
+ 30,
+ 1,
+ 2.456,
+ 30,
+ 2.511,
+ -30,
+ 2.567,
+ -30,
+ 1,
+ 2.7,
+ -30,
+ 2.833,
+ -27,
+ 2.967,
+ -27,
+ 1,
+ 3.311,
+ -27,
+ 3.656,
+ -27,
+ 4,
+ -27,
+ 1,
+ 4.3,
+ -27,
+ 4.6,
+ 0,
+ 4.9,
+ 0,
+ 0,
+ 6,
+ 0
+ ]
+ },
+ {
+ "Target": "Parameter",
+ "Id": "ParamAngleZ",
+ "Segments": [
+ 0,
+ 0,
+ 1,
+ 0.144,
+ 0,
+ 0.289,
+ 27,
+ 0.433,
+ 27,
+ 1,
+ 0.567,
+ 27,
+ 0.7,
+ 8.467,
+ 0.833,
+ 6,
+ 1,
+ 1.289,
+ -2.429,
+ 1.744,
+ -7.126,
+ 2.2,
+ -15,
+ 1,
+ 2.278,
+ -16.344,
+ 2.356,
+ -30,
+ 2.433,
+ -30,
+ 1,
+ 2.478,
+ -30,
+ 2.522,
+ 11.148,
+ 2.567,
+ 21,
+ 1,
+ 2.611,
+ 30.852,
+ 2.656,
+ 30,
+ 2.7,
+ 30,
+ 1,
+ 2.789,
+ 30,
+ 2.878,
+ 0,
+ 2.967,
+ 0,
+ 1,
+ 3.1,
+ 0,
+ 3.233,
+ 6,
+ 3.367,
+ 6,
+ 1,
+ 3.578,
+ 6,
+ 3.789,
+ 6,
+ 4,
+ 6,
+ 1,
+ 4.156,
+ 6,
+ 4.311,
+ 6,
+ 4.467,
+ 6,
+ 1,
+ 4.644,
+ 6,
+ 4.822,
+ 0,
+ 5,
+ 0,
+ 0,
+ 6,
+ 0
+ ]
+ },
+ {
+ "Target": "Parameter",
+ "Id": "ParamEyeLOpen",
+ "FadeInTime": 0.5,
+ "FadeOutTime": 0.5,
+ "Segments": [
+ 0,
+ 1,
+ 1,
+ 0.156,
+ 1,
+ 0.311,
+ 1,
+ 0.467,
+ 1,
+ 1,
+ 0.544,
+ 1,
+ 0.622,
+ 0,
+ 0.7,
+ 0,
+ 1,
+ 1.267,
+ 0,
+ 1.833,
+ 0,
+ 2.4,
+ 0,
+ 1,
+ 2.467,
+ 0,
+ 2.533,
+ 1,
+ 2.6,
+ 1,
+ 1,
+ 3.322,
+ 1,
+ 4.044,
+ 1,
+ 4.767,
+ 1,
+ 0,
+ 6,
+ 1
+ ]
+ },
+ {
+ "Target": "Parameter",
+ "Id": "ParamEyeROpen",
+ "FadeInTime": 0.5,
+ "FadeOutTime": 0.5,
+ "Segments": [
+ 0,
+ 1,
+ 1,
+ 0.156,
+ 1,
+ 0.311,
+ 1,
+ 0.467,
+ 1,
+ 1,
+ 0.544,
+ 1,
+ 0.622,
+ 0,
+ 0.7,
+ 0,
+ 1,
+ 1.267,
+ 0,
+ 1.833,
+ 0,
+ 2.4,
+ 0,
+ 1,
+ 2.467,
+ 0,
+ 2.533,
+ 1,
+ 2.6,
+ 1,
+ 1,
+ 3.322,
+ 1,
+ 4.044,
+ 1,
+ 4.767,
+ 1,
+ 0,
+ 6,
+ 1
+ ]
+ },
+ {
+ "Target": "Parameter",
+ "Id": "ParamEyeBallX",
+ "Segments": [
+ 0,
+ 0,
+ 1,
+ 1.589,
+ 0,
+ 3.178,
+ 0,
+ 4.767,
+ 0,
+ 0,
+ 6,
+ 0
+ ]
+ },
+ {
+ "Target": "Parameter",
+ "Id": "ParamEyeBallY",
+ "Segments": [
+ 0,
+ 0,
+ 1,
+ 1.589,
+ 0,
+ 3.178,
+ 0,
+ 4.767,
+ 0,
+ 0,
+ 6,
+ 0
+ ]
+ },
+ {
+ "Target": "Parameter",
+ "Id": "ParamBodyAngleX",
+ "Segments": [
+ 0,
+ 0,
+ 1,
+ 0.111,
+ 0,
+ 0.222,
+ -10,
+ 0.333,
+ -10,
+ 1,
+ 0.456,
+ -10,
+ 0.578,
+ 6.298,
+ 0.7,
+ 7,
+ 1,
+ 1.133,
+ 9.49,
+ 1.567,
+ 10,
+ 2,
+ 10,
+ 1,
+ 2.122,
+ 10,
+ 2.244,
+ 10,
+ 2.367,
+ 10,
+ 1,
+ 2.478,
+ 10,
+ 2.589,
+ -10,
+ 2.7,
+ -10,
+ 1,
+ 2.789,
+ -10,
+ 2.878,
+ -7,
+ 2.967,
+ -7,
+ 1,
+ 3.278,
+ -7,
+ 3.589,
+ -7,
+ 3.9,
+ -7,
+ 1,
+ 3.978,
+ -7,
+ 4.056,
+ -7,
+ 4.133,
+ -7,
+ 1,
+ 4.344,
+ -7,
+ 4.556,
+ 0,
+ 4.767,
+ 0,
+ 1,
+ 4.956,
+ 0,
+ 5.144,
+ 0,
+ 5.333,
+ 0,
+ 1,
+ 5.556,
+ 0,
+ 5.778,
+ 0,
+ 6,
+ 0
+ ]
+ },
+ {
+ "Target": "Parameter",
+ "Id": "ParamBodyAngleY",
+ "Segments": [
+ 0,
+ 0,
+ 1,
+ 0.111,
+ 0,
+ 0.222,
+ 3,
+ 0.333,
+ 3,
+ 1,
+ 0.511,
+ 3,
+ 0.689,
+ 0,
+ 0.867,
+ 0,
+ 1,
+ 1.3,
+ 0,
+ 1.733,
+ 0,
+ 2.167,
+ 0,
+ 1,
+ 2.233,
+ 0,
+ 2.3,
+ -3,
+ 2.367,
+ -3,
+ 1,
+ 2.467,
+ -3,
+ 2.567,
+ 0,
+ 2.667,
+ 0,
+ 1,
+ 3.089,
+ 0,
+ 3.511,
+ 0,
+ 3.933,
+ 0,
+ 1,
+ 4.211,
+ 0,
+ 4.489,
+ 0,
+ 4.767,
+ 0,
+ 1,
+ 5.178,
+ 0,
+ 5.589,
+ 0,
+ 6,
+ 0
+ ]
+ },
+ {
+ "Target": "Parameter",
+ "Id": "ParamBodyAngleZ",
+ "Segments": [
+ 0,
+ 0,
+ 1,
+ 0.111,
+ 0,
+ 0.222,
+ 0,
+ 0.333,
+ 0,
+ 1,
+ 0.856,
+ 0,
+ 1.378,
+ 3,
+ 1.9,
+ 3,
+ 1,
+ 2,
+ 3,
+ 2.1,
+ 2.298,
+ 2.2,
+ 0,
+ 1,
+ 2.267,
+ -1.532,
+ 2.333,
+ -3,
+ 2.4,
+ -3,
+ 1,
+ 2.467,
+ -3,
+ 2.533,
+ 3,
+ 2.6,
+ 3,
+ 1,
+ 2.678,
+ 3,
+ 2.756,
+ 0,
+ 2.833,
+ 0,
+ 1,
+ 2.911,
+ 0,
+ 2.989,
+ 1,
+ 3.067,
+ 1,
+ 1,
+ 3.333,
+ 1,
+ 3.6,
+ 0,
+ 3.867,
+ 0,
+ 1,
+ 3.911,
+ 0,
+ 3.956,
+ 0,
+ 4,
+ 0,
+ 1,
+ 4.122,
+ 0,
+ 4.244,
+ 2,
+ 4.367,
+ 2,
+ 1,
+ 4.544,
+ 2,
+ 4.722,
+ 0,
+ 4.9,
+ 0,
+ 1,
+ 5.267,
+ 0,
+ 5.633,
+ 0,
+ 6,
+ 0
+ ]
+ },
+ {
+ "Target": "Parameter",
+ "Id": "ParamShoulderR",
+ "Segments": [
+ 0,
+ 0,
+ 1,
+ 0.111,
+ 0,
+ 0.222,
+ 5,
+ 0.333,
+ 5,
+ 1,
+ 0.489,
+ 5,
+ 0.644,
+ 4.6,
+ 0.8,
+ 4.6,
+ 1,
+ 1.267,
+ 4.6,
+ 1.733,
+ 4.876,
+ 2.2,
+ 5.4,
+ 1,
+ 2.267,
+ 5.475,
+ 2.333,
+ 5.461,
+ 2.4,
+ 5.6,
+ 1,
+ 2.478,
+ 5.762,
+ 2.556,
+ 10,
+ 2.633,
+ 10,
+ 1,
+ 2.744,
+ 10,
+ 2.856,
+ 7.2,
+ 2.967,
+ 7.2,
+ 1,
+ 3.311,
+ 7.2,
+ 3.656,
+ 7.2,
+ 4,
+ 7.2,
+ 1,
+ 4.256,
+ 7.2,
+ 4.511,
+ 0,
+ 4.767,
+ 0,
+ 1,
+ 5.178,
+ 0,
+ 5.589,
+ 0,
+ 6,
+ 0
+ ]
+ },
+ {
+ "Target": "Parameter",
+ "Id": "ParamShoulderL",
+ "Segments": [
+ 0,
+ 0,
+ 1,
+ 0.111,
+ 0,
+ 0.222,
+ 5,
+ 0.333,
+ 5,
+ 1,
+ 0.422,
+ 5,
+ 0.511,
+ 0,
+ 0.6,
+ 0,
+ 1,
+ 1.133,
+ 0,
+ 1.667,
+ 0,
+ 2.2,
+ 0,
+ 1,
+ 2.456,
+ 0,
+ 2.711,
+ 0,
+ 2.967,
+ 0,
+ 1,
+ 3.311,
+ 0,
+ 3.656,
+ 0,
+ 4,
+ 0,
+ 1,
+ 4.256,
+ 0,
+ 4.511,
+ 0,
+ 4.767,
+ 0,
+ 1,
+ 5.178,
+ 0,
+ 5.589,
+ 0,
+ 6,
+ 0
+ ]
+ },
+ {
+ "Target": "Parameter",
+ "Id": "ParamLegKnee",
+ "Segments": [
+ 0,
+ 0,
+ 1,
+ 0.144,
+ 0,
+ 0.289,
+ 3,
+ 0.433,
+ 3,
+ 1,
+ 0.522,
+ 3,
+ 0.611,
+ 0.075,
+ 0.7,
+ 0,
+ 1,
+ 1.167,
+ -0.394,
+ 1.633,
+ -0.614,
+ 2.1,
+ -1,
+ 1,
+ 2.178,
+ -1.064,
+ 2.256,
+ -3,
+ 2.333,
+ -3,
+ 1,
+ 2.433,
+ -3,
+ 2.533,
+ 2,
+ 2.633,
+ 2,
+ 1,
+ 2.767,
+ 2,
+ 2.9,
+ 0,
+ 3.033,
+ 0,
+ 1,
+ 3.356,
+ 0,
+ 3.678,
+ 0,
+ 4,
+ 0,
+ 1,
+ 4.256,
+ 0,
+ 4.511,
+ 0,
+ 4.767,
+ 0,
+ 1,
+ 5.178,
+ 0,
+ 5.589,
+ 0,
+ 6,
+ 0
+ ]
+ },
+ {
+ "Target": "Parameter",
+ "Id": "ParamLegR",
+ "Segments": [
+ 0,
+ 0,
+ 1,
+ 0.722,
+ 0,
+ 1.444,
+ 0,
+ 2.167,
+ 0,
+ 1,
+ 2.344,
+ 0,
+ 2.522,
+ -10,
+ 2.7,
+ -10,
+ 1,
+ 2.889,
+ -10,
+ 3.078,
+ -8,
+ 3.267,
+ -8,
+ 1,
+ 3.511,
+ -8,
+ 3.756,
+ -8,
+ 4,
+ -8,
+ 1,
+ 4.256,
+ -8,
+ 4.511,
+ 0,
+ 4.767,
+ 0,
+ 1,
+ 5.178,
+ 0,
+ 5.589,
+ 0,
+ 6,
+ 0
+ ]
+ },
+ {
+ "Target": "Parameter",
+ "Id": "ParamLegRUpDw",
+ "Segments": [
+ 0,
+ 0,
+ 1,
+ 0.678,
+ 0,
+ 1.356,
+ 0,
+ 2.033,
+ 0,
+ 1,
+ 2.133,
+ 0,
+ 2.233,
+ 3,
+ 2.333,
+ 3,
+ 1,
+ 2.433,
+ 3,
+ 2.533,
+ 0,
+ 2.633,
+ 0,
+ 1,
+ 3.1,
+ 0,
+ 3.567,
+ 0,
+ 4.033,
+ 0,
+ 1,
+ 4.167,
+ 0,
+ 4.3,
+ 1,
+ 4.433,
+ 1,
+ 1,
+ 4.589,
+ 1,
+ 4.744,
+ 0,
+ 4.9,
+ 0,
+ 1,
+ 5.267,
+ 0,
+ 5.633,
+ 0,
+ 6,
+ 0
+ ]
+ },
+ {
+ "Target": "Parameter",
+ "Id": "ParamAllZ",
+ "Segments": [
+ 0,
+ 0,
+ 1,
+ 1.333,
+ 0,
+ 2.667,
+ 0,
+ 4,
+ 0,
+ 1,
+ 4.244,
+ 0,
+ 4.489,
+ 0,
+ 4.733,
+ 0,
+ 0,
+ 6,
+ 0
+ ]
+ },
+ {
+ "Target": "Parameter",
+ "Id": "ParamArmR01",
+ "Segments": [
+ 0,
+ 0,
+ 1,
+ 0.133,
+ 0,
+ 0.267,
+ 5,
+ 0.4,
+ 5,
+ 1,
+ 0.5,
+ 5,
+ 0.6,
+ -1.703,
+ 0.7,
+ -2,
+ 1,
+ 1.111,
+ -3.221,
+ 1.522,
+ -3.831,
+ 1.933,
+ -5,
+ 1,
+ 2.011,
+ -5.221,
+ 2.089,
+ -9,
+ 2.167,
+ -9,
+ 1,
+ 2.233,
+ -9,
+ 2.3,
+ -8.692,
+ 2.367,
+ -6,
+ 1,
+ 2.4,
+ -4.654,
+ 2.433,
+ 28.535,
+ 2.467,
+ 29,
+ 1,
+ 2.533,
+ 29.93,
+ 2.6,
+ 30,
+ 2.667,
+ 30,
+ 1,
+ 2.756,
+ 30,
+ 2.844,
+ 29,
+ 2.933,
+ 29,
+ 1,
+ 3.022,
+ 29,
+ 3.111,
+ 30,
+ 3.2,
+ 30,
+ 1,
+ 3.489,
+ 30,
+ 3.778,
+ 30,
+ 4.067,
+ 30,
+ 1,
+ 4.356,
+ 30,
+ 4.644,
+ -0.525,
+ 4.933,
+ -0.525,
+ 1,
+ 5.144,
+ -0.525,
+ 5.356,
+ 0,
+ 5.567,
+ 0,
+ 1,
+ 5.711,
+ 0,
+ 5.856,
+ 0,
+ 6,
+ 0
+ ]
+ },
+ {
+ "Target": "Parameter",
+ "Id": "ParamArmR01Y",
+ "Segments": [
+ 0,
+ 0,
+ 1,
+ 1.389,
+ 0,
+ 2.778,
+ 0,
+ 4.167,
+ 0,
+ 1,
+ 4.422,
+ 0,
+ 4.678,
+ 0,
+ 4.933,
+ 0,
+ 1,
+ 5.289,
+ 0,
+ 5.644,
+ 0,
+ 6,
+ 0
+ ]
+ },
+ {
+ "Target": "Parameter",
+ "Id": "ParamArmR02",
+ "Segments": [
+ 0,
+ 0,
+ 1,
+ 0.133,
+ 0,
+ 0.267,
+ 1,
+ 0.4,
+ 1,
+ 1,
+ 0.522,
+ 1,
+ 0.644,
+ -33.746,
+ 0.767,
+ -34,
+ 1,
+ 1.178,
+ -34.856,
+ 1.589,
+ -35.216,
+ 2,
+ -36,
+ 1,
+ 2.078,
+ -36.148,
+ 2.156,
+ -40,
+ 2.233,
+ -40,
+ 1,
+ 2.3,
+ -40,
+ 2.367,
+ -35.967,
+ 2.433,
+ -24,
+ 1,
+ 2.467,
+ -18.017,
+ 2.5,
+ -2.828,
+ 2.533,
+ 0,
+ 1,
+ 2.578,
+ 3.77,
+ 2.622,
+ 4,
+ 2.667,
+ 4,
+ 1,
+ 2.756,
+ 4,
+ 2.844,
+ 0,
+ 2.933,
+ 0,
+ 1,
+ 3.344,
+ 0,
+ 3.756,
+ 0,
+ 4.167,
+ 0,
+ 1,
+ 4.422,
+ 0,
+ 4.678,
+ 0,
+ 4.933,
+ 0,
+ 1,
+ 5.289,
+ 0,
+ 5.644,
+ 0,
+ 6,
+ 0
+ ]
+ },
+ {
+ "Target": "Parameter",
+ "Id": "ParamArmR02Y",
+ "Segments": [
+ 0,
+ -10,
+ 1,
+ 0.133,
+ -10,
+ 0.267,
+ -10,
+ 0.4,
+ -10,
+ 1,
+ 0.522,
+ -10,
+ 0.644,
+ -20,
+ 0.767,
+ -20,
+ 1,
+ 1.178,
+ -20,
+ 1.589,
+ -20,
+ 2,
+ -20,
+ 1,
+ 2.078,
+ -20,
+ 2.156,
+ -20,
+ 2.233,
+ -20,
+ 1,
+ 2.289,
+ -20,
+ 2.344,
+ -18.458,
+ 2.4,
+ -10,
+ 1,
+ 2.422,
+ -6.617,
+ 2.444,
+ 10,
+ 2.467,
+ 10,
+ 1,
+ 2.5,
+ 10,
+ 2.533,
+ 0,
+ 2.567,
+ 0,
+ 1,
+ 3.044,
+ 0,
+ 3.522,
+ 0,
+ 4,
+ 0,
+ 1,
+ 4.256,
+ 0,
+ 4.511,
+ -10,
+ 4.767,
+ -10,
+ 1,
+ 5.178,
+ -10,
+ 5.589,
+ -10,
+ 6,
+ -10
+ ]
+ },
+ {
+ "Target": "Parameter",
+ "Id": "ParamArmR03",
+ "Segments": [
+ 0,
+ 0,
+ 1,
+ 0.156,
+ 0,
+ 0.311,
+ 18,
+ 0.467,
+ 18,
+ 1,
+ 0.6,
+ 18,
+ 0.733,
+ -15.591,
+ 0.867,
+ -16,
+ 1,
+ 1.289,
+ -17.295,
+ 1.711,
+ -17.781,
+ 2.133,
+ -19,
+ 1,
+ 2.233,
+ -19.289,
+ 2.333,
+ -30,
+ 2.433,
+ -30,
+ 1,
+ 2.533,
+ -30,
+ 2.633,
+ 11,
+ 2.733,
+ 11,
+ 1,
+ 2.844,
+ 11,
+ 2.956,
+ 0,
+ 3.067,
+ 0,
+ 1,
+ 3.378,
+ 0,
+ 3.689,
+ 0,
+ 4,
+ 0,
+ 1,
+ 4.256,
+ 0,
+ 4.511,
+ 0,
+ 4.767,
+ 0,
+ 1,
+ 5.178,
+ 0,
+ 5.589,
+ 0,
+ 6,
+ 0
+ ]
+ },
+ {
+ "Target": "Parameter",
+ "Id": "ParamArmL01",
+ "Segments": [
+ 0,
+ 0,
+ 1,
+ 0.267,
+ 0,
+ 0.533,
+ 0,
+ 0.8,
+ 0,
+ 1,
+ 1.289,
+ 0,
+ 1.778,
+ 0,
+ 2.267,
+ 0,
+ 1,
+ 2.411,
+ 0,
+ 2.556,
+ 7,
+ 2.7,
+ 7,
+ 1,
+ 2.811,
+ 7,
+ 2.922,
+ 3,
+ 3.033,
+ 3,
+ 1,
+ 3.356,
+ 3,
+ 3.678,
+ 3,
+ 4,
+ 3,
+ 1,
+ 4.256,
+ 3,
+ 4.511,
+ 0,
+ 4.767,
+ 0,
+ 1,
+ 5.178,
+ 0,
+ 5.589,
+ 0,
+ 6,
+ 0
+ ]
+ },
+ {
+ "Target": "Parameter",
+ "Id": "ParamArmL02",
+ "Segments": [
+ 0,
+ 0,
+ 1,
+ 0.167,
+ 0,
+ 0.333,
+ 0,
+ 0.5,
+ 0,
+ 1,
+ 0.633,
+ 0,
+ 0.767,
+ 0,
+ 0.9,
+ 0,
+ 1,
+ 1.244,
+ 0,
+ 1.589,
+ 5,
+ 1.933,
+ 5,
+ 1,
+ 2.089,
+ 5,
+ 2.244,
+ 5,
+ 2.4,
+ 5,
+ 1,
+ 2.5,
+ 5,
+ 2.6,
+ -5,
+ 2.7,
+ -5,
+ 1,
+ 2.844,
+ -5,
+ 2.989,
+ -3,
+ 3.133,
+ -3,
+ 1,
+ 3.422,
+ -3,
+ 3.711,
+ -3,
+ 4,
+ -3,
+ 1,
+ 4.256,
+ -3,
+ 4.511,
+ 0,
+ 4.767,
+ 0,
+ 1,
+ 5.178,
+ 0,
+ 5.589,
+ 0,
+ 6,
+ 0
+ ]
+ },
+ {
+ "Target": "Parameter",
+ "Id": "ParamArmL03",
+ "Segments": [
+ 0,
+ 0,
+ 1,
+ 0.333,
+ 0,
+ 0.667,
+ 0,
+ 1,
+ 0,
+ 1,
+ 1.367,
+ 0,
+ 1.733,
+ -0.804,
+ 2.1,
+ -4,
+ 1,
+ 2.233,
+ -5.162,
+ 2.367,
+ -8,
+ 2.5,
+ -8,
+ 1,
+ 2.611,
+ -8,
+ 2.722,
+ 0,
+ 2.833,
+ 0,
+ 1,
+ 3,
+ 0,
+ 3.167,
+ -5,
+ 3.333,
+ -5,
+ 1,
+ 3.556,
+ -5,
+ 3.778,
+ -5,
+ 4,
+ -5,
+ 1,
+ 4.256,
+ -5,
+ 4.511,
+ 0,
+ 4.767,
+ 0,
+ 1,
+ 5.178,
+ 0,
+ 5.589,
+ 0,
+ 6,
+ 0
+ ]
+ },
+ {
+ "Target": "Parameter",
+ "Id": "ParamArmChange",
+ "FadeInTime": 0.0,
+ "FadeOutTime": 0.0,
+ "Segments": [
+ 0,
+ 0,
+ 1,
+ 0.8,
+ 0,
+ 1.6,
+ 0,
+ 2.4,
+ 0,
+ 2,
+ 2.433,
+ 1,
+ 1,
+ 3.122,
+ 1,
+ 3.811,
+ 1,
+ 4.5,
+ 1,
+ 2,
+ 4.533,
+ 0,
+ 1,
+ 5.022,
+ 0,
+ 5.511,
+ 0,
+ 6,
+ 0
+ ]
+ },
+ {
+ "Target": "Parameter",
+ "Id": "ParamBookPage",
+ "Segments": [
+ 0,
+ 0,
+ 0,
+ 2.5,
+ 0,
+ 0,
+ 2.667,
+ 30,
+ 2,
+ 2.7,
+ 0,
+ 0,
+ 2.833,
+ 30,
+ 2,
+ 2.867,
+ 0,
+ 0,
+ 3.033,
+ 30,
+ 2,
+ 3.067,
+ 0,
+ 0,
+ 3.233,
+ 30,
+ 2,
+ 3.267,
+ 0,
+ 0,
+ 3.5,
+ 30,
+ 2,
+ 3.533,
+ 0,
+ 0,
+ 3.8,
+ 30,
+ 2,
+ 3.833,
+ 0,
+ 0,
+ 4.233,
+ 30,
+ 2,
+ 4.267,
+ 0,
+ 0,
+ 4.767,
+ 0,
+ 0,
+ 6,
+ 0
+ ]
+ },
+ {
+ "Target": "Parameter",
+ "Id": "ParamFlameOn",
+ "Segments": [
+ 0,
+ 0,
+ 1,
+ 2,
+ 0,
+ 4,
+ 0,
+ 6,
+ 0
+ ]
+ },
+ {
+ "Target": "Parameter",
+ "Id": "ParamFlame",
+ "Segments": [
+ 0,
+ 0,
+ 0,
+ 6,
+ 0
+ ]
+ },
+ {
+ "Target": "Parameter",
+ "Id": "ParamFlameShaking",
+ "Segments": [
+ 0,
+ 0,
+ 1,
+ 2,
+ 0,
+ 4,
+ 0,
+ 6,
+ 0
+ ]
+ },
+ {
+ "Target": "Parameter",
+ "Id": "ParamFlameX",
+ "Segments": [
+ 0,
+ 0,
+ 1,
+ 2,
+ 0,
+ 4,
+ 0,
+ 6,
+ 0
+ ]
+ },
+ {
+ "Target": "Parameter",
+ "Id": "ParamFlameY",
+ "Segments": [
+ 0,
+ 0,
+ 1,
+ 2,
+ 0,
+ 4,
+ 0,
+ 6,
+ 0
+ ]
+ },
+ {
+ "Target": "Parameter",
+ "Id": "ParamCharge01On",
+ "Segments": [
+ 0,
+ 0,
+ 1,
+ 0.289,
+ 0,
+ 0.578,
+ 0,
+ 0.867,
+ 0,
+ 1,
+ 1.022,
+ 0,
+ 1.178,
+ 1,
+ 1.333,
+ 1,
+ 1,
+ 1.5,
+ 1,
+ 1.667,
+ 1,
+ 1.833,
+ 1,
+ 1,
+ 1.933,
+ 1,
+ 2.033,
+ 0,
+ 2.133,
+ 0,
+ 1,
+ 2.256,
+ 0,
+ 2.378,
+ 0,
+ 2.5,
+ 0,
+ 1,
+ 3.667,
+ 0,
+ 4.833,
+ 0,
+ 6,
+ 0
+ ]
+ },
+ {
+ "Target": "Parameter",
+ "Id": "ParamCharge01",
+ "Segments": [
+ 0,
+ 0,
+ 0,
+ 0.567,
+ 0,
+ 0,
+ 0.6,
+ 2.4,
+ 0,
+ 1.4,
+ 60,
+ 2,
+ 1.433,
+ 2.4,
+ 0,
+ 2.233,
+ 60,
+ 2,
+ 2.267,
+ 2.4,
+ 0,
+ 3.067,
+ 60,
+ 2,
+ 3.1,
+ 0,
+ 0,
+ 6,
+ 0
+ ]
+ },
+ {
+ "Target": "Parameter",
+ "Id": "ParamHandLightAOn",
+ "Segments": [
+ 0,
+ 0,
+ 1,
+ 0.311,
+ 0,
+ 0.622,
+ 0,
+ 0.933,
+ 0,
+ 1,
+ 1.022,
+ 0,
+ 1.111,
+ 1,
+ 1.2,
+ 1,
+ 1,
+ 1.633,
+ 1,
+ 2.067,
+ 1,
+ 2.5,
+ 1,
+ 1,
+ 2.511,
+ 1,
+ 2.522,
+ 0,
+ 2.533,
+ 0,
+ 1,
+ 3.689,
+ 0,
+ 4.844,
+ 0,
+ 6,
+ 0
+ ]
+ },
+ {
+ "Target": "Parameter",
+ "Id": "ParamHandLightASize",
+ "Segments": [
+ 0,
+ 0,
+ 1,
+ 0.3,
+ 0,
+ 0.6,
+ 0,
+ 0.9,
+ 0,
+ 1,
+ 1,
+ 0,
+ 1.1,
+ 1,
+ 1.2,
+ 1,
+ 1,
+ 1.244,
+ 1,
+ 1.289,
+ 0.9,
+ 1.333,
+ 0.9,
+ 1,
+ 1.378,
+ 0.9,
+ 1.422,
+ 1,
+ 1.467,
+ 1,
+ 1,
+ 1.511,
+ 1,
+ 1.556,
+ 0.9,
+ 1.6,
+ 0.9,
+ 1,
+ 1.644,
+ 0.9,
+ 1.689,
+ 1,
+ 1.733,
+ 1,
+ 1,
+ 1.778,
+ 1,
+ 1.822,
+ 0.9,
+ 1.867,
+ 0.9,
+ 1,
+ 1.911,
+ 0.9,
+ 1.956,
+ 1,
+ 2,
+ 1,
+ 1,
+ 2.044,
+ 1,
+ 2.089,
+ 0.9,
+ 2.133,
+ 0.9,
+ 1,
+ 2.178,
+ 0.9,
+ 2.222,
+ 1,
+ 2.267,
+ 1,
+ 1,
+ 2.311,
+ 1,
+ 2.356,
+ 0,
+ 2.4,
+ 0,
+ 1,
+ 2.444,
+ 0,
+ 2.489,
+ 0.4,
+ 2.533,
+ 0.4,
+ 1,
+ 2.544,
+ 0.4,
+ 2.556,
+ 0,
+ 2.567,
+ 0,
+ 1,
+ 3.711,
+ 0,
+ 4.856,
+ 0,
+ 6,
+ 0
+ ]
+ },
+ {
+ "Target": "Parameter",
+ "Id": "ParamMagicPowersA",
+ "Segments": [
+ 0,
+ 0,
+ 1,
+ 0.833,
+ 0,
+ 1.667,
+ 0,
+ 2.5,
+ 0,
+ 1,
+ 2.533,
+ 0,
+ 2.567,
+ 4.032,
+ 2.6,
+ 10,
+ 1,
+ 2.678,
+ 23.925,
+ 2.756,
+ 30,
+ 2.833,
+ 30,
+ 2,
+ 2.867,
+ 0,
+ 1,
+ 3.911,
+ 0,
+ 4.956,
+ 0,
+ 6,
+ 0
+ ]
+ },
+ {
+ "Target": "Parameter",
+ "Id": "ParamMagicAOn",
+ "Segments": [
+ 0,
+ 0,
+ 1,
+ 0.222,
+ 0,
+ 0.444,
+ 0,
+ 0.667,
+ 0,
+ 1,
+ 0.8,
+ 0,
+ 0.933,
+ 15,
+ 1.067,
+ 15,
+ 1,
+ 1.456,
+ 15,
+ 1.844,
+ 15,
+ 2.233,
+ 15,
+ 1,
+ 2.3,
+ 15,
+ 2.367,
+ 13,
+ 2.433,
+ 13,
+ 1,
+ 2.5,
+ 13,
+ 2.567,
+ 30,
+ 2.633,
+ 30,
+ 2,
+ 2.667,
+ 0,
+ 1,
+ 3.778,
+ 0,
+ 4.889,
+ 0,
+ 6,
+ 0
+ ]
+ },
+ {
+ "Target": "Parameter",
+ "Id": "ParamMagicARotation",
+ "Segments": [
+ 0,
+ 0,
+ 0,
+ 0.5,
+ 0,
+ 0,
+ 1.433,
+ 60,
+ 2,
+ 1.467,
+ 2.143,
+ 0,
+ 2.4,
+ 60,
+ 2,
+ 2.433,
+ 2,
+ 0,
+ 3.067,
+ 60,
+ 2,
+ 3.1,
+ 3,
+ 0,
+ 3.733,
+ 60,
+ 2,
+ 6,
+ 0
+ ]
+ },
+ {
+ "Target": "Parameter",
+ "Id": "ParamMagicALight",
+ "Segments": [
+ 0,
+ 0,
+ 1,
+ 0.289,
+ 0,
+ 0.578,
+ 0,
+ 0.867,
+ 0,
+ 1,
+ 0.989,
+ 0,
+ 1.111,
+ 0.5,
+ 1.233,
+ 0.5,
+ 1,
+ 1.367,
+ 0.5,
+ 1.5,
+ 0.4,
+ 1.633,
+ 0.4,
+ 1,
+ 1.8,
+ 0.4,
+ 1.967,
+ 0.5,
+ 2.133,
+ 0.5,
+ 1,
+ 2.244,
+ 0.5,
+ 2.356,
+ 0,
+ 2.467,
+ 0,
+ 1,
+ 2.522,
+ 0,
+ 2.578,
+ 1,
+ 2.633,
+ 1,
+ 2,
+ 2.667,
+ 0,
+ 1,
+ 3.778,
+ 0,
+ 4.889,
+ 0,
+ 6,
+ 0
+ ]
+ },
+ {
+ "Target": "Parameter",
+ "Id": "ParamEffectAX",
+ "Segments": [
+ 0,
+ 0,
+ 0,
+ 6,
+ 0
+ ]
+ },
+ {
+ "Target": "Parameter",
+ "Id": "ParamEffectAY",
+ "Segments": [
+ 0,
+ 0,
+ 0,
+ 6,
+ 0
+ ]
+ },
+ {
+ "Target": "Parameter",
+ "Id": "ParamHandLightBOn",
+ "Segments": [
+ 0,
+ 0,
+ 1,
+ 2,
+ 0,
+ 4,
+ 0,
+ 6,
+ 0
+ ]
+ },
+ {
+ "Target": "Parameter",
+ "Id": "ParamHandLightBSize",
+ "Segments": [
+ 0,
+ 0,
+ 1,
+ 2,
+ 0,
+ 4,
+ 0,
+ 6,
+ 0
+ ]
+ },
+ {
+ "Target": "Parameter",
+ "Id": "ParamMagicBOn",
+ "Segments": [
+ 0,
+ 0,
+ 1,
+ 2,
+ 0,
+ 4,
+ 0,
+ 6,
+ 0
+ ]
+ },
+ {
+ "Target": "Parameter",
+ "Id": "ParamMagicBRotation",
+ "Segments": [
+ 0,
+ 0,
+ 0,
+ 6,
+ 0
+ ]
+ },
+ {
+ "Target": "Parameter",
+ "Id": "ParamMagicBMove",
+ "Segments": [
+ 0,
+ 0,
+ 1,
+ 2,
+ 0,
+ 4,
+ 0,
+ 6,
+ 0
+ ]
+ },
+ {
+ "Target": "Parameter",
+ "Id": "ParamMagicBX",
+ "Segments": [
+ 0,
+ 0,
+ 1,
+ 2,
+ 0,
+ 4,
+ 0,
+ 6,
+ 0
+ ]
+ },
+ {
+ "Target": "Parameter",
+ "Id": "ParamMagicPowersBOn",
+ "Segments": [
+ 0,
+ 0,
+ 1,
+ 2,
+ 0,
+ 4,
+ 0,
+ 6,
+ 0
+ ]
+ },
+ {
+ "Target": "Parameter",
+ "Id": "ParamMagicPowersBSize",
+ "Segments": [
+ 0,
+ 0,
+ 1,
+ 2,
+ 0,
+ 4,
+ 0,
+ 6,
+ 0
+ ]
+ },
+ {
+ "Target": "Parameter",
+ "Id": "ParamMagicPowersBThicknesses",
+ "Segments": [
+ 0,
+ 0,
+ 1,
+ 2,
+ 0,
+ 4,
+ 0,
+ 6,
+ 0
+ ]
+ },
+ {
+ "Target": "Parameter",
+ "Id": "ParamEffectBX",
+ "Segments": [
+ 0,
+ 0,
+ 0,
+ 6,
+ 0
+ ]
+ },
+ {
+ "Target": "Parameter",
+ "Id": "ParamEffectBY",
+ "Segments": [
+ 0,
+ 0,
+ 0,
+ 6,
+ 0
+ ]
+ },
+ {
+ "Target": "Parameter",
+ "Id": "ParamSkirt",
+ "Segments": [
+ 0,
+ 0,
+ 0,
+ 1,
+ 30,
+ 2,
+ 1.033,
+ 1,
+ 0,
+ 1.7,
+ 30,
+ 2,
+ 1.733,
+ 1,
+ 0,
+ 2.267,
+ 30,
+ 2,
+ 2.3,
+ 1.875,
+ 0,
+ 2.8,
+ 30,
+ 2,
+ 2.833,
+ 1.875,
+ 0,
+ 3.333,
+ 30,
+ 2,
+ 3.367,
+ 1.875,
+ 0,
+ 3.867,
+ 30,
+ 2,
+ 3.9,
+ 1.875,
+ 0,
+ 4.467,
+ 30,
+ 2,
+ 4.5,
+ 1.875,
+ 0,
+ 5.233,
+ 30,
+ 2,
+ 5.267,
+ 1.875,
+ 0,
+ 6,
+ 30
+ ]
+ },
+ {
+ "Target": "Parameter",
+ "Id": "ParamSkirtX",
+ "Segments": [
+ 0,
+ 0,
+ 1,
+ 0.189,
+ 0,
+ 0.378,
+ -0.7,
+ 0.567,
+ -0.7,
+ 1,
+ 0.856,
+ -0.7,
+ 1.144,
+ 0,
+ 1.433,
+ 0,
+ 1,
+ 1.7,
+ 0,
+ 1.967,
+ -0.6,
+ 2.233,
+ -0.6,
+ 1,
+ 2.311,
+ -0.6,
+ 2.389,
+ -0.637,
+ 2.467,
+ -0.5,
+ 1,
+ 2.567,
+ -0.324,
+ 2.667,
+ 1,
+ 2.767,
+ 1,
+ 1,
+ 2.844,
+ 1,
+ 2.922,
+ 0.4,
+ 3,
+ 0.4,
+ 1,
+ 3.111,
+ 0.4,
+ 3.222,
+ 1,
+ 3.333,
+ 1,
+ 1,
+ 3.444,
+ 1,
+ 3.556,
+ 0.8,
+ 3.667,
+ 0.8,
+ 1,
+ 3.767,
+ 0.8,
+ 3.867,
+ 1,
+ 3.967,
+ 1,
+ 1,
+ 4.156,
+ 1,
+ 4.344,
+ 0.2,
+ 4.533,
+ 0.2,
+ 1,
+ 4.778,
+ 0.2,
+ 5.022,
+ 0.4,
+ 5.267,
+ 0.4,
+ 1,
+ 5.511,
+ 0.4,
+ 5.756,
+ 0,
+ 6,
+ 0
+ ]
+ },
+ {
+ "Target": "Parameter",
+ "Id": "ParamSkirtY",
+ "Segments": [
+ 0,
+ 0,
+ 1,
+ 0.311,
+ 0,
+ 0.622,
+ -0.5,
+ 0.933,
+ -0.5,
+ 1,
+ 1.178,
+ -0.5,
+ 1.422,
+ 0.3,
+ 1.667,
+ 0.3,
+ 1,
+ 1.9,
+ 0.3,
+ 2.133,
+ -0.6,
+ 2.367,
+ -0.6,
+ 1,
+ 2.478,
+ -0.6,
+ 2.589,
+ 1,
+ 2.7,
+ 1,
+ 1,
+ 2.789,
+ 1,
+ 2.878,
+ -0.3,
+ 2.967,
+ -0.3,
+ 1,
+ 3.067,
+ -0.3,
+ 3.167,
+ 1,
+ 3.267,
+ 1,
+ 1,
+ 3.367,
+ 1,
+ 3.467,
+ -0.4,
+ 3.567,
+ -0.4,
+ 1,
+ 3.733,
+ -0.4,
+ 3.9,
+ 0.6,
+ 4.067,
+ 0.6,
+ 1,
+ 4.311,
+ 0.6,
+ 4.556,
+ -0.5,
+ 4.8,
+ -0.5,
+ 1,
+ 5.011,
+ -0.5,
+ 5.222,
+ 0.1,
+ 5.433,
+ 0.1,
+ 1,
+ 5.622,
+ 0.1,
+ 5.811,
+ 0,
+ 6,
+ 0
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/Sample/TypeScript/Demo/Resources/Rice/motions/mtn_02.motion3.json b/Sample/TypeScript/Demo/Resources/Rice/motions/mtn_02.motion3.json
new file mode 100644
index 0000000..d37cf0b
--- /dev/null
+++ b/Sample/TypeScript/Demo/Resources/Rice/motions/mtn_02.motion3.json
@@ -0,0 +1,1386 @@
+{
+ "Version": 3,
+ "Meta": {
+ "Duration": 5,
+ "Fps": 30.0,
+ "Loop": true,
+ "AreBeziersRestricted": true,
+ "CurveCount": 54,
+ "TotalSegmentCount": 164,
+ "TotalPointCount": 440,
+ "UserDataCount": 0,
+ "TotalUserDataSize": 0
+ },
+ "Curves": [
+ {
+ "Target": "Parameter",
+ "Id": "ParamAngleX",
+ "Segments": [
+ 0,
+ 0,
+ 1,
+ 0.278,
+ 0,
+ 0.556,
+ 30,
+ 0.833,
+ 30,
+ 1,
+ 1.189,
+ 30,
+ 1.544,
+ 26,
+ 1.9,
+ 26,
+ 1,
+ 2.344,
+ 26,
+ 2.789,
+ 26,
+ 3.233,
+ 26,
+ 1,
+ 3.622,
+ 26,
+ 4.011,
+ 0,
+ 4.4,
+ 0,
+ 0,
+ 5,
+ 0
+ ]
+ },
+ {
+ "Target": "Parameter",
+ "Id": "ParamAngleZ",
+ "Segments": [
+ 0,
+ 0,
+ 1,
+ 0.311,
+ 0,
+ 0.622,
+ 18,
+ 0.933,
+ 18,
+ 1,
+ 1.3,
+ 18,
+ 1.667,
+ 9,
+ 2.033,
+ 9,
+ 1,
+ 2.533,
+ 9,
+ 3.033,
+ 9,
+ 3.533,
+ 9,
+ 1,
+ 3.822,
+ 9,
+ 4.111,
+ -2,
+ 4.4,
+ -2,
+ 1,
+ 4.556,
+ -2,
+ 4.711,
+ 0,
+ 4.867,
+ 0,
+ 0,
+ 5,
+ 0
+ ]
+ },
+ {
+ "Target": "Parameter",
+ "Id": "ParamEyeLOpen",
+ "Segments": [
+ 0,
+ 1,
+ 0,
+ 5,
+ 1
+ ]
+ },
+ {
+ "Target": "Parameter",
+ "Id": "ParamEyeROpen",
+ "Segments": [
+ 0,
+ 1,
+ 0,
+ 5,
+ 1
+ ]
+ },
+ {
+ "Target": "Parameter",
+ "Id": "ParamEyeBallX",
+ "Segments": [
+ 0,
+ 0,
+ 1,
+ 0.256,
+ 0,
+ 0.511,
+ 1,
+ 0.767,
+ 1,
+ 1,
+ 1.611,
+ 1,
+ 2.456,
+ 1,
+ 3.3,
+ 1,
+ 1,
+ 3.667,
+ 1,
+ 4.033,
+ 0,
+ 4.4,
+ 0,
+ 0,
+ 5,
+ 0
+ ]
+ },
+ {
+ "Target": "Parameter",
+ "Id": "ParamEyeBallY",
+ "Segments": [
+ 0,
+ 0,
+ 1,
+ 0.089,
+ 0,
+ 0.178,
+ 0,
+ 0.267,
+ 0,
+ 1,
+ 0.433,
+ 0,
+ 0.6,
+ -1,
+ 0.767,
+ -1,
+ 1,
+ 1.611,
+ -1,
+ 2.456,
+ -1,
+ 3.3,
+ -1,
+ 1,
+ 3.667,
+ -1,
+ 4.033,
+ 0,
+ 4.4,
+ 0,
+ 0,
+ 5,
+ 0
+ ]
+ },
+ {
+ "Target": "Parameter",
+ "Id": "ParamBodyAngleX",
+ "Segments": [
+ 0,
+ 0,
+ 1,
+ 0.267,
+ 0,
+ 0.533,
+ -10,
+ 0.8,
+ -10,
+ 1,
+ 1.122,
+ -10,
+ 1.444,
+ -9,
+ 1.767,
+ -9,
+ 1,
+ 2.144,
+ -9,
+ 2.522,
+ -9,
+ 2.9,
+ -9,
+ 1,
+ 3.133,
+ -9,
+ 3.367,
+ -9.201,
+ 3.6,
+ -8,
+ 1,
+ 3.856,
+ -6.685,
+ 4.111,
+ 0,
+ 4.367,
+ 0,
+ 0,
+ 5,
+ 0
+ ]
+ },
+ {
+ "Target": "Parameter",
+ "Id": "ParamBodyAngleY",
+ "Segments": [
+ 0,
+ 0,
+ 1,
+ 0.267,
+ 0,
+ 0.533,
+ 2,
+ 0.8,
+ 2,
+ 1,
+ 1.144,
+ 2,
+ 1.489,
+ 0,
+ 1.833,
+ 0,
+ 1,
+ 2.111,
+ 0,
+ 2.389,
+ 1,
+ 2.667,
+ 1,
+ 1,
+ 2.833,
+ 1,
+ 3,
+ 1,
+ 3.167,
+ 1,
+ 1,
+ 3.344,
+ 1,
+ 3.522,
+ 2,
+ 3.7,
+ 2,
+ 1,
+ 3.922,
+ 2,
+ 4.144,
+ 0,
+ 4.367,
+ 0,
+ 0,
+ 5,
+ 0
+ ]
+ },
+ {
+ "Target": "Parameter",
+ "Id": "ParamBodyAngleZ",
+ "Segments": [
+ 0,
+ 0,
+ 1,
+ 0.289,
+ 0,
+ 0.578,
+ 1,
+ 0.867,
+ 1,
+ 1,
+ 1.222,
+ 1,
+ 1.578,
+ -0.16,
+ 1.933,
+ -0.16,
+ 1,
+ 2.2,
+ -0.16,
+ 2.467,
+ 0,
+ 2.733,
+ 0,
+ 1,
+ 2.889,
+ 0,
+ 3.044,
+ 0,
+ 3.2,
+ 0,
+ 1,
+ 3.4,
+ 0,
+ 3.6,
+ 1,
+ 3.8,
+ 1,
+ 1,
+ 3.989,
+ 1,
+ 4.178,
+ 0,
+ 4.367,
+ 0,
+ 0,
+ 5,
+ 0
+ ]
+ },
+ {
+ "Target": "Parameter",
+ "Id": "ParamShoulderR",
+ "Segments": [
+ 0,
+ 0,
+ 1,
+ 0.078,
+ 0,
+ 0.156,
+ 0,
+ 0.233,
+ 0,
+ 1,
+ 0.478,
+ 0,
+ 0.722,
+ 5.2,
+ 0.967,
+ 5.2,
+ 1,
+ 1.211,
+ 5.2,
+ 1.456,
+ 0,
+ 1.7,
+ 0,
+ 0,
+ 5,
+ 0
+ ]
+ },
+ {
+ "Target": "Parameter",
+ "Id": "ParamShoulderL",
+ "Segments": [
+ 0,
+ 0,
+ 1,
+ 0.078,
+ 0,
+ 0.156,
+ 0,
+ 0.233,
+ 0,
+ 1,
+ 0.478,
+ 0,
+ 0.722,
+ 5.2,
+ 0.967,
+ 5.2,
+ 1,
+ 1.211,
+ 5.2,
+ 1.456,
+ 0,
+ 1.7,
+ 0,
+ 0,
+ 5,
+ 0
+ ]
+ },
+ {
+ "Target": "Parameter",
+ "Id": "ParamLegKnee",
+ "Segments": [
+ 0,
+ 0,
+ 0,
+ 5,
+ 0
+ ]
+ },
+ {
+ "Target": "Parameter",
+ "Id": "ParamLegR",
+ "Segments": [
+ 0,
+ 0,
+ 0,
+ 5,
+ 0
+ ]
+ },
+ {
+ "Target": "Parameter",
+ "Id": "ParamLegRUpDw",
+ "Segments": [
+ 0,
+ 0,
+ 0,
+ 5,
+ 0
+ ]
+ },
+ {
+ "Target": "Parameter",
+ "Id": "ParamAllZ",
+ "Segments": [
+ 0,
+ 0,
+ 0,
+ 5,
+ 0
+ ]
+ },
+ {
+ "Target": "Parameter",
+ "Id": "ParamArmR01",
+ "Segments": [
+ 0,
+ 0,
+ 1,
+ 0.189,
+ 0,
+ 0.378,
+ -9,
+ 0.567,
+ -9,
+ 1,
+ 0.867,
+ -9,
+ 1.167,
+ -7,
+ 1.467,
+ -7,
+ 1,
+ 2.033,
+ -7,
+ 2.6,
+ -7,
+ 3.167,
+ -7,
+ 1,
+ 3.511,
+ -7,
+ 3.856,
+ 0,
+ 4.2,
+ 0,
+ 1,
+ 4.4,
+ 0,
+ 4.6,
+ 0,
+ 4.8,
+ 0,
+ 0,
+ 5,
+ 0
+ ]
+ },
+ {
+ "Target": "Parameter",
+ "Id": "ParamArmR01Y",
+ "Segments": [
+ 0,
+ 0,
+ 1,
+ 1.067,
+ 0,
+ 2.133,
+ 0,
+ 3.2,
+ 0,
+ 1,
+ 3.656,
+ 0,
+ 4.111,
+ 0,
+ 4.567,
+ 0,
+ 0,
+ 5,
+ 0
+ ]
+ },
+ {
+ "Target": "Parameter",
+ "Id": "ParamArmR02",
+ "Segments": [
+ 0,
+ 0,
+ 1,
+ 0.067,
+ 0,
+ 0.133,
+ 0,
+ 0.2,
+ 0,
+ 1,
+ 0.367,
+ 0,
+ 0.533,
+ -27,
+ 0.7,
+ -27,
+ 1,
+ 1.011,
+ -27,
+ 1.322,
+ -22,
+ 1.633,
+ -22,
+ 1,
+ 1.9,
+ -22,
+ 2.167,
+ -23,
+ 2.433,
+ -23,
+ 1,
+ 2.589,
+ -23,
+ 2.744,
+ -23,
+ 2.9,
+ -23,
+ 1,
+ 3.033,
+ -23,
+ 3.167,
+ -24.01,
+ 3.3,
+ -24.01,
+ 1,
+ 3.489,
+ -24.01,
+ 3.678,
+ 1,
+ 3.867,
+ 1,
+ 1,
+ 4.1,
+ 1,
+ 4.333,
+ 0,
+ 4.567,
+ 0,
+ 0,
+ 5,
+ 0
+ ]
+ },
+ {
+ "Target": "Parameter",
+ "Id": "ParamArmR02Y",
+ "Segments": [
+ 0,
+ -10,
+ 1,
+ 0.033,
+ -10,
+ 0.067,
+ -10,
+ 0.1,
+ -10,
+ 1,
+ 0.233,
+ -10,
+ 0.367,
+ -18,
+ 0.5,
+ -18,
+ 1,
+ 1.478,
+ -18,
+ 2.456,
+ -18,
+ 3.433,
+ -18,
+ 1,
+ 3.611,
+ -18,
+ 3.789,
+ -10,
+ 3.967,
+ -10,
+ 0,
+ 5,
+ -10
+ ]
+ },
+ {
+ "Target": "Parameter",
+ "Id": "ParamArmR03",
+ "Segments": [
+ 0,
+ 0,
+ 1,
+ 0.267,
+ 0,
+ 0.533,
+ -10,
+ 0.8,
+ -10,
+ 1,
+ 1.156,
+ -10,
+ 1.511,
+ 8,
+ 1.867,
+ 8,
+ 1,
+ 2.311,
+ 8,
+ 2.756,
+ 8,
+ 3.2,
+ 8,
+ 1,
+ 3.656,
+ 8,
+ 4.111,
+ 0,
+ 4.567,
+ 0,
+ 0,
+ 5,
+ 0
+ ]
+ },
+ {
+ "Target": "Parameter",
+ "Id": "ParamArmL01",
+ "Segments": [
+ 0,
+ 0,
+ 1,
+ 0.211,
+ 0,
+ 0.422,
+ -6,
+ 0.633,
+ -6,
+ 1,
+ 1.533,
+ -6,
+ 2.433,
+ -6,
+ 3.333,
+ -6,
+ 1,
+ 3.678,
+ -6,
+ 4.022,
+ 0,
+ 4.367,
+ 0,
+ 0,
+ 5,
+ 0
+ ]
+ },
+ {
+ "Target": "Parameter",
+ "Id": "ParamArmL02",
+ "Segments": [
+ 0,
+ 0,
+ 1,
+ 0.233,
+ 0,
+ 0.467,
+ -2,
+ 0.7,
+ -2,
+ 1,
+ 1.622,
+ -2,
+ 2.544,
+ -2,
+ 3.467,
+ -2,
+ 1,
+ 3.8,
+ -2,
+ 4.133,
+ 0,
+ 4.467,
+ 0,
+ 0,
+ 5,
+ 0
+ ]
+ },
+ {
+ "Target": "Parameter",
+ "Id": "ParamArmL03",
+ "Segments": [
+ 0,
+ 0,
+ 1,
+ 0.233,
+ 0,
+ 0.467,
+ -11,
+ 0.7,
+ -11,
+ 1,
+ 1.589,
+ -11,
+ 2.478,
+ -11,
+ 3.367,
+ -11,
+ 1,
+ 3.7,
+ -11,
+ 4.033,
+ 0,
+ 4.367,
+ 0,
+ 0,
+ 5,
+ 0
+ ]
+ },
+ {
+ "Target": "Parameter",
+ "Id": "ParamArmChange",
+ "FadeInTime": 0.0,
+ "FadeOutTime": 0.0,
+ "Segments": [
+ 0,
+ 0,
+ 0,
+ 5,
+ 0
+ ]
+ },
+ {
+ "Target": "Parameter",
+ "Id": "ParamBookPage",
+ "Segments": [
+ 0,
+ 0,
+ 0,
+ 5,
+ 0
+ ]
+ },
+ {
+ "Target": "Parameter",
+ "Id": "ParamFlameOn",
+ "Segments": [
+ 0,
+ 0,
+ 1,
+ 0.2,
+ 0,
+ 0.4,
+ 0,
+ 0.6,
+ 0,
+ 1,
+ 0.756,
+ 0,
+ 0.911,
+ 1,
+ 1.067,
+ 1,
+ 1,
+ 2,
+ 1,
+ 2.933,
+ 1,
+ 3.867,
+ 1,
+ 1,
+ 4.011,
+ 1,
+ 4.156,
+ 0,
+ 4.3,
+ 0,
+ 0,
+ 5,
+ 0
+ ]
+ },
+ {
+ "Target": "Parameter",
+ "Id": "ParamFlame",
+ "Segments": [
+ 0,
+ 0,
+ 0,
+ 0.833,
+ 30,
+ 2,
+ 0.867,
+ 1.2,
+ 0,
+ 1.667,
+ 30,
+ 2,
+ 1.7,
+ 1.2,
+ 0,
+ 2.5,
+ 30,
+ 2,
+ 2.533,
+ 1.2,
+ 0,
+ 3.333,
+ 30,
+ 2,
+ 3.367,
+ 1.2,
+ 0,
+ 4.167,
+ 30,
+ 2,
+ 4.2,
+ 1.2,
+ 0,
+ 5,
+ 30
+ ]
+ },
+ {
+ "Target": "Parameter",
+ "Id": "ParamFlameShaking",
+ "Segments": [
+ 0,
+ 0,
+ 1,
+ 1.667,
+ 0,
+ 3.333,
+ 0,
+ 5,
+ 0
+ ]
+ },
+ {
+ "Target": "Parameter",
+ "Id": "ParamFlameX",
+ "Segments": [
+ 0,
+ 0,
+ 1,
+ 0.2,
+ 0,
+ 0.4,
+ -24,
+ 0.6,
+ -24,
+ 1,
+ 1.789,
+ -24,
+ 2.978,
+ 0,
+ 4.167,
+ 0,
+ 1,
+ 4.444,
+ 0,
+ 4.722,
+ 0,
+ 5,
+ 0
+ ]
+ },
+ {
+ "Target": "Parameter",
+ "Id": "ParamFlameY",
+ "Segments": [
+ 0,
+ 0,
+ 1,
+ 0.089,
+ 0,
+ 0.178,
+ -10,
+ 0.267,
+ -10,
+ 1,
+ 0.489,
+ -10,
+ 0.711,
+ 4,
+ 0.933,
+ 4,
+ 1,
+ 1.111,
+ 4,
+ 1.289,
+ -10,
+ 1.467,
+ -10,
+ 1,
+ 1.689,
+ -10,
+ 1.911,
+ 4,
+ 2.133,
+ 4,
+ 1,
+ 2.3,
+ 4,
+ 2.467,
+ -10,
+ 2.633,
+ -10,
+ 1,
+ 2.867,
+ -10,
+ 3.1,
+ 4,
+ 3.333,
+ 4,
+ 1,
+ 3.611,
+ 4,
+ 3.889,
+ 0,
+ 4.167,
+ 0,
+ 1,
+ 4.444,
+ 0,
+ 4.722,
+ 0,
+ 5,
+ 0
+ ]
+ },
+ {
+ "Target": "Parameter",
+ "Id": "ParamCharge01On",
+ "Segments": [
+ 0,
+ 0,
+ 1,
+ 1.667,
+ 0,
+ 3.333,
+ 0,
+ 5,
+ 0
+ ]
+ },
+ {
+ "Target": "Parameter",
+ "Id": "ParamCharge01",
+ "Segments": [
+ 0,
+ 0,
+ 0,
+ 5,
+ 0
+ ]
+ },
+ {
+ "Target": "Parameter",
+ "Id": "ParamHandLightAOn",
+ "Segments": [
+ 0,
+ 0,
+ 1,
+ 1.667,
+ 0,
+ 3.333,
+ 0,
+ 5,
+ 0
+ ]
+ },
+ {
+ "Target": "Parameter",
+ "Id": "ParamHandLightASize",
+ "Segments": [
+ 0,
+ 0,
+ 1,
+ 1.667,
+ 0,
+ 3.333,
+ 0,
+ 5,
+ 0
+ ]
+ },
+ {
+ "Target": "Parameter",
+ "Id": "ParamMagicPowersA",
+ "Segments": [
+ 0,
+ 0,
+ 1,
+ 1.667,
+ 0,
+ 3.333,
+ 0,
+ 5,
+ 0
+ ]
+ },
+ {
+ "Target": "Parameter",
+ "Id": "ParamMagicAOn",
+ "Segments": [
+ 0,
+ 0,
+ 1,
+ 1.667,
+ 0,
+ 3.333,
+ 0,
+ 5,
+ 0
+ ]
+ },
+ {
+ "Target": "Parameter",
+ "Id": "ParamMagicARotation",
+ "Segments": [
+ 0,
+ 0,
+ 0,
+ 5,
+ 0
+ ]
+ },
+ {
+ "Target": "Parameter",
+ "Id": "ParamMagicALight",
+ "Segments": [
+ 0,
+ 0,
+ 1,
+ 1.667,
+ 0,
+ 3.333,
+ 0,
+ 5,
+ 0
+ ]
+ },
+ {
+ "Target": "Parameter",
+ "Id": "ParamEffectAX",
+ "Segments": [
+ 0,
+ 0,
+ 0,
+ 5,
+ 0
+ ]
+ },
+ {
+ "Target": "Parameter",
+ "Id": "ParamEffectAY",
+ "Segments": [
+ 0,
+ 0,
+ 0,
+ 5,
+ 0
+ ]
+ },
+ {
+ "Target": "Parameter",
+ "Id": "ParamHandLightBOn",
+ "Segments": [
+ 0,
+ 0,
+ 1,
+ 1.667,
+ 0,
+ 3.333,
+ 0,
+ 5,
+ 0
+ ]
+ },
+ {
+ "Target": "Parameter",
+ "Id": "ParamHandLightBSize",
+ "Segments": [
+ 0,
+ 0,
+ 1,
+ 1.667,
+ 0,
+ 3.333,
+ 0,
+ 5,
+ 0
+ ]
+ },
+ {
+ "Target": "Parameter",
+ "Id": "ParamMagicBOn",
+ "Segments": [
+ 0,
+ 0,
+ 1,
+ 1.667,
+ 0,
+ 3.333,
+ 0,
+ 5,
+ 0
+ ]
+ },
+ {
+ "Target": "Parameter",
+ "Id": "ParamMagicBRotation",
+ "Segments": [
+ 0,
+ 0,
+ 0,
+ 5,
+ 0
+ ]
+ },
+ {
+ "Target": "Parameter",
+ "Id": "ParamMagicBMove",
+ "Segments": [
+ 0,
+ 0,
+ 1,
+ 1.667,
+ 0,
+ 3.333,
+ 0,
+ 5,
+ 0
+ ]
+ },
+ {
+ "Target": "Parameter",
+ "Id": "ParamMagicBX",
+ "Segments": [
+ 0,
+ 0,
+ 1,
+ 1.667,
+ 0,
+ 3.333,
+ 0,
+ 5,
+ 0
+ ]
+ },
+ {
+ "Target": "Parameter",
+ "Id": "ParamMagicPowersBOn",
+ "Segments": [
+ 0,
+ 0,
+ 1,
+ 1.667,
+ 0,
+ 3.333,
+ 0,
+ 5,
+ 0
+ ]
+ },
+ {
+ "Target": "Parameter",
+ "Id": "ParamMagicPowersBSize",
+ "Segments": [
+ 0,
+ 0,
+ 1,
+ 1.667,
+ 0,
+ 3.333,
+ 0,
+ 5,
+ 0
+ ]
+ },
+ {
+ "Target": "Parameter",
+ "Id": "ParamMagicPowersBThicknesses",
+ "Segments": [
+ 0,
+ 0,
+ 1,
+ 1.667,
+ 0,
+ 3.333,
+ 0,
+ 5,
+ 0
+ ]
+ },
+ {
+ "Target": "Parameter",
+ "Id": "ParamEffectBX",
+ "Segments": [
+ 0,
+ 0,
+ 0,
+ 5,
+ 0
+ ]
+ },
+ {
+ "Target": "Parameter",
+ "Id": "ParamEffectBY",
+ "Segments": [
+ 0,
+ 0,
+ 0,
+ 5,
+ 0
+ ]
+ },
+ {
+ "Target": "Parameter",
+ "Id": "ParamSkirt",
+ "Segments": [
+ 0,
+ 0,
+ 0,
+ 1,
+ 30,
+ 2,
+ 1.033,
+ 1,
+ 0,
+ 2,
+ 30,
+ 2,
+ 2.033,
+ 1,
+ 0,
+ 3,
+ 30,
+ 2,
+ 3.033,
+ 1,
+ 0,
+ 4,
+ 30,
+ 2,
+ 4.033,
+ 1,
+ 0,
+ 5,
+ 30
+ ]
+ },
+ {
+ "Target": "Parameter",
+ "Id": "ParamSkirtX",
+ "Segments": [
+ 0,
+ 0,
+ 1,
+ 0.167,
+ 0,
+ 0.333,
+ -0.5,
+ 0.5,
+ -0.5,
+ 1,
+ 0.778,
+ -0.5,
+ 1.056,
+ 0.2,
+ 1.333,
+ 0.2,
+ 1,
+ 1.633,
+ 0.2,
+ 1.933,
+ -0.4,
+ 2.233,
+ -0.4,
+ 1,
+ 2.567,
+ -0.4,
+ 2.9,
+ 0.4,
+ 3.233,
+ 0.4,
+ 1,
+ 3.822,
+ 0.4,
+ 4.411,
+ 0,
+ 5,
+ 0
+ ]
+ },
+ {
+ "Target": "Parameter",
+ "Id": "ParamSkirtY",
+ "Segments": [
+ 0,
+ 0,
+ 1,
+ 0.289,
+ 0,
+ 0.578,
+ 0.4,
+ 0.867,
+ 0.4,
+ 1,
+ 1.189,
+ 0.4,
+ 1.511,
+ -0.7,
+ 1.833,
+ -0.7,
+ 1,
+ 2.222,
+ -0.7,
+ 2.611,
+ -0.214,
+ 3,
+ 0,
+ 1,
+ 3.378,
+ 0.208,
+ 3.756,
+ 0.2,
+ 4.133,
+ 0.2,
+ 1,
+ 4.422,
+ 0.2,
+ 4.711,
+ 0,
+ 5,
+ 0
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/Sample/TypeScript/Demo/Resources/Rice/motions/mtn_03.motion3.json b/Sample/TypeScript/Demo/Resources/Rice/motions/mtn_03.motion3.json
new file mode 100644
index 0000000..9672683
--- /dev/null
+++ b/Sample/TypeScript/Demo/Resources/Rice/motions/mtn_03.motion3.json
@@ -0,0 +1,2231 @@
+{
+ "Version": 3,
+ "Meta": {
+ "Duration": 8,
+ "Fps": 30.0,
+ "Loop": true,
+ "AreBeziersRestricted": true,
+ "CurveCount": 54,
+ "TotalSegmentCount": 303,
+ "TotalPointCount": 793,
+ "UserDataCount": 0,
+ "TotalUserDataSize": 0
+ },
+ "Curves": [
+ {
+ "Target": "Parameter",
+ "Id": "ParamAngleX",
+ "Segments": [
+ 0,
+ 0,
+ 1,
+ 0.1,
+ 0,
+ 0.2,
+ 30,
+ 0.3,
+ 30,
+ 1,
+ 0.433,
+ 30,
+ 0.567,
+ -30,
+ 0.7,
+ -30,
+ 1,
+ 0.978,
+ -30,
+ 1.256,
+ -30,
+ 1.533,
+ -30,
+ 1,
+ 2.022,
+ -30,
+ 2.511,
+ 30,
+ 3,
+ 30,
+ 1,
+ 3.8,
+ 30,
+ 4.6,
+ 30,
+ 5.4,
+ 30,
+ 1,
+ 5.667,
+ 30,
+ 5.933,
+ 0,
+ 6.2,
+ 0,
+ 0,
+ 8,
+ 0
+ ]
+ },
+ {
+ "Target": "Parameter",
+ "Id": "ParamAngleZ",
+ "Segments": [
+ 0,
+ 0,
+ 1,
+ 0.189,
+ 0,
+ 0.378,
+ 3.748,
+ 0.567,
+ 10,
+ 1,
+ 0.678,
+ 13.678,
+ 0.789,
+ 15,
+ 0.9,
+ 15,
+ 1,
+ 1.033,
+ 15,
+ 1.167,
+ 10,
+ 1.3,
+ 10,
+ 1,
+ 1.411,
+ 10,
+ 1.522,
+ 10,
+ 1.633,
+ 10,
+ 1,
+ 2.1,
+ 10,
+ 2.567,
+ 0,
+ 3.033,
+ 0,
+ 1,
+ 3.167,
+ 0,
+ 3.3,
+ 0,
+ 3.433,
+ 0,
+ 1,
+ 3.489,
+ 0,
+ 3.544,
+ -13,
+ 3.6,
+ -13,
+ 1,
+ 3.744,
+ -13,
+ 3.889,
+ 30,
+ 4.033,
+ 30,
+ 1,
+ 4.189,
+ 30,
+ 4.344,
+ 12,
+ 4.5,
+ 12,
+ 1,
+ 4.8,
+ 12,
+ 5.1,
+ 12,
+ 5.4,
+ 12,
+ 1,
+ 5.522,
+ 12,
+ 5.644,
+ 12,
+ 5.767,
+ 12,
+ 1,
+ 5.911,
+ 12,
+ 6.056,
+ 0,
+ 6.2,
+ 0,
+ 0,
+ 8,
+ 0
+ ]
+ },
+ {
+ "Target": "Parameter",
+ "Id": "ParamEyeLOpen",
+ "Segments": [
+ 0,
+ 1,
+ 1,
+ 2.033,
+ 1,
+ 4.067,
+ 1,
+ 6.1,
+ 1,
+ 0,
+ 8,
+ 1
+ ]
+ },
+ {
+ "Target": "Parameter",
+ "Id": "ParamEyeROpen",
+ "Segments": [
+ 0,
+ 1,
+ 1,
+ 2.033,
+ 1,
+ 4.067,
+ 1,
+ 6.1,
+ 1,
+ 0,
+ 8,
+ 1
+ ]
+ },
+ {
+ "Target": "Parameter",
+ "Id": "ParamEyeBallX",
+ "Segments": [
+ 0,
+ 0,
+ 1,
+ 0.1,
+ 0,
+ 0.2,
+ -0.6,
+ 0.3,
+ -0.6,
+ 1,
+ 0.433,
+ -0.6,
+ 0.567,
+ 0,
+ 0.7,
+ 0,
+ 1,
+ 1.644,
+ 0,
+ 2.589,
+ 0,
+ 3.533,
+ 0,
+ 1,
+ 3.611,
+ 0,
+ 3.689,
+ -0.2,
+ 3.767,
+ -0.2,
+ 1,
+ 4.011,
+ -0.2,
+ 4.256,
+ 0,
+ 4.5,
+ 0,
+ 1,
+ 5.033,
+ 0,
+ 5.567,
+ 0,
+ 6.1,
+ 0,
+ 0,
+ 8,
+ 0
+ ]
+ },
+ {
+ "Target": "Parameter",
+ "Id": "ParamEyeBallY",
+ "Segments": [
+ 0,
+ 0,
+ 1,
+ 1.178,
+ 0,
+ 2.356,
+ 0,
+ 3.533,
+ 0,
+ 1,
+ 3.611,
+ 0,
+ 3.689,
+ -0.8,
+ 3.767,
+ -0.8,
+ 1,
+ 3.856,
+ -0.8,
+ 3.944,
+ -0.8,
+ 4.033,
+ -0.8,
+ 1,
+ 4.189,
+ -0.8,
+ 4.344,
+ 0,
+ 4.5,
+ 0,
+ 1,
+ 5.033,
+ 0,
+ 5.567,
+ 0,
+ 6.1,
+ 0,
+ 0,
+ 8,
+ 0
+ ]
+ },
+ {
+ "Target": "Parameter",
+ "Id": "ParamBodyAngleX",
+ "Segments": [
+ 0,
+ 0,
+ 1,
+ 0.056,
+ 0,
+ 0.111,
+ 6.925,
+ 0.167,
+ 9,
+ 1,
+ 0.2,
+ 10.245,
+ 0.233,
+ 10,
+ 0.267,
+ 10,
+ 1,
+ 0.411,
+ 10,
+ 0.556,
+ -10,
+ 0.7,
+ -10,
+ 1,
+ 0.989,
+ -10,
+ 1.278,
+ -10,
+ 1.567,
+ -10,
+ 1,
+ 2.044,
+ -10,
+ 2.522,
+ 0,
+ 3,
+ 0,
+ 1,
+ 3.189,
+ 0,
+ 3.378,
+ 0,
+ 3.567,
+ 0,
+ 1,
+ 3.611,
+ 0,
+ 3.656,
+ 10,
+ 3.7,
+ 10,
+ 1,
+ 3.922,
+ 10,
+ 4.144,
+ 8,
+ 4.367,
+ 8,
+ 1,
+ 4.689,
+ 8,
+ 5.011,
+ 8,
+ 5.333,
+ 8,
+ 1,
+ 5.589,
+ 8,
+ 5.844,
+ 0,
+ 6.1,
+ 0,
+ 0,
+ 8,
+ 0
+ ]
+ },
+ {
+ "Target": "Parameter",
+ "Id": "ParamBodyAngleY",
+ "Segments": [
+ 0,
+ 0,
+ 1,
+ 0.522,
+ 0,
+ 1.044,
+ 0,
+ 1.567,
+ 0,
+ 1,
+ 2.822,
+ 0,
+ 4.078,
+ 0,
+ 5.333,
+ 0,
+ 1,
+ 5.589,
+ 0,
+ 5.844,
+ 0,
+ 6.1,
+ 0,
+ 0,
+ 8,
+ 0
+ ]
+ },
+ {
+ "Target": "Parameter",
+ "Id": "ParamBodyAngleZ",
+ "Segments": [
+ 0,
+ 0,
+ 1,
+ 0.1,
+ 0,
+ 0.2,
+ -3,
+ 0.3,
+ -3,
+ 1,
+ 0.444,
+ -3,
+ 0.589,
+ 1,
+ 0.733,
+ 1,
+ 1,
+ 0.933,
+ 1,
+ 1.133,
+ 0,
+ 1.333,
+ 0,
+ 1,
+ 1.422,
+ 0,
+ 1.511,
+ 0,
+ 1.6,
+ 0,
+ 1,
+ 2.067,
+ 0,
+ 2.533,
+ -3,
+ 3,
+ -3,
+ 1,
+ 3.122,
+ -3,
+ 3.244,
+ -3,
+ 3.367,
+ -3,
+ 1,
+ 3.433,
+ -3,
+ 3.5,
+ -5,
+ 3.567,
+ -5,
+ 1,
+ 3.6,
+ -5,
+ 3.633,
+ 4.75,
+ 3.667,
+ 6,
+ 1,
+ 3.756,
+ 9.333,
+ 3.844,
+ 10,
+ 3.933,
+ 10,
+ 1,
+ 4.089,
+ 10,
+ 4.244,
+ 1,
+ 4.4,
+ 1,
+ 1,
+ 4.522,
+ 1,
+ 4.644,
+ 2,
+ 4.767,
+ 2,
+ 1,
+ 4.956,
+ 2,
+ 5.144,
+ 2,
+ 5.333,
+ 2,
+ 1,
+ 5.589,
+ 2,
+ 5.844,
+ 0,
+ 6.1,
+ 0,
+ 0,
+ 8,
+ 0
+ ]
+ },
+ {
+ "Target": "Parameter",
+ "Id": "ParamShoulderR",
+ "Segments": [
+ 0,
+ 0,
+ 1,
+ 1.189,
+ 0,
+ 2.378,
+ 0,
+ 3.567,
+ 0,
+ 1,
+ 3.611,
+ 0,
+ 3.656,
+ 7.767,
+ 3.7,
+ 8.4,
+ 1,
+ 3.8,
+ 9.824,
+ 3.9,
+ 10,
+ 4,
+ 10,
+ 1,
+ 4.133,
+ 10,
+ 4.267,
+ 0,
+ 4.4,
+ 0,
+ 1,
+ 4.711,
+ 0,
+ 5.022,
+ 0,
+ 5.333,
+ 0,
+ 1,
+ 5.589,
+ 0,
+ 5.844,
+ 0,
+ 6.1,
+ 0,
+ 0,
+ 8,
+ 0
+ ]
+ },
+ {
+ "Target": "Parameter",
+ "Id": "ParamShoulderL",
+ "Segments": [
+ 0,
+ 0,
+ 1,
+ 0.089,
+ 0,
+ 0.178,
+ 0,
+ 0.267,
+ 0,
+ 1,
+ 1.956,
+ 0,
+ 3.644,
+ 0,
+ 5.333,
+ 0,
+ 1,
+ 5.589,
+ 0,
+ 5.844,
+ 0,
+ 6.1,
+ 0,
+ 0,
+ 8,
+ 0
+ ]
+ },
+ {
+ "Target": "Parameter",
+ "Id": "ParamLegKnee",
+ "Segments": [
+ 0,
+ 0,
+ 1,
+ 0.522,
+ 0,
+ 1.044,
+ 0,
+ 1.567,
+ 0,
+ 1,
+ 2.167,
+ 0,
+ 2.767,
+ 0,
+ 3.367,
+ 0,
+ 1,
+ 3.433,
+ 0,
+ 3.5,
+ -2,
+ 3.567,
+ -2,
+ 1,
+ 3.622,
+ -2,
+ 3.678,
+ 5.887,
+ 3.733,
+ 7,
+ 1,
+ 3.789,
+ 8.113,
+ 3.844,
+ 8,
+ 3.9,
+ 8,
+ 1,
+ 4.044,
+ 8,
+ 4.189,
+ 0,
+ 4.333,
+ 0,
+ 1,
+ 4.667,
+ 0,
+ 5,
+ 0,
+ 5.333,
+ 0,
+ 1,
+ 5.589,
+ 0,
+ 5.844,
+ 0,
+ 6.1,
+ 0,
+ 0,
+ 8,
+ 0
+ ]
+ },
+ {
+ "Target": "Parameter",
+ "Id": "ParamLegR",
+ "Segments": [
+ 0,
+ 0,
+ 1,
+ 0.089,
+ 0,
+ 0.178,
+ 0,
+ 0.267,
+ 0,
+ 1,
+ 0.422,
+ 0,
+ 0.578,
+ -5,
+ 0.733,
+ -5,
+ 1,
+ 1.678,
+ -5,
+ 2.622,
+ -5,
+ 3.567,
+ -5,
+ 1,
+ 3.689,
+ -5,
+ 3.811,
+ 0,
+ 3.933,
+ 0,
+ 1,
+ 4.1,
+ 0,
+ 4.267,
+ -4,
+ 4.433,
+ -4,
+ 1,
+ 4.733,
+ -4,
+ 5.033,
+ -4,
+ 5.333,
+ -4,
+ 1,
+ 5.589,
+ -4,
+ 5.844,
+ 0,
+ 6.1,
+ 0,
+ 0,
+ 8,
+ 0
+ ]
+ },
+ {
+ "Target": "Parameter",
+ "Id": "ParamLegRUpDw",
+ "Segments": [
+ 0,
+ 0,
+ 1,
+ 1.189,
+ 0,
+ 2.378,
+ 0,
+ 3.567,
+ 0,
+ 1,
+ 3.678,
+ 0,
+ 3.789,
+ 10,
+ 3.9,
+ 10,
+ 1,
+ 4.078,
+ 10,
+ 4.256,
+ 0,
+ 4.433,
+ 0,
+ 1,
+ 4.733,
+ 0,
+ 5.033,
+ 0,
+ 5.333,
+ 0,
+ 1,
+ 5.589,
+ 0,
+ 5.844,
+ 0,
+ 6.1,
+ 0,
+ 0,
+ 8,
+ 0
+ ]
+ },
+ {
+ "Target": "Parameter",
+ "Id": "ParamAllZ",
+ "Segments": [
+ 0,
+ 0,
+ 1,
+ 1.189,
+ 0,
+ 2.378,
+ 0,
+ 3.567,
+ 0,
+ 1,
+ 3.633,
+ 0,
+ 3.7,
+ 19.528,
+ 3.767,
+ 21,
+ 1,
+ 3.822,
+ 22.226,
+ 3.878,
+ 22,
+ 3.933,
+ 22,
+ 1,
+ 4.067,
+ 22,
+ 4.2,
+ -2,
+ 4.333,
+ -2,
+ 1,
+ 4.922,
+ -2,
+ 5.511,
+ 0,
+ 6.1,
+ 0,
+ 0,
+ 8,
+ 0
+ ]
+ },
+ {
+ "Target": "Parameter",
+ "Id": "ParamArmR01",
+ "Segments": [
+ 0,
+ 0,
+ 1,
+ 0.044,
+ 0,
+ 0.089,
+ -18,
+ 0.133,
+ -18,
+ 1,
+ 0.2,
+ -20.878,
+ 0.267,
+ -21,
+ 0.333,
+ -21,
+ 1,
+ 0.433,
+ -21,
+ 0.533,
+ 29,
+ 0.633,
+ 29,
+ 1,
+ 0.956,
+ 29,
+ 1.278,
+ 29,
+ 1.6,
+ 29,
+ 1,
+ 2.056,
+ 29,
+ 2.511,
+ 30,
+ 2.967,
+ 30,
+ 1,
+ 3.089,
+ 30,
+ 3.211,
+ 30,
+ 3.333,
+ 30,
+ 1,
+ 3.389,
+ 30,
+ 3.444,
+ 30,
+ 3.5,
+ 30,
+ 1,
+ 3.533,
+ 30,
+ 3.567,
+ 37.934,
+ 3.6,
+ 39,
+ 1,
+ 3.744,
+ 43.62,
+ 3.889,
+ 45,
+ 4.033,
+ 45,
+ 1,
+ 4.156,
+ 45,
+ 4.278,
+ 29,
+ 4.4,
+ 29,
+ 1,
+ 4.533,
+ 29,
+ 4.667,
+ 30,
+ 4.8,
+ 30,
+ 1,
+ 4.978,
+ 30,
+ 5.156,
+ 30,
+ 5.333,
+ 30,
+ 1,
+ 5.589,
+ 30,
+ 5.844,
+ -0.525,
+ 6.1,
+ -0.525,
+ 1,
+ 6.267,
+ -0.525,
+ 6.433,
+ 0,
+ 6.6,
+ 0,
+ 0,
+ 8,
+ 0
+ ]
+ },
+ {
+ "Target": "Parameter",
+ "Id": "ParamArmR01Y",
+ "Segments": [
+ 0,
+ 0,
+ 1,
+ 0.111,
+ 0,
+ 0.222,
+ -7.2,
+ 0.333,
+ -7.2,
+ 1,
+ 0.456,
+ -7.2,
+ 0.578,
+ 0,
+ 0.7,
+ 0,
+ 1,
+ 1,
+ 0,
+ 1.3,
+ 0,
+ 1.6,
+ 0,
+ 1,
+ 2.056,
+ 0,
+ 2.511,
+ -10,
+ 2.967,
+ -10,
+ 1,
+ 3.144,
+ -10,
+ 3.322,
+ -10,
+ 3.5,
+ -10,
+ 1,
+ 4.111,
+ -10,
+ 4.722,
+ -10,
+ 5.333,
+ -10,
+ 1,
+ 5.589,
+ -10,
+ 5.844,
+ 0,
+ 6.1,
+ 0,
+ 0,
+ 8,
+ 0
+ ]
+ },
+ {
+ "Target": "Parameter",
+ "Id": "ParamArmR02",
+ "Segments": [
+ 0,
+ 0,
+ 1,
+ 0.089,
+ 0,
+ 0.178,
+ -41,
+ 0.267,
+ -41,
+ 1,
+ 0.367,
+ -41,
+ 0.467,
+ -10.206,
+ 0.567,
+ -3,
+ 1,
+ 0.622,
+ 1.003,
+ 0.678,
+ 0,
+ 0.733,
+ 0,
+ 1,
+ 0.822,
+ 0,
+ 0.911,
+ 0,
+ 1,
+ 0,
+ 1,
+ 1.2,
+ 0,
+ 1.4,
+ 0,
+ 1.6,
+ 0,
+ 1,
+ 2.067,
+ 0,
+ 2.533,
+ 3,
+ 3,
+ 3,
+ 1,
+ 3.178,
+ 3,
+ 3.356,
+ 3,
+ 3.533,
+ 3,
+ 1,
+ 3.567,
+ 3,
+ 3.6,
+ 3,
+ 3.633,
+ 3,
+ 1,
+ 3.711,
+ 3,
+ 3.789,
+ 6,
+ 3.867,
+ 6,
+ 1,
+ 4.067,
+ 6,
+ 4.267,
+ 0,
+ 4.467,
+ 0,
+ 1,
+ 4.756,
+ 0,
+ 5.044,
+ 0,
+ 5.333,
+ 0,
+ 1,
+ 5.589,
+ 0,
+ 5.844,
+ 0,
+ 6.1,
+ 0,
+ 0,
+ 8,
+ 0
+ ]
+ },
+ {
+ "Target": "Parameter",
+ "Id": "ParamArmR02Y",
+ "Segments": [
+ 0,
+ -10,
+ 1,
+ 0.033,
+ -10,
+ 0.067,
+ -20,
+ 0.1,
+ -20,
+ 1,
+ 0.189,
+ -20,
+ 0.278,
+ -20,
+ 0.367,
+ -20,
+ 1,
+ 0.411,
+ -20,
+ 0.456,
+ 10,
+ 0.5,
+ 10,
+ 1,
+ 0.544,
+ 10,
+ 0.589,
+ -9,
+ 0.633,
+ -9,
+ 1,
+ 0.956,
+ -9,
+ 1.278,
+ -9,
+ 1.6,
+ -9,
+ 1,
+ 2.033,
+ -9,
+ 2.467,
+ 8,
+ 2.9,
+ 8,
+ 1,
+ 3.711,
+ 8,
+ 4.522,
+ 8,
+ 5.333,
+ 8,
+ 1,
+ 5.589,
+ 8,
+ 5.844,
+ -10,
+ 6.1,
+ -10,
+ 0,
+ 8,
+ -10
+ ]
+ },
+ {
+ "Target": "Parameter",
+ "Id": "ParamArmR03",
+ "Segments": [
+ 0,
+ 0,
+ 1,
+ 0.133,
+ 0,
+ 0.267,
+ -21,
+ 0.4,
+ -21,
+ 1,
+ 0.522,
+ -21,
+ 0.644,
+ 4,
+ 0.767,
+ 4,
+ 1,
+ 0.856,
+ 4,
+ 0.944,
+ 0,
+ 1.033,
+ 0,
+ 1,
+ 1.833,
+ 0,
+ 2.633,
+ 0,
+ 3.433,
+ 0,
+ 1,
+ 3.478,
+ 0,
+ 3.522,
+ -21,
+ 3.567,
+ -21,
+ 1,
+ 3.611,
+ -21,
+ 3.656,
+ 16,
+ 3.7,
+ 16,
+ 1,
+ 3.856,
+ 16,
+ 4.011,
+ 16,
+ 4.167,
+ 16,
+ 1,
+ 4.311,
+ 16,
+ 4.456,
+ -2,
+ 4.6,
+ -2,
+ 1,
+ 4.711,
+ -2,
+ 4.822,
+ 0,
+ 4.933,
+ 0,
+ 1,
+ 5.067,
+ 0,
+ 5.2,
+ 0,
+ 5.333,
+ 0,
+ 1,
+ 5.589,
+ 0,
+ 5.844,
+ 0,
+ 6.1,
+ 0,
+ 0,
+ 8,
+ 0
+ ]
+ },
+ {
+ "Target": "Parameter",
+ "Id": "ParamArmL01",
+ "Segments": [
+ 0,
+ 0,
+ 1,
+ 1.778,
+ 0,
+ 3.556,
+ 0,
+ 5.333,
+ 0,
+ 1,
+ 5.589,
+ 0,
+ 5.844,
+ 0,
+ 6.1,
+ 0,
+ 0,
+ 8,
+ 0
+ ]
+ },
+ {
+ "Target": "Parameter",
+ "Id": "ParamArmL02",
+ "Segments": [
+ 0,
+ 0,
+ 1,
+ 1.189,
+ 0,
+ 2.378,
+ -8,
+ 3.567,
+ -8,
+ 1,
+ 3.689,
+ -8,
+ 3.811,
+ 11,
+ 3.933,
+ 11,
+ 1,
+ 4.056,
+ 11,
+ 4.178,
+ -3,
+ 4.3,
+ -3,
+ 1,
+ 4.444,
+ -3,
+ 4.589,
+ 0,
+ 4.733,
+ 0,
+ 1,
+ 4.933,
+ 0,
+ 5.133,
+ 0,
+ 5.333,
+ 0,
+ 1,
+ 5.589,
+ 0,
+ 5.844,
+ 0,
+ 6.1,
+ 0,
+ 0,
+ 8,
+ 0
+ ]
+ },
+ {
+ "Target": "Parameter",
+ "Id": "ParamArmL03",
+ "Segments": [
+ 0,
+ 0,
+ 1,
+ 1.778,
+ 0,
+ 3.556,
+ 0,
+ 5.333,
+ 0,
+ 1,
+ 5.589,
+ 0,
+ 5.844,
+ 0,
+ 6.1,
+ 0,
+ 0,
+ 8,
+ 0
+ ]
+ },
+ {
+ "Target": "Parameter",
+ "Id": "ParamArmChange",
+ "FadeInTime": 0.0,
+ "FadeOutTime": 0.0,
+ "Segments": [
+ 0,
+ 0,
+ 1,
+ 0.178,
+ 0,
+ 0.356,
+ 0,
+ 0.533,
+ 0,
+ 2,
+ 0.567,
+ 1,
+ 1,
+ 2.289,
+ 1,
+ 4.011,
+ 1,
+ 5.733,
+ 1,
+ 2,
+ 5.767,
+ 0,
+ 2,
+ 8,
+ 0
+ ]
+ },
+ {
+ "Target": "Parameter",
+ "Id": "ParamBookPage",
+ "Segments": [
+ 0,
+ 0,
+ 0,
+ 3.633,
+ 0,
+ 0,
+ 3.833,
+ 30,
+ 2,
+ 3.867,
+ 0,
+ 0,
+ 4.067,
+ 30,
+ 2,
+ 4.1,
+ 0,
+ 0,
+ 4.333,
+ 30,
+ 2,
+ 4.367,
+ 0,
+ 0,
+ 4.733,
+ 30,
+ 2,
+ 4.767,
+ 0,
+ 0,
+ 5.367,
+ 30,
+ 2,
+ 5.4,
+ 0,
+ 0,
+ 8,
+ 0
+ ]
+ },
+ {
+ "Target": "Parameter",
+ "Id": "ParamFlameOn",
+ "Segments": [
+ 0,
+ 0,
+ 0,
+ 8,
+ 0
+ ]
+ },
+ {
+ "Target": "Parameter",
+ "Id": "ParamFlame",
+ "Segments": [
+ 0,
+ 0,
+ 0,
+ 8,
+ 0
+ ]
+ },
+ {
+ "Target": "Parameter",
+ "Id": "ParamFlameShaking",
+ "Segments": [
+ 0,
+ 0,
+ 0,
+ 8,
+ 0
+ ]
+ },
+ {
+ "Target": "Parameter",
+ "Id": "ParamFlameX",
+ "Segments": [
+ 0,
+ 0,
+ 0,
+ 8,
+ 0
+ ]
+ },
+ {
+ "Target": "Parameter",
+ "Id": "ParamFlameY",
+ "Segments": [
+ 0,
+ 0,
+ 0,
+ 8,
+ 0
+ ]
+ },
+ {
+ "Target": "Parameter",
+ "Id": "ParamCharge01On",
+ "Segments": [
+ 0,
+ 0,
+ 0,
+ 8,
+ 0
+ ]
+ },
+ {
+ "Target": "Parameter",
+ "Id": "ParamCharge01",
+ "Segments": [
+ 0,
+ 0,
+ 0,
+ 8,
+ 0
+ ]
+ },
+ {
+ "Target": "Parameter",
+ "Id": "ParamHandLightAOn",
+ "Segments": [
+ 0,
+ 0,
+ 0,
+ 8,
+ 0
+ ]
+ },
+ {
+ "Target": "Parameter",
+ "Id": "ParamHandLightASize",
+ "Segments": [
+ 0,
+ 0,
+ 0,
+ 8,
+ 0
+ ]
+ },
+ {
+ "Target": "Parameter",
+ "Id": "ParamMagicPowersA",
+ "Segments": [
+ 0,
+ 0,
+ 0,
+ 8,
+ 0
+ ]
+ },
+ {
+ "Target": "Parameter",
+ "Id": "ParamMagicAOn",
+ "Segments": [
+ 0,
+ 0,
+ 0,
+ 8,
+ 0
+ ]
+ },
+ {
+ "Target": "Parameter",
+ "Id": "ParamMagicARotation",
+ "Segments": [
+ 0,
+ 0,
+ 0,
+ 8,
+ 0
+ ]
+ },
+ {
+ "Target": "Parameter",
+ "Id": "ParamMagicALight",
+ "Segments": [
+ 0,
+ 0,
+ 0,
+ 8,
+ 0
+ ]
+ },
+ {
+ "Target": "Parameter",
+ "Id": "ParamEffectAX",
+ "Segments": [
+ 0,
+ 0,
+ 0,
+ 8,
+ 0
+ ]
+ },
+ {
+ "Target": "Parameter",
+ "Id": "ParamEffectAY",
+ "Segments": [
+ 0,
+ 0,
+ 0,
+ 8,
+ 0
+ ]
+ },
+ {
+ "Target": "Parameter",
+ "Id": "ParamHandLightBOn",
+ "Segments": [
+ 0,
+ 0,
+ 1,
+ 0.233,
+ 0,
+ 0.467,
+ 0,
+ 0.7,
+ 0,
+ 1,
+ 0.767,
+ 0,
+ 0.833,
+ 1,
+ 0.9,
+ 1,
+ 2,
+ 3.533,
+ 1,
+ 2,
+ 3.567,
+ 0,
+ 0,
+ 8,
+ 0
+ ]
+ },
+ {
+ "Target": "Parameter",
+ "Id": "ParamHandLightBSize",
+ "Segments": [
+ 0,
+ 0,
+ 1,
+ 0.222,
+ 0,
+ 0.444,
+ 0,
+ 0.667,
+ 0,
+ 1,
+ 0.822,
+ 0,
+ 0.978,
+ 0.6,
+ 1.133,
+ 0.6,
+ 1,
+ 1.222,
+ 0.6,
+ 1.311,
+ 0.4,
+ 1.4,
+ 0.4,
+ 1,
+ 1.467,
+ 0.4,
+ 1.533,
+ 0.6,
+ 1.6,
+ 0.6,
+ 1,
+ 1.667,
+ 0.6,
+ 1.733,
+ 0.4,
+ 1.8,
+ 0.4,
+ 1,
+ 1.867,
+ 0.4,
+ 1.933,
+ 0.6,
+ 2,
+ 0.6,
+ 1,
+ 2.067,
+ 0.6,
+ 2.133,
+ 0.4,
+ 2.2,
+ 0.4,
+ 1,
+ 2.267,
+ 0.4,
+ 2.333,
+ 0.6,
+ 2.4,
+ 0.6,
+ 1,
+ 2.467,
+ 0.6,
+ 2.533,
+ 0.4,
+ 2.6,
+ 0.4,
+ 1,
+ 2.667,
+ 0.4,
+ 2.733,
+ 0.6,
+ 2.8,
+ 0.6,
+ 1,
+ 2.911,
+ 0.6,
+ 3.022,
+ 0.4,
+ 3.133,
+ 0.4,
+ 1,
+ 3.222,
+ 0.4,
+ 3.311,
+ 1,
+ 3.4,
+ 1,
+ 1,
+ 3.467,
+ 1,
+ 3.533,
+ 0,
+ 3.6,
+ 0,
+ 0,
+ 8,
+ 0
+ ]
+ },
+ {
+ "Target": "Parameter",
+ "Id": "ParamMagicBOn",
+ "Segments": [
+ 0,
+ 0,
+ 0,
+ 0.633,
+ 0,
+ 0,
+ 1.367,
+ 6,
+ 1,
+ 2.1,
+ 6,
+ 2.833,
+ 6,
+ 3.567,
+ 6,
+ 1,
+ 3.667,
+ 6,
+ 3.767,
+ 0,
+ 3.867,
+ 0,
+ 0,
+ 8,
+ 0
+ ]
+ },
+ {
+ "Target": "Parameter",
+ "Id": "ParamMagicBRotation",
+ "Segments": [
+ 0,
+ 0,
+ 0,
+ 8,
+ 360
+ ]
+ },
+ {
+ "Target": "Parameter",
+ "Id": "ParamMagicBMove",
+ "Segments": [
+ 0,
+ 0,
+ 1,
+ 0.256,
+ 0,
+ 0.511,
+ 0,
+ 0.767,
+ 0,
+ 1,
+ 1.022,
+ 0,
+ 1.278,
+ 1,
+ 1.533,
+ 1,
+ 1,
+ 2.211,
+ 1,
+ 2.889,
+ 1,
+ 3.567,
+ 1,
+ 1,
+ 3.711,
+ 1,
+ 3.856,
+ 0,
+ 4,
+ 0,
+ 0,
+ 8,
+ 0
+ ]
+ },
+ {
+ "Target": "Parameter",
+ "Id": "ParamMagicBX",
+ "Segments": [
+ 0,
+ -10,
+ 1,
+ 0.533,
+ -10,
+ 1.067,
+ -10,
+ 1.6,
+ -10,
+ 1,
+ 2.056,
+ -10,
+ 2.511,
+ 8,
+ 2.967,
+ 8,
+ 0,
+ 8,
+ 8
+ ]
+ },
+ {
+ "Target": "Parameter",
+ "Id": "ParamMagicPowersBOn",
+ "Segments": [
+ 0,
+ 0,
+ 1,
+ 1.178,
+ 0,
+ 2.356,
+ 0,
+ 3.533,
+ 0,
+ 1,
+ 3.544,
+ 0,
+ 3.556,
+ 1,
+ 3.567,
+ 1,
+ 1,
+ 3.744,
+ 1,
+ 3.922,
+ 1,
+ 4.1,
+ 1,
+ 1,
+ 4.133,
+ 1,
+ 4.167,
+ 0,
+ 4.2,
+ 0,
+ 0,
+ 8,
+ 0
+ ]
+ },
+ {
+ "Target": "Parameter",
+ "Id": "ParamMagicPowersBSize",
+ "Segments": [
+ 0,
+ 0,
+ 1,
+ 1.178,
+ 0,
+ 2.356,
+ 0,
+ 3.533,
+ 0,
+ 1,
+ 3.556,
+ 0,
+ 3.578,
+ 0.553,
+ 3.6,
+ 0.6,
+ 1,
+ 3.744,
+ 0.903,
+ 3.889,
+ 1,
+ 4.033,
+ 1,
+ 1,
+ 4.089,
+ 1,
+ 4.144,
+ 0,
+ 4.2,
+ 0,
+ 0,
+ 8,
+ 0
+ ]
+ },
+ {
+ "Target": "Parameter",
+ "Id": "ParamMagicPowersBThicknesses",
+ "Segments": [
+ 0,
+ 0,
+ 1,
+ 1.167,
+ 0,
+ 2.333,
+ 0,
+ 3.5,
+ 0,
+ 1,
+ 3.522,
+ 0,
+ 3.544,
+ 10,
+ 3.567,
+ 10,
+ 1,
+ 3.589,
+ 10,
+ 3.611,
+ 2.2,
+ 3.633,
+ 2.2,
+ 1,
+ 3.656,
+ 2.2,
+ 3.678,
+ 7.987,
+ 3.7,
+ 8.5,
+ 1,
+ 3.756,
+ 9.783,
+ 3.811,
+ 10,
+ 3.867,
+ 10,
+ 1,
+ 3.944,
+ 10,
+ 4.022,
+ 0,
+ 4.1,
+ 0,
+ 0,
+ 8,
+ 0
+ ]
+ },
+ {
+ "Target": "Parameter",
+ "Id": "ParamEffectBX",
+ "Segments": [
+ 0,
+ 0,
+ 0,
+ 8,
+ 0
+ ]
+ },
+ {
+ "Target": "Parameter",
+ "Id": "ParamEffectBY",
+ "Segments": [
+ 0,
+ 0,
+ 0,
+ 8,
+ 0
+ ]
+ },
+ {
+ "Target": "Parameter",
+ "Id": "ParamSkirt",
+ "Segments": [
+ 0,
+ 0,
+ 0,
+ 1,
+ 30,
+ 2,
+ 1.033,
+ 1,
+ 0,
+ 2.033,
+ 30,
+ 2,
+ 2.067,
+ 1,
+ 0,
+ 2.967,
+ 30,
+ 2,
+ 3,
+ 1,
+ 0,
+ 3.833,
+ 30,
+ 2,
+ 3.867,
+ 1,
+ 0,
+ 4.533,
+ 30,
+ 2,
+ 4.567,
+ 1.875,
+ 0,
+ 5.067,
+ 30,
+ 2,
+ 5.1,
+ 1.875,
+ 0,
+ 5.767,
+ 30,
+ 2,
+ 5.8,
+ 1.875,
+ 0,
+ 6.833,
+ 30,
+ 2,
+ 6.867,
+ 1,
+ 0,
+ 8,
+ 30
+ ]
+ },
+ {
+ "Target": "Parameter",
+ "Id": "ParamSkirtX",
+ "Segments": [
+ 0,
+ 0,
+ 1,
+ 0.156,
+ 0,
+ 0.311,
+ 1,
+ 0.467,
+ 1,
+ 1,
+ 0.667,
+ 1,
+ 0.867,
+ -1,
+ 1.067,
+ -1,
+ 1,
+ 1.311,
+ -1,
+ 1.556,
+ 0.6,
+ 1.8,
+ 0.6,
+ 1,
+ 2.056,
+ 0.6,
+ 2.311,
+ -0.5,
+ 2.567,
+ -0.5,
+ 1,
+ 2.756,
+ -0.5,
+ 2.944,
+ 0.4,
+ 3.133,
+ 0.4,
+ 1,
+ 3.267,
+ 0.4,
+ 3.4,
+ -0.4,
+ 3.533,
+ -0.4,
+ 1,
+ 3.678,
+ -0.4,
+ 3.822,
+ 1,
+ 3.967,
+ 1,
+ 1,
+ 4.089,
+ 1,
+ 4.211,
+ 0,
+ 4.333,
+ 0,
+ 1,
+ 4.511,
+ 0,
+ 4.689,
+ 1,
+ 4.867,
+ 1,
+ 1,
+ 5,
+ 1,
+ 5.133,
+ 0.1,
+ 5.267,
+ 0.1,
+ 1,
+ 5.433,
+ 0.1,
+ 5.6,
+ 1,
+ 5.767,
+ 1,
+ 1,
+ 5.989,
+ 1,
+ 6.211,
+ -0.6,
+ 6.433,
+ -0.6,
+ 1,
+ 6.678,
+ -0.6,
+ 6.922,
+ 0.6,
+ 7.167,
+ 0.6,
+ 1,
+ 7.444,
+ 0.6,
+ 7.722,
+ 0,
+ 8,
+ 0
+ ]
+ },
+ {
+ "Target": "Parameter",
+ "Id": "ParamSkirtY",
+ "Segments": [
+ 0,
+ 0,
+ 1,
+ 0.289,
+ 0,
+ 0.578,
+ 0.4,
+ 0.867,
+ 0.4,
+ 1,
+ 1.189,
+ 0.4,
+ 1.511,
+ -0.7,
+ 1.833,
+ -0.7,
+ 1,
+ 2.144,
+ -0.7,
+ 2.456,
+ 0.4,
+ 2.767,
+ 0.4,
+ 1,
+ 2.978,
+ 0.4,
+ 3.189,
+ -0.5,
+ 3.4,
+ -0.5,
+ 1,
+ 3.522,
+ -0.5,
+ 3.644,
+ 1,
+ 3.767,
+ 1,
+ 1,
+ 3.867,
+ 1,
+ 3.967,
+ -1,
+ 4.067,
+ -1,
+ 1,
+ 4.2,
+ -1,
+ 4.333,
+ 0.7,
+ 4.467,
+ 0.7,
+ 1,
+ 4.611,
+ 0.7,
+ 4.756,
+ -0.6,
+ 4.9,
+ -0.6,
+ 1,
+ 5.122,
+ -0.6,
+ 5.344,
+ 0.2,
+ 5.567,
+ 0.2,
+ 1,
+ 5.756,
+ 0.2,
+ 5.944,
+ -0.6,
+ 6.133,
+ -0.6,
+ 1,
+ 6.411,
+ -0.6,
+ 6.689,
+ 0.1,
+ 6.967,
+ 0.1,
+ 1,
+ 7.311,
+ 0.1,
+ 7.656,
+ 0,
+ 8,
+ 0
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/Sample/TypeScript/Demo/index.html b/Sample/TypeScript/Demo/index.html
index 3b78864..59eeb05 100644
--- a/Sample/TypeScript/Demo/index.html
+++ b/Sample/TypeScript/Demo/index.html
@@ -2,9 +2,9 @@
+
TypeScript HTML App
-
diff --git a/Sample/TypeScript/Demo/src/lappdefine.ts b/Sample/TypeScript/Demo/src/lappdefine.ts
index 7c8faeb..7529bf2 100644
--- a/Sample/TypeScript/Demo/src/lappdefine.ts
+++ b/Sample/TypeScript/Demo/src/lappdefine.ts
@@ -1,9 +1,9 @@
-/*
-* Copyright(c) Live2D Inc. All rights reserved.
-*
-* Use of this source code is governed by the Live2D Open Software license
-* that can be found at http://live2d.com/eula/live2d-open-software-license-agreement_en.html.
-*/
+/**
+ * Copyright(c) Live2D Inc. All rights reserved.
+ *
+ * Use of this source code is governed by the Live2D Open Software license
+ * that can be found at https://www.live2d.com/eula/live2d-open-software-license-agreement_en.html.
+ */
import {LogLevel} from "../../../../Framework/live2dcubismframework";
@@ -43,7 +43,8 @@ export namespace LAppDefine
"Haru",
"Hiyori",
"Mark",
- "Natori"
+ "Natori",
+ "Rice"
]
export const ModelDirSize: number = ModelDir.length;
@@ -67,4 +68,4 @@ export namespace LAppDefine
// Frameworkから出力するログのレベル設定
export const CubismLoggingLevel: LogLevel = LogLevel.LogLevel_Verbose;
-}
\ No newline at end of file
+}
diff --git a/Sample/TypeScript/Demo/src/lappdelegate.ts b/Sample/TypeScript/Demo/src/lappdelegate.ts
index bc48757..8cbc17f 100644
--- a/Sample/TypeScript/Demo/src/lappdelegate.ts
+++ b/Sample/TypeScript/Demo/src/lappdelegate.ts
@@ -1,8 +1,8 @@
-/*
+/**
* Copyright(c) Live2D Inc. All rights reserved.
*
* Use of this source code is governed by the Live2D Open Software license
- * that can be found at http://live2d.com/eula/live2d-open-software-license-agreement_en.html.
+ * that can be found at https://www.live2d.com/eula/live2d-open-software-license-agreement_en.html.
*/
import {Live2DCubismFramework as live2dcubismframework, Option as Csm_Option} from "../../../../Framework/live2dcubismframework";
@@ -22,14 +22,14 @@ export let frameBuffer: WebGLFramebuffer = null;
/**
* アプリケーションクラス。
- * Cubism3の管理を行う。
+ * Cubism SDKの管理を行う。
*/
export class LAppDelegate
{
/**
* クラスのインスタンス(シングルトン)を返す。
* インスタンスが生成されていない場合は内部でインスタンスを生成する。
- *
+ *
* @return クラスのインスタンス
*/
public static getInstance(): LAppDelegate
@@ -77,7 +77,7 @@ export class LAppDelegate
if (!frameBuffer)
{
- frameBuffer = gl.getParameter(gl.FRAMEBUFFER_BINDING);
+ frameBuffer = gl.getParameter(gl.FRAMEBUFFER_BINDING);
}
// 透過設定
@@ -104,8 +104,8 @@ export class LAppDelegate
// AppViewの初期化
this._view.initialize();
-
- // Cubism3の初期化
+
+ // Cubism SDKの初期化
this.initializeCubism();
return true;
@@ -125,7 +125,7 @@ export class LAppDelegate
// リソースを解放
LAppLive2DManager.releaseInstance();
- // Cubism3の解放
+ // Cubism SDKの解放
Csm_CubismFramework.dispose();
}
@@ -203,7 +203,7 @@ export class LAppDelegate
// フラグメントシェーダのコンパイル
let fragmentShaderId = gl.createShader(gl.FRAGMENT_SHADER);
-
+
if(fragmentShaderId == null)
{
LAppPal.printLog("failed to create fragmentShader");
@@ -250,7 +250,7 @@ export class LAppDelegate
{
return this._textureManager;
}
-
+
/**
* コンストラクタ
*/
@@ -267,7 +267,7 @@ export class LAppDelegate
}
/**
- * Cubism3の初期化
+ * Cubism SDKの初期化
*/
public initializeCubism(): void
{
@@ -290,7 +290,7 @@ export class LAppDelegate
this._view.initializeSprite();
}
- _cubismOption: Csm_Option; // Cubism3 Option
+ _cubismOption: Csm_Option; // Cubism SDK Option
_view: LAppView; // View情報
_captured: boolean; // クリックしているか
_mouseX: number; // マウスX座標
@@ -310,7 +310,7 @@ function onClickBegan(e: MouseEvent): void
return;
}
LAppDelegate.getInstance()._captured = true;
-
+
let posX: number = e.pageX;
let posY: number = e.pageY;
@@ -326,7 +326,7 @@ function onMouseMoved(e: MouseEvent): void
{
return;
}
-
+
if(!LAppDelegate.getInstance()._view)
{
LAppPal.printLog("view notfound");
@@ -351,8 +351,8 @@ function onClickEnded(e: MouseEvent): void
LAppPal.printLog("view notfound");
return;
}
-
-
+
+
let rect = (e.target).getBoundingClientRect();
let posX: number = e.clientX - rect.left;
let posY: number = e.clientY - rect.top;
@@ -395,7 +395,7 @@ function onTouchMoved(e: TouchEvent): void
LAppPal.printLog("view notfound");
return;
}
-
+
let rect = (e.target).getBoundingClientRect();
let posX = e.changedTouches[0].clientX - rect.left;
@@ -418,7 +418,7 @@ function onTouchEnded(e: TouchEvent): void
}
let rect = (e.target).getBoundingClientRect();
-
+
let posX = e.changedTouches[0].clientX - rect.left;
let posY = e.changedTouches[0].clientY - rect.top;
@@ -439,7 +439,7 @@ function onTouchCancel(e: TouchEvent): void
}
let rect = (e.target).getBoundingClientRect();
-
+
let posX = e.changedTouches[0].clientX - rect.left;
let posY = e.changedTouches[0].clientY - rect.top;
diff --git a/Sample/TypeScript/Demo/src/lapplive2dmanager.ts b/Sample/TypeScript/Demo/src/lapplive2dmanager.ts
index dd48da0..4c8a536 100644
--- a/Sample/TypeScript/Demo/src/lapplive2dmanager.ts
+++ b/Sample/TypeScript/Demo/src/lapplive2dmanager.ts
@@ -1,9 +1,9 @@
-/*
-* Copyright(c) Live2D Inc. All rights reserved.
-*
-* Use of this source code is governed by the Live2D Open Software license
-* that can be found at http://live2d.com/eula/live2d-open-software-license-agreement_en.html.
-*/
+/**
+ * Copyright(c) Live2D Inc. All rights reserved.
+ *
+ * Use of this source code is governed by the Live2D Open Software license
+ * that can be found at https://www.live2d.com/eula/live2d-open-software-license-agreement_en.html.
+ */
import {Live2DCubismFramework as cubismmatrix44} from "../../../../Framework/math/cubismmatrix44";
import {Live2DCubismFramework as csmvector} from "../../../../Framework/type/csmvector";
@@ -27,7 +27,7 @@ export class LAppLive2DManager
/**
* クラスのインスタンス(シングルトン)を返す。
* インスタンスが生成されていない場合は内部でインスタンスを生成する。
- *
+ *
* @return クラスのインスタンス
*/
public static getInstance(): LAppLive2DManager
@@ -49,13 +49,13 @@ export class LAppLive2DManager
{
s_instance = void 0;
}
-
+
s_instance = null;
}
/**
* 現在のシーンで保持しているモデルを返す。
- *
+ *
* @param no モデルリストのインデックス値
* @return モデルのインスタンスを返す。インデックス値が範囲外の場合はNULLを返す。
*/
@@ -85,7 +85,7 @@ export class LAppLive2DManager
/**
* 画面をドラッグした時の処理
- *
+ *
* @param x 画面のX座標
* @param y 画面のY座標
*/
@@ -104,7 +104,7 @@ export class LAppLive2DManager
/**
* 画面をタップした時の処理
- *
+ *
* @param x 画面のX座標
* @param y 画面のY座標
*/
diff --git a/Sample/TypeScript/Demo/src/lappmodel.ts b/Sample/TypeScript/Demo/src/lappmodel.ts
index da96371..9c8b617 100644
--- a/Sample/TypeScript/Demo/src/lappmodel.ts
+++ b/Sample/TypeScript/Demo/src/lappmodel.ts
@@ -1,9 +1,9 @@
-/*
-* Copyright(c) Live2D Inc. All rights reserved.
-*
-* Use of this source code is governed by the Live2D Open Software license
-* that can be found at http://live2d.com/eula/live2d-open-software-license-agreement_en.html.
-*/
+/**
+ * Copyright(c) Live2D Inc. All rights reserved.
+ *
+ * Use of this source code is governed by the Live2D Open Software license
+ * that can be found at https://www.live2d.com/eula/live2d-open-software-license-agreement_en.html.
+ */
import {Live2DCubismFramework as live2dcubismframework} from "../../../../Framework/live2dcubismframework";
import {Live2DCubismFramework as cubismid} from "../../../../Framework/id/cubismid";
@@ -93,10 +93,10 @@ enum LoadStep
export class LAppModel extends CubismUserModel {
/**
* model3.jsonが置かれたディレクトリとファイルパスからモデルを生成する
- * @param dir
- * @param fileName
+ * @param dir
+ * @param fileName
*/
- public loadAssets(dir: string, fileName: string): void
+ public loadAssets(dir: string, fileName: string): void
{
this._modelHomeDir = dir;
@@ -157,7 +157,7 @@ export class LAppModel extends CubismUserModel {
this.loadModel(buffer);
deleteBuffer(buffer, path);
this._state = LoadStep.LoadExpression;
-
+
// callback
loadCubismExpression();
}
@@ -176,15 +176,15 @@ export class LAppModel extends CubismUserModel {
if(this._modelSetting.getExpressionCount() > 0)
{
const count: number = this._modelSetting.getExpressionCount();
-
+
for(let i: number = 0; i < count; i++)
{
let name: string = this._modelSetting.getExpressionName(i);
let path: string = this._modelSetting.getExpressionFileName(i);
path = this._modelHomeDir + path;
-
+
fetch(path).then(
- (response) =>
+ (response) =>
{
return response.arrayBuffer();
}
@@ -193,21 +193,21 @@ export class LAppModel extends CubismUserModel {
{
let buffer: ArrayBuffer = arrayBuffer;
let size: number = buffer.byteLength;
-
+
let motion: ACubismMotion = this.loadExpression(buffer, size, name);
-
+
if(this._expressions.getValue(name) != null)
{
ACubismMotion.delete(this._expressions.getValue(name));
this._expressions.setValue(name, null);
}
-
+
this._expressions.setValue(name, motion);
-
+
deleteBuffer(buffer, path);
-
+
this._expressionCount++;
-
+
if(this._expressionCount >= count)
{
this._state = LoadStep.LoadPhysics;
@@ -238,7 +238,7 @@ export class LAppModel extends CubismUserModel {
path = this._modelHomeDir + path;
fetch(path).then(
- (response) =>
+ (response) =>
{
return response.arrayBuffer();
}
@@ -247,10 +247,10 @@ export class LAppModel extends CubismUserModel {
{
let buffer: ArrayBuffer = arrayBuffer;
let size: number = buffer.byteLength;
-
+
this.loadPhysics(buffer, size);
deleteBuffer(buffer, path);
-
+
this._state = LoadStep.LoadPose;
// callback
@@ -277,7 +277,7 @@ export class LAppModel extends CubismUserModel {
path = this._modelHomeDir + path;
fetch(path).then(
- (response) =>
+ (response) =>
{
return response.arrayBuffer();
}
@@ -286,10 +286,10 @@ export class LAppModel extends CubismUserModel {
{
let buffer: ArrayBuffer = arrayBuffer;
let size: number = buffer.byteLength;
-
+
this.loadPose(buffer, size);
deleteBuffer(buffer, path);
-
+
this._state = LoadStep.SetupEyeBlink;
// callback
@@ -301,7 +301,7 @@ export class LAppModel extends CubismUserModel {
else
{
this._state = LoadStep.SetupEyeBlink;
-
+
// callback
setupEyeBlink();
}
@@ -325,18 +325,18 @@ export class LAppModel extends CubismUserModel {
let setupBreath = () =>
{
this._breath = CubismBreath.create();
-
+
let breathParameters: csmVector = new csmVector();
breathParameters.pushBack(new BreathParameterData(this._idParamAngleX, 0.0, 15.0, 6.5345, 0.5));
breathParameters.pushBack(new BreathParameterData(this._idParamAngleY, 0.0, 8.0, 3.5345, 0.5));
breathParameters.pushBack(new BreathParameterData(this._idParamAngleZ, 0.0, 10.0, 5.5345, 0.5));
breathParameters.pushBack(new BreathParameterData(this._idParamBodyAngleX, 0.0, 4.0, 15.5345, 0.5));
breathParameters.pushBack(new BreathParameterData(CubismFramework.getIdManager().getId(CubismDefaultParameterId.ParamBreath), 0.0, 0.5, 3.2345, 0.5));
-
+
this._breath.setParameters(breathParameters);
this._state = LoadStep.LoadUserData;
- // callback
+ // callback
loadUserData();
};
@@ -349,7 +349,7 @@ export class LAppModel extends CubismUserModel {
path = this._modelHomeDir + path;
fetch(path).then(
- (response) =>
+ (response) =>
{
return response.arrayBuffer();
}
@@ -358,10 +358,10 @@ export class LAppModel extends CubismUserModel {
{
let buffer: ArrayBuffer = arrayBuffer;
let size: number = buffer.byteLength;
-
+
this.loadUserData(buffer, size);
deleteBuffer(buffer, path);
-
+
this._state = LoadStep.SetupEyeBlinkIds;
// callback
@@ -400,13 +400,13 @@ export class LAppModel extends CubismUserModel {
let setupLipSyncIds = () =>
{
let lipSyncIdCount = this._modelSetting.getLipSyncParameterCount();
-
+
for(let i: number = 0; i < lipSyncIdCount; ++i)
{
this._lipSyncIds.pushBack(this._modelSetting.getLipSyncParameterId(i));
}
this._state = LoadStep.SetupLayout;
-
+
// callback
setupLayout();
};
@@ -431,9 +431,9 @@ export class LAppModel extends CubismUserModel {
this._allMotionCount = 0;
this._motionCount = 0;
let group: string[] = [];
-
+
let motionGroupCount: number = this._modelSetting.getMotionGroupCount();
-
+
// モーションの総数を求める
for(let i: number = 0; i < motionGroupCount; i++)
{
@@ -451,7 +451,7 @@ export class LAppModel extends CubismUserModel {
if(motionGroupCount == 0)
{
this._state = LoadStep.LoadTexture;
-
+
// 全てのモーションを停止する
this._motionManager.stopAllMotions();
@@ -470,7 +470,7 @@ export class LAppModel extends CubismUserModel {
*/
private setupTextures(): void
{
- // iPhoneでのアルファ品質向上のためTypescriptではpremultipliedAlphaを採用
+ // iPhoneでのアルファ品質向上のためTypescriptではpremultipliedAlphaを採用
let usePremultiply: boolean = true;
if(this._state == LoadStep.LoadTexture)
@@ -486,25 +486,25 @@ export class LAppModel extends CubismUserModel {
console.log("getTextureFileName null");
continue;
}
-
+
// WebGLのテクスチャユニットにテクスチャをロードする
let texturePath = this._modelSetting.getTextureFileName(modelTextureNumber);
texturePath = this._modelHomeDir + texturePath;
// ロード完了時に呼び出すコールバック関数
- let onLoad = (textureInfo: TextureInfo) : void =>
+ let onLoad = (textureInfo: TextureInfo) : void =>
{
this.getRenderer().bindTexture(modelTextureNumber, textureInfo.id);
-
+
this._textureCount++;
-
+
if(this._textureCount >= textureCount)
{
// ロード完了
this._state = LoadStep.CompleteSetup;
}
};
-
+
// 読み込み
LAppDelegate.getInstance().getTextureManager().createTextureFromPngFile(texturePath, usePremultiply, onLoad);
this.getRenderer().setIsPremultipliedAlpha(usePremultiply);
@@ -530,11 +530,11 @@ export class LAppModel extends CubismUserModel {
public update(): void
{
if(this._state != LoadStep.CompleteSetup) return;
-
+
const deltaTimeSeconds: number = LAppPal.getDeltaTime();
this._userTimeSeconds += deltaTimeSeconds;
-
+
this._dragManager.update(deltaTimeSeconds);
this._dragX = this._dragManager.getX();
this._dragY = this._dragManager.getY();
@@ -548,7 +548,7 @@ export class LAppModel extends CubismUserModel {
{
// モーションの再生がない場合、待機モーションの中からランダムで再生する
this.startRandomMotion(LAppDefine.MotionGroupIdle, LAppDefine.PriorityIdle);
-
+
}
else
{
@@ -607,7 +607,7 @@ export class LAppModel extends CubismUserModel {
this._model.addParameterValueById(this._lipSyncIds.at(i), value, 0.8);
}
}
-
+
// ポーズの設定
if(this._pose != null)
{
@@ -661,24 +661,24 @@ export class LAppModel extends CubismUserModel {
{
let buffer: ArrayBuffer = arrayBuffer;
let size = buffer.byteLength;
-
+
motion = this.loadMotion(buffer, size, null);
let fadeTime: number = this._modelSetting.getMotionFadeInTimeValue(group, no);
-
+
if(fadeTime >= 0.0)
{
motion.setFadeInTime(fadeTime);
}
-
+
fadeTime = this._modelSetting.getMotionFadeOutTimeValue(group, no);
if(fadeTime >= 0.0)
{
motion.setFadeOutTime(fadeTime);
}
-
+
motion.setEffectIds(this._eyeBlinkIds, this._lipSyncIds);
autoDelete = true; // 終了時にメモリから削除
-
+
deleteBuffer(buffer, path);
}
);
@@ -711,7 +711,7 @@ export class LAppModel extends CubismUserModel {
/**
* 引数で指定した表情モーションをセットする
- *
+ *
* @param expressionId 表情モーションのID
*/
public setExpression(expressionId: string): void
@@ -770,7 +770,7 @@ export class LAppModel extends CubismUserModel {
/**
* 当たり判定テスト
* 指定IDの頂点リストから矩形を計算し、座標をが矩形範囲内か判定する。
- *
+ *
* @param hitArenaName 当たり判定をテストする対象のID
* @param x 判定を行うX座標
* @param y 判定を行うY座標
@@ -800,7 +800,7 @@ export class LAppModel extends CubismUserModel {
/**
* モーションデータをグループ名から一括でロードする。
* モーションデータの名前は内部でModelSettingから取得する。
- *
+ *
* @param group モーションデータのグループ名
*/
public preLoadMotionGroup(group: string): void
@@ -816,9 +816,9 @@ export class LAppModel extends CubismUserModel {
{
LAppPal.printLog("[APP]load motion: {0} => [{1}_{2}]", path, group, i);
}
-
+
fetch(path).then(
- (response) =>
+ (response) =>
{
return response.arrayBuffer();
}
@@ -827,22 +827,22 @@ export class LAppModel extends CubismUserModel {
{
let buffer: ArrayBuffer = arrayBuffer;
let size = buffer.byteLength;
-
+
let tmpMotion: CubismMotion = this.loadMotion(buffer, size, name);
-
+
let fadeTime = this._modelSetting.getMotionFadeInTimeValue(group, i);
if(fadeTime >= 0.0)
{
tmpMotion.setFadeInTime(fadeTime);
}
-
+
fadeTime = this._modelSetting.getMotionFadeOutTimeValue(group, i);
if(fadeTime >= 0.0)
{
tmpMotion.setFadeOutTime(fadeTime);
}
tmpMotion.setEffectIds(this._eyeBlinkIds, this._lipSyncIds);
-
+
if(this._motions.getValue(name) != null)
{
ACubismMotion.delete(this._motions.getValue(name));
@@ -851,7 +851,7 @@ export class LAppModel extends CubismUserModel {
this._motions.setValue(name, tmpMotion);
deleteBuffer(buffer, path);
-
+
this._motionCount++;
if(this._motionCount >= this._allMotionCount)
{
@@ -897,8 +897,8 @@ export class LAppModel extends CubismUserModel {
// キャンバスサイズを渡す
let viewport: number[] = [
- 0,
- 0,
+ 0,
+ 0,
canvas.width,
canvas.height
];
@@ -912,7 +912,7 @@ export class LAppModel extends CubismUserModel {
*/
public draw(matrix: CubismMatrix44): void
{
- if(this._model == null)
+ if(this._model == null)
{
return;
}
@@ -921,9 +921,9 @@ export class LAppModel extends CubismUserModel {
if(this._state == LoadStep.CompleteSetup)
{
matrix.multiplyByMatrix(this._modelMatrix);
-
+
this.getRenderer().setMvpMatrix(matrix);
-
+
this.doDraw();
}
}
@@ -931,7 +931,7 @@ export class LAppModel extends CubismUserModel {
/**
* コンストラクタ
*/
- public constructor()
+ public constructor()
{
super();
@@ -947,7 +947,7 @@ export class LAppModel extends CubismUserModel {
this._hitArea = new csmVector();
this._userArea = new csmVector();
-
+
this._idParamAngleX = CubismFramework.getIdManager().getId(CubismDefaultParameterId.ParamAngleX);
this._idParamAngleY = CubismFramework.getIdManager().getId(CubismDefaultParameterId.ParamAngleY);
this._idParamAngleZ = CubismFramework.getIdManager().getId(CubismDefaultParameterId.ParamAngleZ);
@@ -987,4 +987,4 @@ export class LAppModel extends CubismUserModel {
_textureCount: number; // テクスチャカウント
_motionCount: number; // モーションデータカウント
_allMotionCount: number; // モーション総数
-}
\ No newline at end of file
+}
diff --git a/Sample/TypeScript/Demo/src/lapppal.ts b/Sample/TypeScript/Demo/src/lapppal.ts
index 3884522..d00e2fb 100644
--- a/Sample/TypeScript/Demo/src/lapppal.ts
+++ b/Sample/TypeScript/Demo/src/lapppal.ts
@@ -1,23 +1,23 @@
-/*
-* Copyright(c) Live2D Inc. All rights reserved.
-*
-* Use of this source code is governed by the Live2D Open Software license
-* that can be found at http://live2d.com/eula/live2d-open-software-license-agreement_en.html.
-*/
+/**
+ * Copyright(c) Live2D Inc. All rights reserved.
+ *
+ * Use of this source code is governed by the Live2D Open Software license
+ * that can be found at https://www.live2d.com/eula/live2d-open-software-license-agreement_en.html.
+ */
/**
* プラットフォーム依存機能を抽象化する Cubism Platform Abstraction Layer.
- *
+ *
* ファイル読み込みや時刻取得等のプラットフォームに依存する関数をまとめる。
*/
export class LAppPal
{
/**
* ファイルをバイトデータとして読みこむ
- *
+ *
* @param filePath 読み込み対象ファイルのパス
- * @return
- * {
+ * @return
+ * {
* buffer, 読み込んだバイトデータ
* size ファイルサイズ
* }
@@ -99,4 +99,4 @@ export class LAppPal
static s_currentFrame = 0.0;
static s_lastFrame = 0.0;
static s_deltaTime = 0.0;
-}
\ No newline at end of file
+}
diff --git a/Sample/TypeScript/Demo/src/lappsprite.ts b/Sample/TypeScript/Demo/src/lappsprite.ts
index 6291bf6..bb4d484 100644
--- a/Sample/TypeScript/Demo/src/lappsprite.ts
+++ b/Sample/TypeScript/Demo/src/lappsprite.ts
@@ -1,15 +1,15 @@
-/*
-* Copyright(c) Live2D Inc. All rights reserved.
-*
-* Use of this source code is governed by the Live2D Open Software license
-* that can be found at http://live2d.com/eula/live2d-open-software-license-agreement_en.html.
-*/
+/**
+ * Copyright(c) Live2D Inc. All rights reserved.
+ *
+ * Use of this source code is governed by the Live2D Open Software license
+ * that can be found at https://www.live2d.com/eula/live2d-open-software-license-agreement_en.html.
+ */
import { gl, canvas } from "./lappdelegate";
/**
* スプライトを実装するクラス
- *
+ *
* テクスチャID、Rectの管理
*/
export class LAppSprite
@@ -37,11 +37,11 @@ import { gl, canvas } from "./lappdelegate";
this._positionLocation = null;
this._uvLocation = null;
this._textureLocation = null;
-
+
this._positionArray = null;
this._uvArray = null;
this._indexArray = null;
-
+
this._firstDraw = true;
}
@@ -98,7 +98,7 @@ import { gl, canvas } from "./lappdelegate";
// 何番目のuniform変数か取得
this._textureLocation = gl.getUniformLocation(programId, "texture");
-
+
// uniform属性の登録
gl.uniform1i(this._textureLocation, 0);
@@ -110,7 +110,7 @@ import { gl, canvas } from "./lappdelegate";
0.0, 1.0,
1.0, 1.0
]);
-
+
// uvバッファを作成
this._uvBuffer = gl.createBuffer();
}
@@ -119,7 +119,7 @@ import { gl, canvas } from "./lappdelegate";
{
let maxWidth = canvas.width;
let maxHeight = canvas.height;
-
+
// 頂点データ
this._positionArray = new Float32Array([
(this._rect.right - maxWidth * 0.5) / (maxWidth * 0.5), (this._rect.up - maxHeight * 0.5) / (maxHeight * 0.5),
@@ -169,7 +169,7 @@ import { gl, canvas } from "./lappdelegate";
gl.bindTexture(gl.TEXTURE_2D, this._texture);
gl.drawElements(gl.TRIANGLES, this._indexArray.length, gl.UNSIGNED_SHORT, 0);
}
-
+
/**
* 当たり判定
* @param pointX x座標
@@ -212,4 +212,4 @@ import { gl, canvas } from "./lappdelegate";
public right: number; // 右辺
public up: number; // 上辺
public down: number; // 下辺
- }
\ No newline at end of file
+ }
diff --git a/Sample/TypeScript/Demo/src/lapptexturemanager.ts b/Sample/TypeScript/Demo/src/lapptexturemanager.ts
index a2bd273..d2f0a39 100644
--- a/Sample/TypeScript/Demo/src/lapptexturemanager.ts
+++ b/Sample/TypeScript/Demo/src/lapptexturemanager.ts
@@ -1,8 +1,8 @@
-/*
+/**
* Copyright(c) Live2D Inc. All rights reserved.
*
* Use of this source code is governed by the Live2D Open Software license
- * that can be found at http://live2d.com/eula/live2d-open-software-license-agreement_en.html.
+ * that can be found at https://www.live2d.com/eula/live2d-open-software-license-agreement_en.html.
*/
import {Live2DCubismFramework as csmvector} from "../../../../Framework/type/csmvector";
@@ -38,7 +38,7 @@ export class LAppTextureManager
/**
* 画像読み込み
- *
+ *
* @param fileName 読み込む画像ファイルパス名
* @param usePremultiply Premult処理を有効にするか
* @return 画像情報、読み込み失敗時はnullを返す
@@ -50,7 +50,10 @@ export class LAppTextureManager
{
if(ite.ptr().fileName == fileName && ite.ptr().usePremultply == usePremultiply)
{
- // 2回目以降はキャッシュが使用される(待ち時間なし)
+ // 2回目以降はキャッシュが使用される(待ち時間なし)
+ // WebKitでは同じImageのonloadを再度呼ぶには再インスタンスが必要
+ // 詳細:https://stackoverflow.com/a/5024181
+ ite.ptr().img = new Image();
ite.ptr().img.onload = () =>
{
callback(ite.ptr());
@@ -69,12 +72,12 @@ export class LAppTextureManager
// テクスチャを選択
gl.bindTexture(gl.TEXTURE_2D, tex);
-
+
// テクスチャにピクセルを書き込む
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR_MIPMAP_LINEAR);
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR);
- // Premult処理を行わせる
+ // Premult処理を行わせる
if(usePremultiply)
{
gl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, 1);
@@ -108,7 +111,7 @@ export class LAppTextureManager
/**
* 画像の解放
- *
+ *
* 配列に存在する画像全てを解放する。
*/
public releaseTextures(): void
@@ -123,7 +126,7 @@ export class LAppTextureManager
/**
* 画像の解放
- *
+ *
* 指定したテクスチャの画像を解放する。
* @param texture 解放するテクスチャ
*/
@@ -144,7 +147,7 @@ export class LAppTextureManager
/**
* 画像の解放
- *
+ *
* 指定した名前の画像を解放する。
* @param fileName 解放する画像ファイルパス名
*/
@@ -174,5 +177,5 @@ export class TextureInfo
width: number = 0; // 横幅
height: number = 0; // 高さ
usePremultply: boolean; // Premult処理を有効にするか
- fileName: string; // ファイル名
-}
\ No newline at end of file
+ fileName: string; // ファイル名
+}
diff --git a/Sample/TypeScript/Demo/src/lappview.ts b/Sample/TypeScript/Demo/src/lappview.ts
index 46cbf6b..3ff55cf 100644
--- a/Sample/TypeScript/Demo/src/lappview.ts
+++ b/Sample/TypeScript/Demo/src/lappview.ts
@@ -1,9 +1,9 @@
-/*
-* Copyright(c) Live2D Inc. All rights reserved.
-*
-* Use of this source code is governed by the Live2D Open Software license
-* that can be found at http://live2d.com/eula/live2d-open-software-license-agreement_en.html.
-*/
+/**
+ * Copyright(c) Live2D Inc. All rights reserved.
+ *
+ * Use of this source code is governed by the Live2D Open Software license
+ * that can be found at https://www.live2d.com/eula/live2d-open-software-license-agreement_en.html.
+ */
import {Live2DCubismFramework as cubismMatrix44} from "../../../../Framework/math/cubismmatrix44";
import {Live2DCubismFramework as cubismviewmatrix} from "../../../../Framework/math/cubismviewmatrix";
@@ -80,13 +80,13 @@ export class LAppView
*/
public release(): void
{
- this._viewMatrix = null;
+ this._viewMatrix = null;
this._touchManager = null;
this._deviceToScreen = null;
-
+
this._gear.release();
this._gear = null;
-
+
this._back.release();
this._back = null;
@@ -113,7 +113,7 @@ export class LAppView
gl.flush();
let live2DManager: LAppLive2DManager = LAppLive2DManager.getInstance();
-
+
live2DManager.onUpdate();
}
@@ -145,7 +145,7 @@ export class LAppView
};
textureManager.createTextureFromPngFile(resourcesPath + imageName, false, initBackGroundTexture);
-
+
// 歯車画像初期化
imageName = LAppDefine.GearImageName;
let initGearTexture = (textureInfo: TextureInfo): void =>
@@ -168,7 +168,7 @@ export class LAppView
/**
* タッチされた時に呼ばれる。
- *
+ *
* @param pointX スクリーンX座標
* @param pointY スクリーンY座標
*/
@@ -179,7 +179,7 @@ export class LAppView
/**
* タッチしているときにポインタが動いたら呼ばれる。
- *
+ *
* @param pointX スクリーンX座標
* @param pointY スクリーンY座標
*/
@@ -196,7 +196,7 @@ export class LAppView
/**
* タッチが終了したら呼ばれる。
- *
+ *
* @param pointX スクリーンX座標
* @param pointY スクリーンY座標
*/
@@ -227,7 +227,7 @@ export class LAppView
/**
* X座標をView座標に変換する。
- *
+ *
* @param deviceX デバイスX座標
*/
public transformViewX(deviceX: number): number
@@ -238,7 +238,7 @@ export class LAppView
/**
* Y座標をView座標に変換する。
- *
+ *
* @param deviceY デバイスY座標
*/
public transformViewY(deviceY: number): number
@@ -258,7 +258,7 @@ export class LAppView
/**
* Y座標をScreen座標に変換する。
- *
+ *
* @param deviceY デバイスY座標
*/
public transformScreenY(deviceY: number): number
@@ -274,4 +274,4 @@ export class LAppView
_gear: LAppSprite; // ギア画像
_changeModel: boolean; // モデル切り替えフラグ
_isClick: boolean; // クリック中
-}
\ No newline at end of file
+}
diff --git a/Sample/TypeScript/Demo/src/main.ts b/Sample/TypeScript/Demo/src/main.ts
index c9b8eb0..d99b358 100644
--- a/Sample/TypeScript/Demo/src/main.ts
+++ b/Sample/TypeScript/Demo/src/main.ts
@@ -1,9 +1,9 @@
-/*
-* Copyright(c) Live2D Inc. All rights reserved.
-*
-* Use of this source code is governed by the Live2D Open Software license
-* that can be found at http://live2d.com/eula/live2d-open-software-license-agreement_en.html.
-*/
+/**
+ * Copyright(c) Live2D Inc. All rights reserved.
+ *
+ * Use of this source code is governed by the Live2D Open Software license
+ * that can be found at https://www.live2d.com/eula/live2d-open-software-license-agreement_en.html.
+ */
import { LAppDelegate } from "./lappdelegate";
diff --git a/Sample/TypeScript/Demo/src/touchmanager.ts b/Sample/TypeScript/Demo/src/touchmanager.ts
index 7ca0ba3..1bd75b3 100644
--- a/Sample/TypeScript/Demo/src/touchmanager.ts
+++ b/Sample/TypeScript/Demo/src/touchmanager.ts
@@ -1,9 +1,9 @@
-/*
-* Copyright(c) Live2D Inc. All rights reserved.
-*
-* Use of this source code is governed by the Live2D Open Software license
-* that can be found at http://live2d.com/eula/live2d-open-software-license-agreement_en.html.
-*/
+/**
+ * Copyright(c) Live2D Inc. All rights reserved.
+ *
+ * Use of this source code is governed by the Live2D Open Software license
+ * that can be found at https://www.live2d.com/eula/live2d-open-software-license-agreement_en.html.
+ */
export class TouchManager
{
@@ -32,7 +32,7 @@ export class TouchManager
{
return this._lastX;
}
-
+
public getCenterY(): number
{
return this._lastY;
@@ -148,7 +148,7 @@ export class TouchManager
/**
* 点1から点2への距離を求める
- *
+ *
* @param x1 1つ目のタッチした画面のxの値
* @param y1 1つ目のタッチした画面のyの値
* @param x2 2つ目のタッチした画面のxの値
@@ -162,15 +162,15 @@ export class TouchManager
/**
* 2つ目の値から、移動量を求める。
* 違う方向の場合は移動量0。同じ方向の場合は、絶対値が小さい方の値を参照する。
- *
+ *
* @param v1 1つ目の移動量
* @param v2 2つ目の移動量
- *
+ *
* @return 小さい方の移動量
*/
public calculateMovingAmount(v1: number, v2: number): number
{
- if ((v1 > 0.0) != (v2 > 0.0))
+ if ((v1 > 0.0) != (v2 > 0.0))
{
return 0.0;
}
@@ -196,4 +196,4 @@ export class TouchManager
_scale: number; // このフレームで掛け合わせる拡大率。拡大操作中以外は1。
_touchSingle: boolean; // シングルタッチ時はtrue
_flipAvailable: boolean; // フリップが有効かどうか
-}
\ No newline at end of file
+}
diff --git a/package-lock.json b/package-lock.json
new file mode 100644
index 0000000..a11e5d7
--- /dev/null
+++ b/package-lock.json
@@ -0,0 +1,5360 @@
+{
+ "requires": true,
+ "lockfileVersion": 1,
+ "dependencies": {
+ "@webassemblyjs/ast": {
+ "version": "1.8.5",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.8.5.tgz",
+ "integrity": "sha512-aJMfngIZ65+t71C3y2nBBg5FFG0Okt9m0XEgWZ7Ywgn1oMAT8cNwx00Uv1cQyHtidq0Xn94R4TAywO+LCQ+ZAQ==",
+ "dev": true,
+ "requires": {
+ "@webassemblyjs/helper-module-context": "1.8.5",
+ "@webassemblyjs/helper-wasm-bytecode": "1.8.5",
+ "@webassemblyjs/wast-parser": "1.8.5"
+ }
+ },
+ "@webassemblyjs/floating-point-hex-parser": {
+ "version": "1.8.5",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.8.5.tgz",
+ "integrity": "sha512-9p+79WHru1oqBh9ewP9zW95E3XAo+90oth7S5Re3eQnECGq59ly1Ri5tsIipKGpiStHsUYmY3zMLqtk3gTcOtQ==",
+ "dev": true
+ },
+ "@webassemblyjs/helper-api-error": {
+ "version": "1.8.5",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.8.5.tgz",
+ "integrity": "sha512-Za/tnzsvnqdaSPOUXHyKJ2XI7PDX64kWtURyGiJJZKVEdFOsdKUCPTNEVFZq3zJ2R0G5wc2PZ5gvdTRFgm81zA==",
+ "dev": true
+ },
+ "@webassemblyjs/helper-buffer": {
+ "version": "1.8.5",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.8.5.tgz",
+ "integrity": "sha512-Ri2R8nOS0U6G49Q86goFIPNgjyl6+oE1abW1pS84BuhP1Qcr5JqMwRFT3Ah3ADDDYGEgGs1iyb1DGX+kAi/c/Q==",
+ "dev": true
+ },
+ "@webassemblyjs/helper-code-frame": {
+ "version": "1.8.5",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.8.5.tgz",
+ "integrity": "sha512-VQAadSubZIhNpH46IR3yWO4kZZjMxN1opDrzePLdVKAZ+DFjkGD/rf4v1jap744uPVU6yjL/smZbRIIJTOUnKQ==",
+ "dev": true,
+ "requires": {
+ "@webassemblyjs/wast-printer": "1.8.5"
+ }
+ },
+ "@webassemblyjs/helper-fsm": {
+ "version": "1.8.5",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-fsm/-/helper-fsm-1.8.5.tgz",
+ "integrity": "sha512-kRuX/saORcg8se/ft6Q2UbRpZwP4y7YrWsLXPbbmtepKr22i8Z4O3V5QE9DbZK908dh5Xya4Un57SDIKwB9eow==",
+ "dev": true
+ },
+ "@webassemblyjs/helper-module-context": {
+ "version": "1.8.5",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-module-context/-/helper-module-context-1.8.5.tgz",
+ "integrity": "sha512-/O1B236mN7UNEU4t9X7Pj38i4VoU8CcMHyy3l2cV/kIF4U5KoHXDVqcDuOs1ltkac90IM4vZdHc52t1x8Yfs3g==",
+ "dev": true,
+ "requires": {
+ "@webassemblyjs/ast": "1.8.5",
+ "mamacro": "^0.0.3"
+ }
+ },
+ "@webassemblyjs/helper-wasm-bytecode": {
+ "version": "1.8.5",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.8.5.tgz",
+ "integrity": "sha512-Cu4YMYG3Ddl72CbmpjU/wbP6SACcOPVbHN1dI4VJNJVgFwaKf1ppeFJrwydOG3NDHxVGuCfPlLZNyEdIYlQ6QQ==",
+ "dev": true
+ },
+ "@webassemblyjs/helper-wasm-section": {
+ "version": "1.8.5",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.8.5.tgz",
+ "integrity": "sha512-VV083zwR+VTrIWWtgIUpqfvVdK4ff38loRmrdDBgBT8ADXYsEZ5mPQ4Nde90N3UYatHdYoDIFb7oHzMncI02tA==",
+ "dev": true,
+ "requires": {
+ "@webassemblyjs/ast": "1.8.5",
+ "@webassemblyjs/helper-buffer": "1.8.5",
+ "@webassemblyjs/helper-wasm-bytecode": "1.8.5",
+ "@webassemblyjs/wasm-gen": "1.8.5"
+ }
+ },
+ "@webassemblyjs/ieee754": {
+ "version": "1.8.5",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.8.5.tgz",
+ "integrity": "sha512-aaCvQYrvKbY/n6wKHb/ylAJr27GglahUO89CcGXMItrOBqRarUMxWLJgxm9PJNuKULwN5n1csT9bYoMeZOGF3g==",
+ "dev": true,
+ "requires": {
+ "@xtuc/ieee754": "^1.2.0"
+ }
+ },
+ "@webassemblyjs/leb128": {
+ "version": "1.8.5",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.8.5.tgz",
+ "integrity": "sha512-plYUuUwleLIziknvlP8VpTgO4kqNaH57Y3JnNa6DLpu/sGcP6hbVdfdX5aHAV716pQBKrfuU26BJK29qY37J7A==",
+ "dev": true,
+ "requires": {
+ "@xtuc/long": "4.2.2"
+ }
+ },
+ "@webassemblyjs/utf8": {
+ "version": "1.8.5",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.8.5.tgz",
+ "integrity": "sha512-U7zgftmQriw37tfD934UNInokz6yTmn29inT2cAetAsaU9YeVCveWEwhKL1Mg4yS7q//NGdzy79nlXh3bT8Kjw==",
+ "dev": true
+ },
+ "@webassemblyjs/wasm-edit": {
+ "version": "1.8.5",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.8.5.tgz",
+ "integrity": "sha512-A41EMy8MWw5yvqj7MQzkDjU29K7UJq1VrX2vWLzfpRHt3ISftOXqrtojn7nlPsZ9Ijhp5NwuODuycSvfAO/26Q==",
+ "dev": true,
+ "requires": {
+ "@webassemblyjs/ast": "1.8.5",
+ "@webassemblyjs/helper-buffer": "1.8.5",
+ "@webassemblyjs/helper-wasm-bytecode": "1.8.5",
+ "@webassemblyjs/helper-wasm-section": "1.8.5",
+ "@webassemblyjs/wasm-gen": "1.8.5",
+ "@webassemblyjs/wasm-opt": "1.8.5",
+ "@webassemblyjs/wasm-parser": "1.8.5",
+ "@webassemblyjs/wast-printer": "1.8.5"
+ }
+ },
+ "@webassemblyjs/wasm-gen": {
+ "version": "1.8.5",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.8.5.tgz",
+ "integrity": "sha512-BCZBT0LURC0CXDzj5FXSc2FPTsxwp3nWcqXQdOZE4U7h7i8FqtFK5Egia6f9raQLpEKT1VL7zr4r3+QX6zArWg==",
+ "dev": true,
+ "requires": {
+ "@webassemblyjs/ast": "1.8.5",
+ "@webassemblyjs/helper-wasm-bytecode": "1.8.5",
+ "@webassemblyjs/ieee754": "1.8.5",
+ "@webassemblyjs/leb128": "1.8.5",
+ "@webassemblyjs/utf8": "1.8.5"
+ }
+ },
+ "@webassemblyjs/wasm-opt": {
+ "version": "1.8.5",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.8.5.tgz",
+ "integrity": "sha512-HKo2mO/Uh9A6ojzu7cjslGaHaUU14LdLbGEKqTR7PBKwT6LdPtLLh9fPY33rmr5wcOMrsWDbbdCHq4hQUdd37Q==",
+ "dev": true,
+ "requires": {
+ "@webassemblyjs/ast": "1.8.5",
+ "@webassemblyjs/helper-buffer": "1.8.5",
+ "@webassemblyjs/wasm-gen": "1.8.5",
+ "@webassemblyjs/wasm-parser": "1.8.5"
+ }
+ },
+ "@webassemblyjs/wasm-parser": {
+ "version": "1.8.5",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.8.5.tgz",
+ "integrity": "sha512-pi0SYE9T6tfcMkthwcgCpL0cM9nRYr6/6fjgDtL6q/ZqKHdMWvxitRi5JcZ7RI4SNJJYnYNaWy5UUrHQy998lw==",
+ "dev": true,
+ "requires": {
+ "@webassemblyjs/ast": "1.8.5",
+ "@webassemblyjs/helper-api-error": "1.8.5",
+ "@webassemblyjs/helper-wasm-bytecode": "1.8.5",
+ "@webassemblyjs/ieee754": "1.8.5",
+ "@webassemblyjs/leb128": "1.8.5",
+ "@webassemblyjs/utf8": "1.8.5"
+ }
+ },
+ "@webassemblyjs/wast-parser": {
+ "version": "1.8.5",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-parser/-/wast-parser-1.8.5.tgz",
+ "integrity": "sha512-daXC1FyKWHF1i11obK086QRlsMsY4+tIOKgBqI1lxAnkp9xe9YMcgOxm9kLe+ttjs5aWV2KKE1TWJCN57/Btsg==",
+ "dev": true,
+ "requires": {
+ "@webassemblyjs/ast": "1.8.5",
+ "@webassemblyjs/floating-point-hex-parser": "1.8.5",
+ "@webassemblyjs/helper-api-error": "1.8.5",
+ "@webassemblyjs/helper-code-frame": "1.8.5",
+ "@webassemblyjs/helper-fsm": "1.8.5",
+ "@xtuc/long": "4.2.2"
+ }
+ },
+ "@webassemblyjs/wast-printer": {
+ "version": "1.8.5",
+ "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.8.5.tgz",
+ "integrity": "sha512-w0U0pD4EhlnvRyeJzBqaVSJAo9w/ce7/WPogeXLzGkO6hzhr4GnQIZ4W4uUt5b9ooAaXPtnXlj0gzsXEOUNYMg==",
+ "dev": true,
+ "requires": {
+ "@webassemblyjs/ast": "1.8.5",
+ "@webassemblyjs/wast-parser": "1.8.5",
+ "@xtuc/long": "4.2.2"
+ }
+ },
+ "@xtuc/ieee754": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz",
+ "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==",
+ "dev": true
+ },
+ "@xtuc/long": {
+ "version": "4.2.2",
+ "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz",
+ "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==",
+ "dev": true
+ },
+ "@zeit/schemas": {
+ "version": "2.6.0",
+ "resolved": "https://registry.npmjs.org/@zeit/schemas/-/schemas-2.6.0.tgz",
+ "integrity": "sha512-uUrgZ8AxS+Lio0fZKAipJjAh415JyrOZowliZAzmnJSsf7piVL5w+G0+gFJ0KSu3QRhvui/7zuvpLz03YjXAhg==",
+ "dev": true
+ },
+ "accepts": {
+ "version": "1.3.7",
+ "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz",
+ "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==",
+ "dev": true,
+ "requires": {
+ "mime-types": "~2.1.24",
+ "negotiator": "0.6.2"
+ }
+ },
+ "acorn": {
+ "version": "6.2.1",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.2.1.tgz",
+ "integrity": "sha512-JD0xT5FCRDNyjDda3Lrg/IxFscp9q4tiYtxE1/nOzlKCk7hIRuYjhq1kCNkbPjMRMZuFq20HNQn1I9k8Oj0E+Q==",
+ "dev": true
+ },
+ "ajv": {
+ "version": "6.10.2",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.2.tgz",
+ "integrity": "sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw==",
+ "dev": true,
+ "requires": {
+ "fast-deep-equal": "^2.0.1",
+ "fast-json-stable-stringify": "^2.0.0",
+ "json-schema-traverse": "^0.4.1",
+ "uri-js": "^4.2.2"
+ }
+ },
+ "ajv-errors": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/ajv-errors/-/ajv-errors-1.0.1.tgz",
+ "integrity": "sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==",
+ "dev": true
+ },
+ "ajv-keywords": {
+ "version": "3.4.1",
+ "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.4.1.tgz",
+ "integrity": "sha512-RO1ibKvd27e6FEShVFfPALuHI3WjSVNeK5FIsmme/LYRNxjKuNj+Dt7bucLa6NdSv3JcVTyMlm9kGR84z1XpaQ==",
+ "dev": true
+ },
+ "ansi-align": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-2.0.0.tgz",
+ "integrity": "sha1-w2rsy6VjuJzrVW82kPCx2eNUf38=",
+ "dev": true,
+ "requires": {
+ "string-width": "^2.0.0"
+ },
+ "dependencies": {
+ "ansi-regex": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
+ "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
+ "dev": true
+ },
+ "string-width": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz",
+ "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
+ "dev": true,
+ "requires": {
+ "is-fullwidth-code-point": "^2.0.0",
+ "strip-ansi": "^4.0.0"
+ }
+ },
+ "strip-ansi": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
+ "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "^3.0.0"
+ }
+ }
+ }
+ },
+ "ansi-regex": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
+ "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
+ "dev": true
+ },
+ "ansi-styles": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
+ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+ "dev": true,
+ "requires": {
+ "color-convert": "^1.9.0"
+ }
+ },
+ "anymatch": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz",
+ "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==",
+ "dev": true,
+ "requires": {
+ "micromatch": "^3.1.4",
+ "normalize-path": "^2.1.1"
+ },
+ "dependencies": {
+ "braces": {
+ "version": "2.3.2",
+ "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz",
+ "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==",
+ "dev": true,
+ "requires": {
+ "arr-flatten": "^1.1.0",
+ "array-unique": "^0.3.2",
+ "extend-shallow": "^2.0.1",
+ "fill-range": "^4.0.0",
+ "isobject": "^3.0.1",
+ "repeat-element": "^1.1.2",
+ "snapdragon": "^0.8.1",
+ "snapdragon-node": "^2.0.1",
+ "split-string": "^3.0.2",
+ "to-regex": "^3.0.1"
+ },
+ "dependencies": {
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "dev": true,
+ "requires": {
+ "is-extendable": "^0.1.0"
+ }
+ }
+ }
+ },
+ "fill-range": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz",
+ "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=",
+ "dev": true,
+ "requires": {
+ "extend-shallow": "^2.0.1",
+ "is-number": "^3.0.0",
+ "repeat-string": "^1.6.1",
+ "to-regex-range": "^2.1.0"
+ },
+ "dependencies": {
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "dev": true,
+ "requires": {
+ "is-extendable": "^0.1.0"
+ }
+ }
+ }
+ },
+ "is-number": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
+ "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
+ "dev": true,
+ "requires": {
+ "kind-of": "^3.0.2"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "dev": true,
+ "requires": {
+ "is-buffer": "^1.1.5"
+ }
+ }
+ }
+ },
+ "micromatch": {
+ "version": "3.1.10",
+ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz",
+ "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==",
+ "dev": true,
+ "requires": {
+ "arr-diff": "^4.0.0",
+ "array-unique": "^0.3.2",
+ "braces": "^2.3.1",
+ "define-property": "^2.0.2",
+ "extend-shallow": "^3.0.2",
+ "extglob": "^2.0.4",
+ "fragment-cache": "^0.2.1",
+ "kind-of": "^6.0.2",
+ "nanomatch": "^1.2.9",
+ "object.pick": "^1.3.0",
+ "regex-not": "^1.0.0",
+ "snapdragon": "^0.8.1",
+ "to-regex": "^3.0.2"
+ }
+ },
+ "normalize-path": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz",
+ "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=",
+ "dev": true,
+ "requires": {
+ "remove-trailing-separator": "^1.0.1"
+ }
+ },
+ "to-regex-range": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz",
+ "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=",
+ "dev": true,
+ "requires": {
+ "is-number": "^3.0.0",
+ "repeat-string": "^1.6.1"
+ }
+ }
+ }
+ },
+ "aproba": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz",
+ "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==",
+ "dev": true
+ },
+ "arch": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/arch/-/arch-2.1.1.tgz",
+ "integrity": "sha512-BLM56aPo9vLLFVa8+/+pJLnrZ7QGGTVHWsCwieAWT9o9K8UeGaQbzZbGoabWLOo2ksBCztoXdqBZBplqLDDCSg==",
+ "dev": true
+ },
+ "arg": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/arg/-/arg-2.0.0.tgz",
+ "integrity": "sha512-XxNTUzKnz1ctK3ZIcI2XUPlD96wbHP2nGqkPKpvk/HNRlPveYrXIVSTk9m3LcqOgDPg3B1nMvdV/K8wZd7PG4w==",
+ "dev": true
+ },
+ "arr-diff": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz",
+ "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=",
+ "dev": true
+ },
+ "arr-flatten": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz",
+ "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==",
+ "dev": true
+ },
+ "arr-union": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz",
+ "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=",
+ "dev": true
+ },
+ "array-filter": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/array-filter/-/array-filter-0.0.1.tgz",
+ "integrity": "sha1-fajPLiZijtcygDWB/SH2fKzS7uw=",
+ "dev": true
+ },
+ "array-map": {
+ "version": "0.0.0",
+ "resolved": "https://registry.npmjs.org/array-map/-/array-map-0.0.0.tgz",
+ "integrity": "sha1-iKK6tz0c97zVwbEYoAP2b2ZfpmI=",
+ "dev": true
+ },
+ "array-reduce": {
+ "version": "0.0.0",
+ "resolved": "https://registry.npmjs.org/array-reduce/-/array-reduce-0.0.0.tgz",
+ "integrity": "sha1-FziZ0//Rx9k4PkR5Ul2+J4yrXys=",
+ "dev": true
+ },
+ "array-unique": {
+ "version": "0.3.2",
+ "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz",
+ "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=",
+ "dev": true
+ },
+ "asn1.js": {
+ "version": "4.10.1",
+ "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz",
+ "integrity": "sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==",
+ "dev": true,
+ "requires": {
+ "bn.js": "^4.0.0",
+ "inherits": "^2.0.1",
+ "minimalistic-assert": "^1.0.0"
+ }
+ },
+ "assert": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/assert/-/assert-1.5.0.tgz",
+ "integrity": "sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==",
+ "dev": true,
+ "requires": {
+ "object-assign": "^4.1.1",
+ "util": "0.10.3"
+ },
+ "dependencies": {
+ "inherits": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz",
+ "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=",
+ "dev": true
+ },
+ "util": {
+ "version": "0.10.3",
+ "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz",
+ "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=",
+ "dev": true,
+ "requires": {
+ "inherits": "2.0.1"
+ }
+ }
+ }
+ },
+ "assign-symbols": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz",
+ "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=",
+ "dev": true
+ },
+ "async-each": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz",
+ "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==",
+ "dev": true
+ },
+ "atob": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz",
+ "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==",
+ "dev": true
+ },
+ "balanced-match": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
+ "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=",
+ "dev": true
+ },
+ "base": {
+ "version": "0.11.2",
+ "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz",
+ "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==",
+ "dev": true,
+ "requires": {
+ "cache-base": "^1.0.1",
+ "class-utils": "^0.3.5",
+ "component-emitter": "^1.2.1",
+ "define-property": "^1.0.0",
+ "isobject": "^3.0.1",
+ "mixin-deep": "^1.2.0",
+ "pascalcase": "^0.1.1"
+ },
+ "dependencies": {
+ "define-property": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
+ "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
+ "dev": true,
+ "requires": {
+ "is-descriptor": "^1.0.0"
+ }
+ },
+ "is-accessor-descriptor": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
+ "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
+ "dev": true,
+ "requires": {
+ "kind-of": "^6.0.0"
+ }
+ },
+ "is-data-descriptor": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
+ "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
+ "dev": true,
+ "requires": {
+ "kind-of": "^6.0.0"
+ }
+ },
+ "is-descriptor": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
+ "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
+ "dev": true,
+ "requires": {
+ "is-accessor-descriptor": "^1.0.0",
+ "is-data-descriptor": "^1.0.0",
+ "kind-of": "^6.0.2"
+ }
+ }
+ }
+ },
+ "base64-js": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.1.tgz",
+ "integrity": "sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g==",
+ "dev": true
+ },
+ "big.js": {
+ "version": "5.2.2",
+ "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz",
+ "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==",
+ "dev": true
+ },
+ "binary-extensions": {
+ "version": "1.13.1",
+ "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz",
+ "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==",
+ "dev": true
+ },
+ "bluebird": {
+ "version": "3.5.5",
+ "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.5.tgz",
+ "integrity": "sha512-5am6HnnfN+urzt4yfg7IgTbotDjIT/u8AJpEt0sIU9FtXfVeezXAPKswrG+xKUCOYAINpSdgZVDU6QFh+cuH3w==",
+ "dev": true
+ },
+ "bn.js": {
+ "version": "4.11.8",
+ "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz",
+ "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==",
+ "dev": true
+ },
+ "boxen": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/boxen/-/boxen-1.3.0.tgz",
+ "integrity": "sha512-TNPjfTr432qx7yOjQyaXm3dSR0MH9vXp7eT1BFSl/C51g+EFnOR9hTg1IreahGBmDNCehscshe45f+C1TBZbLw==",
+ "dev": true,
+ "requires": {
+ "ansi-align": "^2.0.0",
+ "camelcase": "^4.0.0",
+ "chalk": "^2.0.1",
+ "cli-boxes": "^1.0.0",
+ "string-width": "^2.0.0",
+ "term-size": "^1.2.0",
+ "widest-line": "^2.0.0"
+ },
+ "dependencies": {
+ "ansi-regex": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
+ "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
+ "dev": true
+ },
+ "camelcase": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz",
+ "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=",
+ "dev": true
+ },
+ "string-width": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz",
+ "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
+ "dev": true,
+ "requires": {
+ "is-fullwidth-code-point": "^2.0.0",
+ "strip-ansi": "^4.0.0"
+ }
+ },
+ "strip-ansi": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
+ "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "^3.0.0"
+ }
+ }
+ }
+ },
+ "brace-expansion": {
+ "version": "1.1.11",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
+ "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
+ "dev": true,
+ "requires": {
+ "balanced-match": "^1.0.0",
+ "concat-map": "0.0.1"
+ }
+ },
+ "braces": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
+ "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
+ "dev": true,
+ "requires": {
+ "fill-range": "^7.0.1"
+ }
+ },
+ "brorand": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz",
+ "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=",
+ "dev": true
+ },
+ "browserify-aes": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz",
+ "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==",
+ "dev": true,
+ "requires": {
+ "buffer-xor": "^1.0.3",
+ "cipher-base": "^1.0.0",
+ "create-hash": "^1.1.0",
+ "evp_bytestokey": "^1.0.3",
+ "inherits": "^2.0.1",
+ "safe-buffer": "^5.0.1"
+ }
+ },
+ "browserify-cipher": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz",
+ "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==",
+ "dev": true,
+ "requires": {
+ "browserify-aes": "^1.0.4",
+ "browserify-des": "^1.0.0",
+ "evp_bytestokey": "^1.0.0"
+ }
+ },
+ "browserify-des": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz",
+ "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==",
+ "dev": true,
+ "requires": {
+ "cipher-base": "^1.0.1",
+ "des.js": "^1.0.0",
+ "inherits": "^2.0.1",
+ "safe-buffer": "^5.1.2"
+ }
+ },
+ "browserify-rsa": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz",
+ "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=",
+ "dev": true,
+ "requires": {
+ "bn.js": "^4.1.0",
+ "randombytes": "^2.0.1"
+ }
+ },
+ "browserify-sign": {
+ "version": "4.0.4",
+ "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.0.4.tgz",
+ "integrity": "sha1-qk62jl17ZYuqa/alfmMMvXqT0pg=",
+ "dev": true,
+ "requires": {
+ "bn.js": "^4.1.1",
+ "browserify-rsa": "^4.0.0",
+ "create-hash": "^1.1.0",
+ "create-hmac": "^1.1.2",
+ "elliptic": "^6.0.0",
+ "inherits": "^2.0.1",
+ "parse-asn1": "^5.0.0"
+ }
+ },
+ "browserify-zlib": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz",
+ "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==",
+ "dev": true,
+ "requires": {
+ "pako": "~1.0.5"
+ }
+ },
+ "buffer": {
+ "version": "4.9.1",
+ "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz",
+ "integrity": "sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg=",
+ "dev": true,
+ "requires": {
+ "base64-js": "^1.0.2",
+ "ieee754": "^1.1.4",
+ "isarray": "^1.0.0"
+ }
+ },
+ "buffer-from": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz",
+ "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==",
+ "dev": true
+ },
+ "buffer-xor": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz",
+ "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=",
+ "dev": true
+ },
+ "builtin-status-codes": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz",
+ "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=",
+ "dev": true
+ },
+ "bytes": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz",
+ "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=",
+ "dev": true
+ },
+ "cacache": {
+ "version": "12.0.2",
+ "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.2.tgz",
+ "integrity": "sha512-ifKgxH2CKhJEg6tNdAwziu6Q33EvuG26tYcda6PT3WKisZcYDXsnEdnRv67Po3yCzFfaSoMjGZzJyD2c3DT1dg==",
+ "dev": true,
+ "requires": {
+ "bluebird": "^3.5.5",
+ "chownr": "^1.1.1",
+ "figgy-pudding": "^3.5.1",
+ "glob": "^7.1.4",
+ "graceful-fs": "^4.1.15",
+ "infer-owner": "^1.0.3",
+ "lru-cache": "^5.1.1",
+ "mississippi": "^3.0.0",
+ "mkdirp": "^0.5.1",
+ "move-concurrently": "^1.0.1",
+ "promise-inflight": "^1.0.1",
+ "rimraf": "^2.6.3",
+ "ssri": "^6.0.1",
+ "unique-filename": "^1.1.1",
+ "y18n": "^4.0.0"
+ }
+ },
+ "cache-base": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz",
+ "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==",
+ "dev": true,
+ "requires": {
+ "collection-visit": "^1.0.0",
+ "component-emitter": "^1.2.1",
+ "get-value": "^2.0.6",
+ "has-value": "^1.0.0",
+ "isobject": "^3.0.1",
+ "set-value": "^2.0.0",
+ "to-object-path": "^0.3.0",
+ "union-value": "^1.0.0",
+ "unset-value": "^1.0.0"
+ }
+ },
+ "camelcase": {
+ "version": "5.3.1",
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz",
+ "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==",
+ "dev": true
+ },
+ "chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^3.2.1",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^5.3.0"
+ }
+ },
+ "chokidar": {
+ "version": "2.1.6",
+ "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.6.tgz",
+ "integrity": "sha512-V2jUo67OKkc6ySiRpJrjlpJKl9kDuG+Xb8VgsGzb+aEouhgS1D0weyPU4lEzdAcsCAvrih2J2BqyXqHWvVLw5g==",
+ "dev": true,
+ "requires": {
+ "anymatch": "^2.0.0",
+ "async-each": "^1.0.1",
+ "braces": "^2.3.2",
+ "fsevents": "^1.2.7",
+ "glob-parent": "^3.1.0",
+ "inherits": "^2.0.3",
+ "is-binary-path": "^1.0.0",
+ "is-glob": "^4.0.0",
+ "normalize-path": "^3.0.0",
+ "path-is-absolute": "^1.0.0",
+ "readdirp": "^2.2.1",
+ "upath": "^1.1.1"
+ },
+ "dependencies": {
+ "braces": {
+ "version": "2.3.2",
+ "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz",
+ "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==",
+ "dev": true,
+ "requires": {
+ "arr-flatten": "^1.1.0",
+ "array-unique": "^0.3.2",
+ "extend-shallow": "^2.0.1",
+ "fill-range": "^4.0.0",
+ "isobject": "^3.0.1",
+ "repeat-element": "^1.1.2",
+ "snapdragon": "^0.8.1",
+ "snapdragon-node": "^2.0.1",
+ "split-string": "^3.0.2",
+ "to-regex": "^3.0.1"
+ }
+ },
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "dev": true,
+ "requires": {
+ "is-extendable": "^0.1.0"
+ }
+ },
+ "fill-range": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz",
+ "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=",
+ "dev": true,
+ "requires": {
+ "extend-shallow": "^2.0.1",
+ "is-number": "^3.0.0",
+ "repeat-string": "^1.6.1",
+ "to-regex-range": "^2.1.0"
+ }
+ },
+ "is-number": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
+ "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
+ "dev": true,
+ "requires": {
+ "kind-of": "^3.0.2"
+ }
+ },
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "dev": true,
+ "requires": {
+ "is-buffer": "^1.1.5"
+ }
+ },
+ "to-regex-range": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz",
+ "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=",
+ "dev": true,
+ "requires": {
+ "is-number": "^3.0.0",
+ "repeat-string": "^1.6.1"
+ }
+ }
+ }
+ },
+ "chownr": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.2.tgz",
+ "integrity": "sha512-GkfeAQh+QNy3wquu9oIZr6SS5x7wGdSgNQvD10X3r+AZr1Oys22HW8kAmDMvNg2+Dm0TeGaEuO8gFwdBXxwO8A==",
+ "dev": true
+ },
+ "chrome-trace-event": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.2.tgz",
+ "integrity": "sha512-9e/zx1jw7B4CO+c/RXoCsfg/x1AfUBioy4owYH0bJprEYAx5hRFLRhWBqHAG57D0ZM4H7vxbP7bPe0VwhQRYDQ==",
+ "dev": true,
+ "requires": {
+ "tslib": "^1.9.0"
+ }
+ },
+ "cipher-base": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz",
+ "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==",
+ "dev": true,
+ "requires": {
+ "inherits": "^2.0.1",
+ "safe-buffer": "^5.0.1"
+ }
+ },
+ "class-utils": {
+ "version": "0.3.6",
+ "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz",
+ "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==",
+ "dev": true,
+ "requires": {
+ "arr-union": "^3.1.0",
+ "define-property": "^0.2.5",
+ "isobject": "^3.0.0",
+ "static-extend": "^0.1.1"
+ },
+ "dependencies": {
+ "define-property": {
+ "version": "0.2.5",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
+ "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
+ "dev": true,
+ "requires": {
+ "is-descriptor": "^0.1.0"
+ }
+ }
+ }
+ },
+ "cli-boxes": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-1.0.0.tgz",
+ "integrity": "sha1-T6kXw+WclKAEzWH47lCdplFocUM=",
+ "dev": true
+ },
+ "clipboardy": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/clipboardy/-/clipboardy-1.2.3.tgz",
+ "integrity": "sha512-2WNImOvCRe6r63Gk9pShfkwXsVtKCroMAevIbiae021mS850UkWPbevxsBz3tnvjZIEGvlwaqCPsw+4ulzNgJA==",
+ "dev": true,
+ "requires": {
+ "arch": "^2.1.0",
+ "execa": "^0.8.0"
+ },
+ "dependencies": {
+ "cross-spawn": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz",
+ "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=",
+ "dev": true,
+ "requires": {
+ "lru-cache": "^4.0.1",
+ "shebang-command": "^1.2.0",
+ "which": "^1.2.9"
+ }
+ },
+ "execa": {
+ "version": "0.8.0",
+ "resolved": "https://registry.npmjs.org/execa/-/execa-0.8.0.tgz",
+ "integrity": "sha1-2NdrvBtVIX7RkP1t1J08d07PyNo=",
+ "dev": true,
+ "requires": {
+ "cross-spawn": "^5.0.1",
+ "get-stream": "^3.0.0",
+ "is-stream": "^1.1.0",
+ "npm-run-path": "^2.0.0",
+ "p-finally": "^1.0.0",
+ "signal-exit": "^3.0.0",
+ "strip-eof": "^1.0.0"
+ }
+ },
+ "get-stream": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz",
+ "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=",
+ "dev": true
+ },
+ "lru-cache": {
+ "version": "4.1.5",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz",
+ "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==",
+ "dev": true,
+ "requires": {
+ "pseudomap": "^1.0.2",
+ "yallist": "^2.1.2"
+ }
+ },
+ "yallist": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz",
+ "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=",
+ "dev": true
+ }
+ }
+ },
+ "cliui": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz",
+ "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==",
+ "dev": true,
+ "requires": {
+ "string-width": "^3.1.0",
+ "strip-ansi": "^5.2.0",
+ "wrap-ansi": "^5.1.0"
+ }
+ },
+ "collection-visit": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz",
+ "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=",
+ "dev": true,
+ "requires": {
+ "map-visit": "^1.0.0",
+ "object-visit": "^1.0.0"
+ }
+ },
+ "color-convert": {
+ "version": "1.9.3",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
+ "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
+ "dev": true,
+ "requires": {
+ "color-name": "1.1.3"
+ }
+ },
+ "color-name": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
+ "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=",
+ "dev": true
+ },
+ "commander": {
+ "version": "2.20.0",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.0.tgz",
+ "integrity": "sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ==",
+ "dev": true
+ },
+ "commondir": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz",
+ "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=",
+ "dev": true
+ },
+ "component-emitter": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz",
+ "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==",
+ "dev": true
+ },
+ "compressible": {
+ "version": "2.0.17",
+ "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.17.tgz",
+ "integrity": "sha512-BGHeLCK1GV7j1bSmQQAi26X+GgWcTjLr/0tzSvMCl3LH1w1IJ4PFSPoV5316b30cneTziC+B1a+3OjoSUcQYmw==",
+ "dev": true,
+ "requires": {
+ "mime-db": ">= 1.40.0 < 2"
+ }
+ },
+ "compression": {
+ "version": "1.7.3",
+ "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.3.tgz",
+ "integrity": "sha512-HSjyBG5N1Nnz7tF2+O7A9XUhyjru71/fwgNb7oIsEVHR0WShfs2tIS/EySLgiTe98aOK18YDlMXpzjCXY/n9mg==",
+ "dev": true,
+ "requires": {
+ "accepts": "~1.3.5",
+ "bytes": "3.0.0",
+ "compressible": "~2.0.14",
+ "debug": "2.6.9",
+ "on-headers": "~1.0.1",
+ "safe-buffer": "5.1.2",
+ "vary": "~1.1.2"
+ }
+ },
+ "concat-map": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
+ "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
+ "dev": true
+ },
+ "concat-stream": {
+ "version": "1.6.2",
+ "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz",
+ "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==",
+ "dev": true,
+ "requires": {
+ "buffer-from": "^1.0.0",
+ "inherits": "^2.0.3",
+ "readable-stream": "^2.2.2",
+ "typedarray": "^0.0.6"
+ }
+ },
+ "console-browserify": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz",
+ "integrity": "sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=",
+ "dev": true,
+ "requires": {
+ "date-now": "^0.1.4"
+ }
+ },
+ "constants-browserify": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz",
+ "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=",
+ "dev": true
+ },
+ "content-disposition": {
+ "version": "0.5.2",
+ "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.2.tgz",
+ "integrity": "sha1-DPaLud318r55YcOoUXjLhdunjLQ=",
+ "dev": true
+ },
+ "copy-concurrently": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz",
+ "integrity": "sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==",
+ "dev": true,
+ "requires": {
+ "aproba": "^1.1.1",
+ "fs-write-stream-atomic": "^1.0.8",
+ "iferr": "^0.1.5",
+ "mkdirp": "^0.5.1",
+ "rimraf": "^2.5.4",
+ "run-queue": "^1.0.0"
+ }
+ },
+ "copy-descriptor": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz",
+ "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=",
+ "dev": true
+ },
+ "core-util-is": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
+ "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=",
+ "dev": true
+ },
+ "create-ecdh": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.3.tgz",
+ "integrity": "sha512-GbEHQPMOswGpKXM9kCWVrremUcBmjteUaQ01T9rkKCPDXfUHX0IoP9LpHYo2NPFampa4e+/pFDc3jQdxrxQLaw==",
+ "dev": true,
+ "requires": {
+ "bn.js": "^4.1.0",
+ "elliptic": "^6.0.0"
+ }
+ },
+ "create-hash": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz",
+ "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==",
+ "dev": true,
+ "requires": {
+ "cipher-base": "^1.0.1",
+ "inherits": "^2.0.1",
+ "md5.js": "^1.3.4",
+ "ripemd160": "^2.0.1",
+ "sha.js": "^2.4.0"
+ }
+ },
+ "create-hmac": {
+ "version": "1.1.7",
+ "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz",
+ "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==",
+ "dev": true,
+ "requires": {
+ "cipher-base": "^1.0.3",
+ "create-hash": "^1.1.0",
+ "inherits": "^2.0.1",
+ "ripemd160": "^2.0.0",
+ "safe-buffer": "^5.0.1",
+ "sha.js": "^2.4.8"
+ }
+ },
+ "cross-spawn": {
+ "version": "6.0.5",
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz",
+ "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==",
+ "dev": true,
+ "requires": {
+ "nice-try": "^1.0.4",
+ "path-key": "^2.0.1",
+ "semver": "^5.5.0",
+ "shebang-command": "^1.2.0",
+ "which": "^1.2.9"
+ }
+ },
+ "crypto-browserify": {
+ "version": "3.12.0",
+ "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz",
+ "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==",
+ "dev": true,
+ "requires": {
+ "browserify-cipher": "^1.0.0",
+ "browserify-sign": "^4.0.0",
+ "create-ecdh": "^4.0.0",
+ "create-hash": "^1.1.0",
+ "create-hmac": "^1.1.0",
+ "diffie-hellman": "^5.0.0",
+ "inherits": "^2.0.1",
+ "pbkdf2": "^3.0.3",
+ "public-encrypt": "^4.0.0",
+ "randombytes": "^2.0.0",
+ "randomfill": "^1.0.3"
+ }
+ },
+ "cyclist": {
+ "version": "0.2.2",
+ "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-0.2.2.tgz",
+ "integrity": "sha1-GzN5LhHpFKL9bW7WRHRkRE5fpkA=",
+ "dev": true
+ },
+ "date-now": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz",
+ "integrity": "sha1-6vQ5/U1ISK105cx9vvIAZyueNFs=",
+ "dev": true
+ },
+ "debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "dev": true,
+ "requires": {
+ "ms": "2.0.0"
+ }
+ },
+ "decamelize": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
+ "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=",
+ "dev": true
+ },
+ "decode-uri-component": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz",
+ "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=",
+ "dev": true
+ },
+ "deep-extend": {
+ "version": "0.6.0",
+ "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz",
+ "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==",
+ "dev": true
+ },
+ "define-properties": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz",
+ "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==",
+ "dev": true,
+ "requires": {
+ "object-keys": "^1.0.12"
+ }
+ },
+ "define-property": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz",
+ "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==",
+ "dev": true,
+ "requires": {
+ "is-descriptor": "^1.0.2",
+ "isobject": "^3.0.1"
+ },
+ "dependencies": {
+ "is-accessor-descriptor": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
+ "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
+ "dev": true,
+ "requires": {
+ "kind-of": "^6.0.0"
+ }
+ },
+ "is-data-descriptor": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
+ "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
+ "dev": true,
+ "requires": {
+ "kind-of": "^6.0.0"
+ }
+ },
+ "is-descriptor": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
+ "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
+ "dev": true,
+ "requires": {
+ "is-accessor-descriptor": "^1.0.0",
+ "is-data-descriptor": "^1.0.0",
+ "kind-of": "^6.0.2"
+ }
+ }
+ }
+ },
+ "des.js": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.0.tgz",
+ "integrity": "sha1-wHTS4qpqipoH29YfmhXCzYPsjsw=",
+ "dev": true,
+ "requires": {
+ "inherits": "^2.0.1",
+ "minimalistic-assert": "^1.0.0"
+ }
+ },
+ "detect-file": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz",
+ "integrity": "sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc=",
+ "dev": true
+ },
+ "diffie-hellman": {
+ "version": "5.0.3",
+ "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz",
+ "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==",
+ "dev": true,
+ "requires": {
+ "bn.js": "^4.1.0",
+ "miller-rabin": "^4.0.0",
+ "randombytes": "^2.0.0"
+ }
+ },
+ "domain-browser": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz",
+ "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==",
+ "dev": true
+ },
+ "duplexify": {
+ "version": "3.7.1",
+ "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz",
+ "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==",
+ "dev": true,
+ "requires": {
+ "end-of-stream": "^1.0.0",
+ "inherits": "^2.0.1",
+ "readable-stream": "^2.0.0",
+ "stream-shift": "^1.0.0"
+ }
+ },
+ "elliptic": {
+ "version": "6.5.0",
+ "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.0.tgz",
+ "integrity": "sha512-eFOJTMyCYb7xtE/caJ6JJu+bhi67WCYNbkGSknu20pmM8Ke/bqOfdnZWxyoGN26JgfxTbXrsCkEw4KheCT/KGg==",
+ "dev": true,
+ "requires": {
+ "bn.js": "^4.4.0",
+ "brorand": "^1.0.1",
+ "hash.js": "^1.0.0",
+ "hmac-drbg": "^1.0.0",
+ "inherits": "^2.0.1",
+ "minimalistic-assert": "^1.0.0",
+ "minimalistic-crypto-utils": "^1.0.0"
+ }
+ },
+ "emoji-regex": {
+ "version": "7.0.3",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz",
+ "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==",
+ "dev": true
+ },
+ "emojis-list": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz",
+ "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=",
+ "dev": true
+ },
+ "end-of-stream": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz",
+ "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==",
+ "dev": true,
+ "requires": {
+ "once": "^1.4.0"
+ }
+ },
+ "enhanced-resolve": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.1.0.tgz",
+ "integrity": "sha512-F/7vkyTtyc/llOIn8oWclcB25KdRaiPBpZYDgJHgh/UHtpgT2p2eldQgtQnLtUvfMKPKxbRaQM/hHkvLHt1Vng==",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "^4.1.2",
+ "memory-fs": "^0.4.0",
+ "tapable": "^1.0.0"
+ }
+ },
+ "errno": {
+ "version": "0.1.7",
+ "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.7.tgz",
+ "integrity": "sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg==",
+ "dev": true,
+ "requires": {
+ "prr": "~1.0.1"
+ }
+ },
+ "error-ex": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz",
+ "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==",
+ "dev": true,
+ "requires": {
+ "is-arrayish": "^0.2.1"
+ }
+ },
+ "es-abstract": {
+ "version": "1.13.0",
+ "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.13.0.tgz",
+ "integrity": "sha512-vDZfg/ykNxQVwup/8E1BZhVzFfBxs9NqMzGcvIJrqg5k2/5Za2bWo40dK2J1pgLngZ7c+Shh8lwYtLGyrwPutg==",
+ "dev": true,
+ "requires": {
+ "es-to-primitive": "^1.2.0",
+ "function-bind": "^1.1.1",
+ "has": "^1.0.3",
+ "is-callable": "^1.1.4",
+ "is-regex": "^1.0.4",
+ "object-keys": "^1.0.12"
+ }
+ },
+ "es-to-primitive": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.0.tgz",
+ "integrity": "sha512-qZryBOJjV//LaxLTV6UC//WewneB3LcXOL9NP++ozKVXsIIIpm/2c13UDiD9Jp2eThsecw9m3jPqDwTyobcdbg==",
+ "dev": true,
+ "requires": {
+ "is-callable": "^1.1.4",
+ "is-date-object": "^1.0.1",
+ "is-symbol": "^1.0.2"
+ }
+ },
+ "escape-string-regexp": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
+ "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=",
+ "dev": true
+ },
+ "eslint-scope": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz",
+ "integrity": "sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==",
+ "dev": true,
+ "requires": {
+ "esrecurse": "^4.1.0",
+ "estraverse": "^4.1.1"
+ }
+ },
+ "esrecurse": {
+ "version": "4.2.1",
+ "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz",
+ "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==",
+ "dev": true,
+ "requires": {
+ "estraverse": "^4.1.0"
+ }
+ },
+ "estraverse": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz",
+ "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=",
+ "dev": true
+ },
+ "events": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/events/-/events-3.0.0.tgz",
+ "integrity": "sha512-Dc381HFWJzEOhQ+d8pkNon++bk9h6cdAoAj4iE6Q4y6xgTzySWXlKn05/TVNpjnfRqi/X0EpJEJohPjNI3zpVA==",
+ "dev": true
+ },
+ "evp_bytestokey": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz",
+ "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==",
+ "dev": true,
+ "requires": {
+ "md5.js": "^1.3.4",
+ "safe-buffer": "^5.1.1"
+ }
+ },
+ "execa": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz",
+ "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==",
+ "dev": true,
+ "requires": {
+ "cross-spawn": "^6.0.0",
+ "get-stream": "^4.0.0",
+ "is-stream": "^1.1.0",
+ "npm-run-path": "^2.0.0",
+ "p-finally": "^1.0.0",
+ "signal-exit": "^3.0.0",
+ "strip-eof": "^1.0.0"
+ }
+ },
+ "expand-brackets": {
+ "version": "2.1.4",
+ "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz",
+ "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=",
+ "dev": true,
+ "requires": {
+ "debug": "^2.3.3",
+ "define-property": "^0.2.5",
+ "extend-shallow": "^2.0.1",
+ "posix-character-classes": "^0.1.0",
+ "regex-not": "^1.0.0",
+ "snapdragon": "^0.8.1",
+ "to-regex": "^3.0.1"
+ },
+ "dependencies": {
+ "define-property": {
+ "version": "0.2.5",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
+ "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
+ "dev": true,
+ "requires": {
+ "is-descriptor": "^0.1.0"
+ }
+ },
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "dev": true,
+ "requires": {
+ "is-extendable": "^0.1.0"
+ }
+ }
+ }
+ },
+ "expand-tilde": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz",
+ "integrity": "sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=",
+ "dev": true,
+ "requires": {
+ "homedir-polyfill": "^1.0.1"
+ }
+ },
+ "extend-shallow": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz",
+ "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=",
+ "dev": true,
+ "requires": {
+ "assign-symbols": "^1.0.0",
+ "is-extendable": "^1.0.1"
+ },
+ "dependencies": {
+ "is-extendable": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
+ "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
+ "dev": true,
+ "requires": {
+ "is-plain-object": "^2.0.4"
+ }
+ }
+ }
+ },
+ "extglob": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz",
+ "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==",
+ "dev": true,
+ "requires": {
+ "array-unique": "^0.3.2",
+ "define-property": "^1.0.0",
+ "expand-brackets": "^2.1.4",
+ "extend-shallow": "^2.0.1",
+ "fragment-cache": "^0.2.1",
+ "regex-not": "^1.0.0",
+ "snapdragon": "^0.8.1",
+ "to-regex": "^3.0.1"
+ },
+ "dependencies": {
+ "define-property": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
+ "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
+ "dev": true,
+ "requires": {
+ "is-descriptor": "^1.0.0"
+ }
+ },
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "dev": true,
+ "requires": {
+ "is-extendable": "^0.1.0"
+ }
+ },
+ "is-accessor-descriptor": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
+ "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
+ "dev": true,
+ "requires": {
+ "kind-of": "^6.0.0"
+ }
+ },
+ "is-data-descriptor": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
+ "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
+ "dev": true,
+ "requires": {
+ "kind-of": "^6.0.0"
+ }
+ },
+ "is-descriptor": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
+ "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
+ "dev": true,
+ "requires": {
+ "is-accessor-descriptor": "^1.0.0",
+ "is-data-descriptor": "^1.0.0",
+ "kind-of": "^6.0.2"
+ }
+ }
+ }
+ },
+ "fast-deep-equal": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz",
+ "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=",
+ "dev": true
+ },
+ "fast-json-stable-stringify": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz",
+ "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=",
+ "dev": true
+ },
+ "fast-url-parser": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/fast-url-parser/-/fast-url-parser-1.1.3.tgz",
+ "integrity": "sha1-9K8+qfNNiicc9YrSs3WfQx8LMY0=",
+ "dev": true,
+ "requires": {
+ "punycode": "^1.3.2"
+ },
+ "dependencies": {
+ "punycode": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz",
+ "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=",
+ "dev": true
+ }
+ }
+ },
+ "figgy-pudding": {
+ "version": "3.5.1",
+ "resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.1.tgz",
+ "integrity": "sha512-vNKxJHTEKNThjfrdJwHc7brvM6eVevuO5nTj6ez8ZQ1qbXTvGthucRF7S4vf2cr71QVnT70V34v0S1DyQsti0w==",
+ "dev": true
+ },
+ "fill-range": {
+ "version": "7.0.1",
+ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
+ "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
+ "dev": true,
+ "requires": {
+ "to-regex-range": "^5.0.1"
+ }
+ },
+ "find-cache-dir": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz",
+ "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==",
+ "dev": true,
+ "requires": {
+ "commondir": "^1.0.1",
+ "make-dir": "^2.0.0",
+ "pkg-dir": "^3.0.0"
+ }
+ },
+ "find-up": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz",
+ "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
+ "dev": true,
+ "requires": {
+ "locate-path": "^3.0.0"
+ }
+ },
+ "findup-sync": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-3.0.0.tgz",
+ "integrity": "sha512-YbffarhcicEhOrm4CtrwdKBdCuz576RLdhJDsIfvNtxUuhdRet1qZcsMjqbePtAseKdAnDyM/IyXbu7PRPRLYg==",
+ "dev": true,
+ "requires": {
+ "detect-file": "^1.0.0",
+ "is-glob": "^4.0.0",
+ "micromatch": "^3.0.4",
+ "resolve-dir": "^1.0.1"
+ },
+ "dependencies": {
+ "braces": {
+ "version": "2.3.2",
+ "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz",
+ "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==",
+ "dev": true,
+ "requires": {
+ "arr-flatten": "^1.1.0",
+ "array-unique": "^0.3.2",
+ "extend-shallow": "^2.0.1",
+ "fill-range": "^4.0.0",
+ "isobject": "^3.0.1",
+ "repeat-element": "^1.1.2",
+ "snapdragon": "^0.8.1",
+ "snapdragon-node": "^2.0.1",
+ "split-string": "^3.0.2",
+ "to-regex": "^3.0.1"
+ },
+ "dependencies": {
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "dev": true,
+ "requires": {
+ "is-extendable": "^0.1.0"
+ }
+ }
+ }
+ },
+ "fill-range": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz",
+ "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=",
+ "dev": true,
+ "requires": {
+ "extend-shallow": "^2.0.1",
+ "is-number": "^3.0.0",
+ "repeat-string": "^1.6.1",
+ "to-regex-range": "^2.1.0"
+ },
+ "dependencies": {
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "dev": true,
+ "requires": {
+ "is-extendable": "^0.1.0"
+ }
+ }
+ }
+ },
+ "is-number": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
+ "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
+ "dev": true,
+ "requires": {
+ "kind-of": "^3.0.2"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "dev": true,
+ "requires": {
+ "is-buffer": "^1.1.5"
+ }
+ }
+ }
+ },
+ "micromatch": {
+ "version": "3.1.10",
+ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz",
+ "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==",
+ "dev": true,
+ "requires": {
+ "arr-diff": "^4.0.0",
+ "array-unique": "^0.3.2",
+ "braces": "^2.3.1",
+ "define-property": "^2.0.2",
+ "extend-shallow": "^3.0.2",
+ "extglob": "^2.0.4",
+ "fragment-cache": "^0.2.1",
+ "kind-of": "^6.0.2",
+ "nanomatch": "^1.2.9",
+ "object.pick": "^1.3.0",
+ "regex-not": "^1.0.0",
+ "snapdragon": "^0.8.1",
+ "to-regex": "^3.0.2"
+ }
+ },
+ "to-regex-range": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz",
+ "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=",
+ "dev": true,
+ "requires": {
+ "is-number": "^3.0.0",
+ "repeat-string": "^1.6.1"
+ }
+ }
+ }
+ },
+ "flush-write-stream": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz",
+ "integrity": "sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==",
+ "dev": true,
+ "requires": {
+ "inherits": "^2.0.3",
+ "readable-stream": "^2.3.6"
+ }
+ },
+ "for-in": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz",
+ "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=",
+ "dev": true
+ },
+ "fragment-cache": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz",
+ "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=",
+ "dev": true,
+ "requires": {
+ "map-cache": "^0.2.2"
+ }
+ },
+ "from2": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz",
+ "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=",
+ "dev": true,
+ "requires": {
+ "inherits": "^2.0.1",
+ "readable-stream": "^2.0.0"
+ }
+ },
+ "fs-write-stream-atomic": {
+ "version": "1.0.10",
+ "resolved": "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz",
+ "integrity": "sha1-tH31NJPvkR33VzHnCp3tAYnbQMk=",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "^4.1.2",
+ "iferr": "^0.1.5",
+ "imurmurhash": "^0.1.4",
+ "readable-stream": "1 || 2"
+ }
+ },
+ "fs.realpath": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
+ "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
+ "dev": true
+ },
+ "fsevents": {
+ "version": "1.2.9",
+ "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.9.tgz",
+ "integrity": "sha512-oeyj2H3EjjonWcFjD5NvZNE9Rqe4UW+nQBU2HNeKw0koVLEFIhtyETyAakeAM3de7Z/SW5kcA+fZUait9EApnw==",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "nan": "^2.12.1",
+ "node-pre-gyp": "^0.12.0"
+ },
+ "dependencies": {
+ "abbrev": {
+ "version": "1.1.1",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "ansi-regex": {
+ "version": "2.1.1",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "aproba": {
+ "version": "1.2.0",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "are-we-there-yet": {
+ "version": "1.1.5",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "delegates": "^1.0.0",
+ "readable-stream": "^2.0.6"
+ }
+ },
+ "balanced-match": {
+ "version": "1.0.0",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "brace-expansion": {
+ "version": "1.1.11",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "balanced-match": "^1.0.0",
+ "concat-map": "0.0.1"
+ }
+ },
+ "chownr": {
+ "version": "1.1.1",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "code-point-at": {
+ "version": "1.1.0",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "concat-map": {
+ "version": "0.0.1",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "console-control-strings": {
+ "version": "1.1.0",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "core-util-is": {
+ "version": "1.0.2",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "debug": {
+ "version": "4.1.1",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "ms": "^2.1.1"
+ }
+ },
+ "deep-extend": {
+ "version": "0.6.0",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "delegates": {
+ "version": "1.0.0",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "detect-libc": {
+ "version": "1.0.3",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "fs-minipass": {
+ "version": "1.2.5",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "minipass": "^2.2.1"
+ }
+ },
+ "fs.realpath": {
+ "version": "1.0.0",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "gauge": {
+ "version": "2.7.4",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "aproba": "^1.0.3",
+ "console-control-strings": "^1.0.0",
+ "has-unicode": "^2.0.0",
+ "object-assign": "^4.1.0",
+ "signal-exit": "^3.0.0",
+ "string-width": "^1.0.1",
+ "strip-ansi": "^3.0.1",
+ "wide-align": "^1.1.0"
+ }
+ },
+ "glob": {
+ "version": "7.1.3",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "fs.realpath": "^1.0.0",
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "^3.0.4",
+ "once": "^1.3.0",
+ "path-is-absolute": "^1.0.0"
+ }
+ },
+ "has-unicode": {
+ "version": "2.0.1",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "iconv-lite": {
+ "version": "0.4.24",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "safer-buffer": ">= 2.1.2 < 3"
+ }
+ },
+ "ignore-walk": {
+ "version": "3.0.1",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "minimatch": "^3.0.4"
+ }
+ },
+ "inflight": {
+ "version": "1.0.6",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "once": "^1.3.0",
+ "wrappy": "1"
+ }
+ },
+ "inherits": {
+ "version": "2.0.3",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "ini": {
+ "version": "1.3.5",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "is-fullwidth-code-point": {
+ "version": "1.0.0",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "number-is-nan": "^1.0.0"
+ }
+ },
+ "isarray": {
+ "version": "1.0.0",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "minimatch": {
+ "version": "3.0.4",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "brace-expansion": "^1.1.7"
+ }
+ },
+ "minimist": {
+ "version": "0.0.8",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "minipass": {
+ "version": "2.3.5",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "safe-buffer": "^5.1.2",
+ "yallist": "^3.0.0"
+ }
+ },
+ "minizlib": {
+ "version": "1.2.1",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "minipass": "^2.2.1"
+ }
+ },
+ "mkdirp": {
+ "version": "0.5.1",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "minimist": "0.0.8"
+ }
+ },
+ "ms": {
+ "version": "2.1.1",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "needle": {
+ "version": "2.3.0",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "debug": "^4.1.0",
+ "iconv-lite": "^0.4.4",
+ "sax": "^1.2.4"
+ }
+ },
+ "node-pre-gyp": {
+ "version": "0.12.0",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "detect-libc": "^1.0.2",
+ "mkdirp": "^0.5.1",
+ "needle": "^2.2.1",
+ "nopt": "^4.0.1",
+ "npm-packlist": "^1.1.6",
+ "npmlog": "^4.0.2",
+ "rc": "^1.2.7",
+ "rimraf": "^2.6.1",
+ "semver": "^5.3.0",
+ "tar": "^4"
+ }
+ },
+ "nopt": {
+ "version": "4.0.1",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "abbrev": "1",
+ "osenv": "^0.1.4"
+ }
+ },
+ "npm-bundled": {
+ "version": "1.0.6",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "npm-packlist": {
+ "version": "1.4.1",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "ignore-walk": "^3.0.1",
+ "npm-bundled": "^1.0.1"
+ }
+ },
+ "npmlog": {
+ "version": "4.1.2",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "are-we-there-yet": "~1.1.2",
+ "console-control-strings": "~1.1.0",
+ "gauge": "~2.7.3",
+ "set-blocking": "~2.0.0"
+ }
+ },
+ "number-is-nan": {
+ "version": "1.0.1",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "object-assign": {
+ "version": "4.1.1",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "once": {
+ "version": "1.4.0",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "wrappy": "1"
+ }
+ },
+ "os-homedir": {
+ "version": "1.0.2",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "os-tmpdir": {
+ "version": "1.0.2",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "osenv": {
+ "version": "0.1.5",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "os-homedir": "^1.0.0",
+ "os-tmpdir": "^1.0.0"
+ }
+ },
+ "path-is-absolute": {
+ "version": "1.0.1",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "process-nextick-args": {
+ "version": "2.0.0",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "rc": {
+ "version": "1.2.8",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "deep-extend": "^0.6.0",
+ "ini": "~1.3.0",
+ "minimist": "^1.2.0",
+ "strip-json-comments": "~2.0.1"
+ },
+ "dependencies": {
+ "minimist": {
+ "version": "1.2.0",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ }
+ }
+ },
+ "readable-stream": {
+ "version": "2.3.6",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.3",
+ "isarray": "~1.0.0",
+ "process-nextick-args": "~2.0.0",
+ "safe-buffer": "~5.1.1",
+ "string_decoder": "~1.1.1",
+ "util-deprecate": "~1.0.1"
+ }
+ },
+ "rimraf": {
+ "version": "2.6.3",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "glob": "^7.1.3"
+ }
+ },
+ "safe-buffer": {
+ "version": "5.1.2",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "safer-buffer": {
+ "version": "2.1.2",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "sax": {
+ "version": "1.2.4",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "semver": {
+ "version": "5.7.0",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "set-blocking": {
+ "version": "2.0.0",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "signal-exit": {
+ "version": "3.0.2",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "string-width": {
+ "version": "1.0.2",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "code-point-at": "^1.0.0",
+ "is-fullwidth-code-point": "^1.0.0",
+ "strip-ansi": "^3.0.0"
+ }
+ },
+ "string_decoder": {
+ "version": "1.1.1",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "safe-buffer": "~5.1.0"
+ }
+ },
+ "strip-ansi": {
+ "version": "3.0.1",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "ansi-regex": "^2.0.0"
+ }
+ },
+ "strip-json-comments": {
+ "version": "2.0.1",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "tar": {
+ "version": "4.4.8",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "chownr": "^1.1.1",
+ "fs-minipass": "^1.2.5",
+ "minipass": "^2.3.4",
+ "minizlib": "^1.1.1",
+ "mkdirp": "^0.5.0",
+ "safe-buffer": "^5.1.2",
+ "yallist": "^3.0.2"
+ }
+ },
+ "util-deprecate": {
+ "version": "1.0.2",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "wide-align": {
+ "version": "1.1.3",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "string-width": "^1.0.2 || 2"
+ }
+ },
+ "wrappy": {
+ "version": "1.0.2",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "yallist": {
+ "version": "3.0.3",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ }
+ }
+ },
+ "function-bind": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
+ "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
+ "dev": true
+ },
+ "get-caller-file": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
+ "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==",
+ "dev": true
+ },
+ "get-stream": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz",
+ "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==",
+ "dev": true,
+ "requires": {
+ "pump": "^3.0.0"
+ }
+ },
+ "get-value": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz",
+ "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=",
+ "dev": true
+ },
+ "glob": {
+ "version": "7.1.4",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.4.tgz",
+ "integrity": "sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==",
+ "dev": true,
+ "requires": {
+ "fs.realpath": "^1.0.0",
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "^3.0.4",
+ "once": "^1.3.0",
+ "path-is-absolute": "^1.0.0"
+ }
+ },
+ "glob-parent": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz",
+ "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=",
+ "dev": true,
+ "requires": {
+ "is-glob": "^3.1.0",
+ "path-dirname": "^1.0.0"
+ },
+ "dependencies": {
+ "is-glob": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz",
+ "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=",
+ "dev": true,
+ "requires": {
+ "is-extglob": "^2.1.0"
+ }
+ }
+ }
+ },
+ "global-modules": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz",
+ "integrity": "sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==",
+ "dev": true,
+ "requires": {
+ "global-prefix": "^3.0.0"
+ },
+ "dependencies": {
+ "global-prefix": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz",
+ "integrity": "sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==",
+ "dev": true,
+ "requires": {
+ "ini": "^1.3.5",
+ "kind-of": "^6.0.2",
+ "which": "^1.3.1"
+ }
+ }
+ }
+ },
+ "global-prefix": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz",
+ "integrity": "sha1-2/dDxsFJklk8ZVVoy2btMsASLr4=",
+ "dev": true,
+ "requires": {
+ "expand-tilde": "^2.0.2",
+ "homedir-polyfill": "^1.0.1",
+ "ini": "^1.3.4",
+ "is-windows": "^1.0.1",
+ "which": "^1.2.14"
+ }
+ },
+ "graceful-fs": {
+ "version": "4.2.1",
+ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.1.tgz",
+ "integrity": "sha512-b9usnbDGnD928gJB3LrCmxoibr3VE4U2SMo5PBuBnokWyDADTqDPXg4YpwKF1trpH+UbGp7QLicO3+aWEy0+mw==",
+ "dev": true
+ },
+ "has": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
+ "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
+ "dev": true,
+ "requires": {
+ "function-bind": "^1.1.1"
+ }
+ },
+ "has-flag": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
+ "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
+ "dev": true
+ },
+ "has-symbols": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.0.tgz",
+ "integrity": "sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=",
+ "dev": true
+ },
+ "has-value": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz",
+ "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=",
+ "dev": true,
+ "requires": {
+ "get-value": "^2.0.6",
+ "has-values": "^1.0.0",
+ "isobject": "^3.0.0"
+ }
+ },
+ "has-values": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz",
+ "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=",
+ "dev": true,
+ "requires": {
+ "is-number": "^3.0.0",
+ "kind-of": "^4.0.0"
+ },
+ "dependencies": {
+ "is-number": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
+ "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
+ "dev": true,
+ "requires": {
+ "kind-of": "^3.0.2"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "dev": true,
+ "requires": {
+ "is-buffer": "^1.1.5"
+ }
+ }
+ }
+ },
+ "kind-of": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz",
+ "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=",
+ "dev": true,
+ "requires": {
+ "is-buffer": "^1.1.5"
+ }
+ }
+ }
+ },
+ "hash-base": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz",
+ "integrity": "sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=",
+ "dev": true,
+ "requires": {
+ "inherits": "^2.0.1",
+ "safe-buffer": "^5.0.1"
+ }
+ },
+ "hash.js": {
+ "version": "1.1.7",
+ "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz",
+ "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==",
+ "dev": true,
+ "requires": {
+ "inherits": "^2.0.3",
+ "minimalistic-assert": "^1.0.1"
+ }
+ },
+ "hmac-drbg": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz",
+ "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=",
+ "dev": true,
+ "requires": {
+ "hash.js": "^1.0.3",
+ "minimalistic-assert": "^1.0.0",
+ "minimalistic-crypto-utils": "^1.0.1"
+ }
+ },
+ "homedir-polyfill": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz",
+ "integrity": "sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==",
+ "dev": true,
+ "requires": {
+ "parse-passwd": "^1.0.0"
+ }
+ },
+ "hosted-git-info": {
+ "version": "2.8.2",
+ "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.2.tgz",
+ "integrity": "sha512-CyjlXII6LMsPMyUzxpTt8fzh5QwzGqPmQXgY/Jyf4Zfp27t/FvfhwoE/8laaMUcMy816CkWF20I7NeQhwwY88w==",
+ "dev": true,
+ "requires": {
+ "lru-cache": "^5.1.1"
+ }
+ },
+ "https-browserify": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz",
+ "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=",
+ "dev": true
+ },
+ "ieee754": {
+ "version": "1.1.13",
+ "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz",
+ "integrity": "sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==",
+ "dev": true
+ },
+ "iferr": {
+ "version": "0.1.5",
+ "resolved": "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz",
+ "integrity": "sha1-xg7taebY/bazEEofy8ocGS3FtQE=",
+ "dev": true
+ },
+ "import-local": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/import-local/-/import-local-2.0.0.tgz",
+ "integrity": "sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ==",
+ "dev": true,
+ "requires": {
+ "pkg-dir": "^3.0.0",
+ "resolve-cwd": "^2.0.0"
+ }
+ },
+ "imurmurhash": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
+ "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=",
+ "dev": true
+ },
+ "infer-owner": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz",
+ "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==",
+ "dev": true
+ },
+ "inflight": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
+ "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
+ "dev": true,
+ "requires": {
+ "once": "^1.3.0",
+ "wrappy": "1"
+ }
+ },
+ "inherits": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
+ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
+ "dev": true
+ },
+ "ini": {
+ "version": "1.3.5",
+ "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz",
+ "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==",
+ "dev": true
+ },
+ "interpret": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.2.0.tgz",
+ "integrity": "sha512-mT34yGKMNceBQUoVn7iCDKDntA7SC6gycMAWzGx1z/CMCTV7b2AAtXlo3nRyHZ1FelRkQbQjprHSYGwzLtkVbw==",
+ "dev": true
+ },
+ "invert-kv": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz",
+ "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==",
+ "dev": true
+ },
+ "is-accessor-descriptor": {
+ "version": "0.1.6",
+ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz",
+ "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=",
+ "dev": true,
+ "requires": {
+ "kind-of": "^3.0.2"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "dev": true,
+ "requires": {
+ "is-buffer": "^1.1.5"
+ }
+ }
+ }
+ },
+ "is-arrayish": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
+ "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=",
+ "dev": true
+ },
+ "is-binary-path": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz",
+ "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=",
+ "dev": true,
+ "requires": {
+ "binary-extensions": "^1.0.0"
+ }
+ },
+ "is-buffer": {
+ "version": "1.1.6",
+ "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
+ "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==",
+ "dev": true
+ },
+ "is-callable": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.4.tgz",
+ "integrity": "sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA==",
+ "dev": true
+ },
+ "is-data-descriptor": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz",
+ "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=",
+ "dev": true,
+ "requires": {
+ "kind-of": "^3.0.2"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "dev": true,
+ "requires": {
+ "is-buffer": "^1.1.5"
+ }
+ }
+ }
+ },
+ "is-date-object": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz",
+ "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=",
+ "dev": true
+ },
+ "is-descriptor": {
+ "version": "0.1.6",
+ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz",
+ "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==",
+ "dev": true,
+ "requires": {
+ "is-accessor-descriptor": "^0.1.6",
+ "is-data-descriptor": "^0.1.4",
+ "kind-of": "^5.0.0"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz",
+ "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==",
+ "dev": true
+ }
+ }
+ },
+ "is-extendable": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz",
+ "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=",
+ "dev": true
+ },
+ "is-extglob": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
+ "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=",
+ "dev": true
+ },
+ "is-fullwidth-code-point": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
+ "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
+ "dev": true
+ },
+ "is-glob": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz",
+ "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==",
+ "dev": true,
+ "requires": {
+ "is-extglob": "^2.1.1"
+ }
+ },
+ "is-number": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
+ "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
+ "dev": true
+ },
+ "is-plain-object": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz",
+ "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==",
+ "dev": true,
+ "requires": {
+ "isobject": "^3.0.1"
+ }
+ },
+ "is-regex": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz",
+ "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=",
+ "dev": true,
+ "requires": {
+ "has": "^1.0.1"
+ }
+ },
+ "is-stream": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz",
+ "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=",
+ "dev": true
+ },
+ "is-symbol": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.2.tgz",
+ "integrity": "sha512-HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw==",
+ "dev": true,
+ "requires": {
+ "has-symbols": "^1.0.0"
+ }
+ },
+ "is-windows": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz",
+ "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==",
+ "dev": true
+ },
+ "is-wsl": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz",
+ "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=",
+ "dev": true
+ },
+ "isarray": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
+ "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
+ "dev": true
+ },
+ "isexe": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
+ "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=",
+ "dev": true
+ },
+ "isobject": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
+ "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=",
+ "dev": true
+ },
+ "json-parse-better-errors": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz",
+ "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==",
+ "dev": true
+ },
+ "json-schema-traverse": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
+ "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
+ "dev": true
+ },
+ "json5": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz",
+ "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==",
+ "dev": true,
+ "requires": {
+ "minimist": "^1.2.0"
+ }
+ },
+ "jsonify": {
+ "version": "0.0.0",
+ "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz",
+ "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=",
+ "dev": true
+ },
+ "kind-of": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz",
+ "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==",
+ "dev": true
+ },
+ "lcid": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz",
+ "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==",
+ "dev": true,
+ "requires": {
+ "invert-kv": "^2.0.0"
+ }
+ },
+ "load-json-file": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz",
+ "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "^4.1.2",
+ "parse-json": "^4.0.0",
+ "pify": "^3.0.0",
+ "strip-bom": "^3.0.0"
+ }
+ },
+ "loader-runner": {
+ "version": "2.4.0",
+ "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.4.0.tgz",
+ "integrity": "sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw==",
+ "dev": true
+ },
+ "loader-utils": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.2.3.tgz",
+ "integrity": "sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA==",
+ "dev": true,
+ "requires": {
+ "big.js": "^5.2.2",
+ "emojis-list": "^2.0.0",
+ "json5": "^1.0.1"
+ }
+ },
+ "locate-path": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz",
+ "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
+ "dev": true,
+ "requires": {
+ "p-locate": "^3.0.0",
+ "path-exists": "^3.0.0"
+ }
+ },
+ "lru-cache": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz",
+ "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==",
+ "dev": true,
+ "requires": {
+ "yallist": "^3.0.2"
+ }
+ },
+ "make-dir": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz",
+ "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==",
+ "dev": true,
+ "requires": {
+ "pify": "^4.0.1",
+ "semver": "^5.6.0"
+ },
+ "dependencies": {
+ "pify": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz",
+ "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==",
+ "dev": true
+ }
+ }
+ },
+ "mamacro": {
+ "version": "0.0.3",
+ "resolved": "https://registry.npmjs.org/mamacro/-/mamacro-0.0.3.tgz",
+ "integrity": "sha512-qMEwh+UujcQ+kbz3T6V+wAmO2U8veoq2w+3wY8MquqwVA3jChfwY+Tk52GZKDfACEPjuZ7r2oJLejwpt8jtwTA==",
+ "dev": true
+ },
+ "map-age-cleaner": {
+ "version": "0.1.3",
+ "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz",
+ "integrity": "sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==",
+ "dev": true,
+ "requires": {
+ "p-defer": "^1.0.0"
+ }
+ },
+ "map-cache": {
+ "version": "0.2.2",
+ "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz",
+ "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=",
+ "dev": true
+ },
+ "map-visit": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz",
+ "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=",
+ "dev": true,
+ "requires": {
+ "object-visit": "^1.0.0"
+ }
+ },
+ "md5.js": {
+ "version": "1.3.5",
+ "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz",
+ "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==",
+ "dev": true,
+ "requires": {
+ "hash-base": "^3.0.0",
+ "inherits": "^2.0.1",
+ "safe-buffer": "^5.1.2"
+ }
+ },
+ "mem": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/mem/-/mem-4.3.0.tgz",
+ "integrity": "sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w==",
+ "dev": true,
+ "requires": {
+ "map-age-cleaner": "^0.1.1",
+ "mimic-fn": "^2.0.0",
+ "p-is-promise": "^2.0.0"
+ }
+ },
+ "memory-fs": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz",
+ "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=",
+ "dev": true,
+ "requires": {
+ "errno": "^0.1.3",
+ "readable-stream": "^2.0.1"
+ }
+ },
+ "memorystream": {
+ "version": "0.3.1",
+ "resolved": "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz",
+ "integrity": "sha1-htcJCzDORV1j+64S3aUaR93K+bI=",
+ "dev": true
+ },
+ "micromatch": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz",
+ "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==",
+ "dev": true,
+ "requires": {
+ "braces": "^3.0.1",
+ "picomatch": "^2.0.5"
+ }
+ },
+ "miller-rabin": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz",
+ "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==",
+ "dev": true,
+ "requires": {
+ "bn.js": "^4.0.0",
+ "brorand": "^1.0.1"
+ }
+ },
+ "mime-db": {
+ "version": "1.40.0",
+ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.40.0.tgz",
+ "integrity": "sha512-jYdeOMPy9vnxEqFRRo6ZvTZ8d9oPb+k18PKoYNYUe2stVEBPPwsln/qWzdbmaIvnhZ9v2P+CuecK+fpUfsV2mA==",
+ "dev": true
+ },
+ "mime-types": {
+ "version": "2.1.24",
+ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.24.tgz",
+ "integrity": "sha512-WaFHS3MCl5fapm3oLxU4eYDw77IQM2ACcxQ9RIxfaC3ooc6PFuBMGZZsYpvoXS5D5QTWPieo1jjLdAm3TBP3cQ==",
+ "dev": true,
+ "requires": {
+ "mime-db": "1.40.0"
+ }
+ },
+ "mimic-fn": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz",
+ "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==",
+ "dev": true
+ },
+ "minimalistic-assert": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz",
+ "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==",
+ "dev": true
+ },
+ "minimalistic-crypto-utils": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz",
+ "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=",
+ "dev": true
+ },
+ "minimatch": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
+ "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
+ "dev": true,
+ "requires": {
+ "brace-expansion": "^1.1.7"
+ }
+ },
+ "minimist": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
+ "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=",
+ "dev": true
+ },
+ "mississippi": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-3.0.0.tgz",
+ "integrity": "sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA==",
+ "dev": true,
+ "requires": {
+ "concat-stream": "^1.5.0",
+ "duplexify": "^3.4.2",
+ "end-of-stream": "^1.1.0",
+ "flush-write-stream": "^1.0.0",
+ "from2": "^2.1.0",
+ "parallel-transform": "^1.1.0",
+ "pump": "^3.0.0",
+ "pumpify": "^1.3.3",
+ "stream-each": "^1.1.0",
+ "through2": "^2.0.0"
+ }
+ },
+ "mixin-deep": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz",
+ "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==",
+ "dev": true,
+ "requires": {
+ "for-in": "^1.0.2",
+ "is-extendable": "^1.0.1"
+ },
+ "dependencies": {
+ "is-extendable": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
+ "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
+ "dev": true,
+ "requires": {
+ "is-plain-object": "^2.0.4"
+ }
+ }
+ }
+ },
+ "mkdirp": {
+ "version": "0.5.1",
+ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz",
+ "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=",
+ "dev": true,
+ "requires": {
+ "minimist": "0.0.8"
+ },
+ "dependencies": {
+ "minimist": {
+ "version": "0.0.8",
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz",
+ "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=",
+ "dev": true
+ }
+ }
+ },
+ "move-concurrently": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz",
+ "integrity": "sha1-viwAX9oy4LKa8fBdfEszIUxwH5I=",
+ "dev": true,
+ "requires": {
+ "aproba": "^1.1.1",
+ "copy-concurrently": "^1.0.0",
+ "fs-write-stream-atomic": "^1.0.8",
+ "mkdirp": "^0.5.1",
+ "rimraf": "^2.5.4",
+ "run-queue": "^1.0.3"
+ }
+ },
+ "ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
+ "dev": true
+ },
+ "nan": {
+ "version": "2.14.0",
+ "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.0.tgz",
+ "integrity": "sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg==",
+ "dev": true,
+ "optional": true
+ },
+ "nanomatch": {
+ "version": "1.2.13",
+ "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz",
+ "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==",
+ "dev": true,
+ "requires": {
+ "arr-diff": "^4.0.0",
+ "array-unique": "^0.3.2",
+ "define-property": "^2.0.2",
+ "extend-shallow": "^3.0.2",
+ "fragment-cache": "^0.2.1",
+ "is-windows": "^1.0.2",
+ "kind-of": "^6.0.2",
+ "object.pick": "^1.3.0",
+ "regex-not": "^1.0.0",
+ "snapdragon": "^0.8.1",
+ "to-regex": "^3.0.1"
+ }
+ },
+ "negotiator": {
+ "version": "0.6.2",
+ "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz",
+ "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==",
+ "dev": true
+ },
+ "neo-async": {
+ "version": "2.6.1",
+ "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.1.tgz",
+ "integrity": "sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw==",
+ "dev": true
+ },
+ "nice-try": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz",
+ "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==",
+ "dev": true
+ },
+ "node-libs-browser": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.1.tgz",
+ "integrity": "sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q==",
+ "dev": true,
+ "requires": {
+ "assert": "^1.1.1",
+ "browserify-zlib": "^0.2.0",
+ "buffer": "^4.3.0",
+ "console-browserify": "^1.1.0",
+ "constants-browserify": "^1.0.0",
+ "crypto-browserify": "^3.11.0",
+ "domain-browser": "^1.1.1",
+ "events": "^3.0.0",
+ "https-browserify": "^1.0.0",
+ "os-browserify": "^0.3.0",
+ "path-browserify": "0.0.1",
+ "process": "^0.11.10",
+ "punycode": "^1.2.4",
+ "querystring-es3": "^0.2.0",
+ "readable-stream": "^2.3.3",
+ "stream-browserify": "^2.0.1",
+ "stream-http": "^2.7.2",
+ "string_decoder": "^1.0.0",
+ "timers-browserify": "^2.0.4",
+ "tty-browserify": "0.0.0",
+ "url": "^0.11.0",
+ "util": "^0.11.0",
+ "vm-browserify": "^1.0.1"
+ },
+ "dependencies": {
+ "punycode": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz",
+ "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=",
+ "dev": true
+ }
+ }
+ },
+ "normalize-package-data": {
+ "version": "2.5.0",
+ "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz",
+ "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==",
+ "dev": true,
+ "requires": {
+ "hosted-git-info": "^2.1.4",
+ "resolve": "^1.10.0",
+ "semver": "2 || 3 || 4 || 5",
+ "validate-npm-package-license": "^3.0.1"
+ }
+ },
+ "normalize-path": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
+ "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
+ "dev": true
+ },
+ "npm-run-all": {
+ "version": "4.1.5",
+ "resolved": "https://registry.npmjs.org/npm-run-all/-/npm-run-all-4.1.5.tgz",
+ "integrity": "sha512-Oo82gJDAVcaMdi3nuoKFavkIHBRVqQ1qvMb+9LHk/cF4P6B2m8aP04hGf7oL6wZ9BuGwX1onlLhpuoofSyoQDQ==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^3.2.1",
+ "chalk": "^2.4.1",
+ "cross-spawn": "^6.0.5",
+ "memorystream": "^0.3.1",
+ "minimatch": "^3.0.4",
+ "pidtree": "^0.3.0",
+ "read-pkg": "^3.0.0",
+ "shell-quote": "^1.6.1",
+ "string.prototype.padend": "^3.0.0"
+ }
+ },
+ "npm-run-path": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz",
+ "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=",
+ "dev": true,
+ "requires": {
+ "path-key": "^2.0.0"
+ }
+ },
+ "object-assign": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
+ "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=",
+ "dev": true
+ },
+ "object-copy": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz",
+ "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=",
+ "dev": true,
+ "requires": {
+ "copy-descriptor": "^0.1.0",
+ "define-property": "^0.2.5",
+ "kind-of": "^3.0.3"
+ },
+ "dependencies": {
+ "define-property": {
+ "version": "0.2.5",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
+ "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
+ "dev": true,
+ "requires": {
+ "is-descriptor": "^0.1.0"
+ }
+ },
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "dev": true,
+ "requires": {
+ "is-buffer": "^1.1.5"
+ }
+ }
+ }
+ },
+ "object-keys": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz",
+ "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==",
+ "dev": true
+ },
+ "object-visit": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz",
+ "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=",
+ "dev": true,
+ "requires": {
+ "isobject": "^3.0.0"
+ }
+ },
+ "object.pick": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz",
+ "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=",
+ "dev": true,
+ "requires": {
+ "isobject": "^3.0.1"
+ }
+ },
+ "on-headers": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz",
+ "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==",
+ "dev": true
+ },
+ "once": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
+ "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
+ "dev": true,
+ "requires": {
+ "wrappy": "1"
+ }
+ },
+ "os-browserify": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz",
+ "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=",
+ "dev": true
+ },
+ "os-locale": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz",
+ "integrity": "sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==",
+ "dev": true,
+ "requires": {
+ "execa": "^1.0.0",
+ "lcid": "^2.0.0",
+ "mem": "^4.0.0"
+ }
+ },
+ "p-defer": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz",
+ "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=",
+ "dev": true
+ },
+ "p-finally": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz",
+ "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=",
+ "dev": true
+ },
+ "p-is-promise": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-2.1.0.tgz",
+ "integrity": "sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg==",
+ "dev": true
+ },
+ "p-limit": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.0.tgz",
+ "integrity": "sha512-pZbTJpoUsCzV48Mc9Nh51VbwO0X9cuPFE8gYwx9BTCt9SF8/b7Zljd2fVgOxhIF/HDTKgpVzs+GPhyKfjLLFRQ==",
+ "dev": true,
+ "requires": {
+ "p-try": "^2.0.0"
+ }
+ },
+ "p-locate": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz",
+ "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==",
+ "dev": true,
+ "requires": {
+ "p-limit": "^2.0.0"
+ }
+ },
+ "p-try": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz",
+ "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==",
+ "dev": true
+ },
+ "pako": {
+ "version": "1.0.10",
+ "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.10.tgz",
+ "integrity": "sha512-0DTvPVU3ed8+HNXOu5Bs+o//Mbdj9VNQMUOe9oKCwh8l0GNwpTDMKCWbRjgtD291AWnkAgkqA/LOnQS8AmS1tw==",
+ "dev": true
+ },
+ "parallel-transform": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.1.0.tgz",
+ "integrity": "sha1-1BDwZbBdojCB/NEPKIVMKb2jOwY=",
+ "dev": true,
+ "requires": {
+ "cyclist": "~0.2.2",
+ "inherits": "^2.0.3",
+ "readable-stream": "^2.1.5"
+ }
+ },
+ "parse-asn1": {
+ "version": "5.1.4",
+ "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.4.tgz",
+ "integrity": "sha512-Qs5duJcuvNExRfFZ99HDD3z4mAi3r9Wl/FOjEOijlxwCZs7E7mW2vjTpgQ4J8LpTF8x5v+1Vn5UQFejmWT11aw==",
+ "dev": true,
+ "requires": {
+ "asn1.js": "^4.0.0",
+ "browserify-aes": "^1.0.0",
+ "create-hash": "^1.1.0",
+ "evp_bytestokey": "^1.0.0",
+ "pbkdf2": "^3.0.3",
+ "safe-buffer": "^5.1.1"
+ }
+ },
+ "parse-json": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz",
+ "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=",
+ "dev": true,
+ "requires": {
+ "error-ex": "^1.3.1",
+ "json-parse-better-errors": "^1.0.1"
+ }
+ },
+ "parse-passwd": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz",
+ "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=",
+ "dev": true
+ },
+ "pascalcase": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz",
+ "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=",
+ "dev": true
+ },
+ "path-browserify": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.1.tgz",
+ "integrity": "sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==",
+ "dev": true
+ },
+ "path-dirname": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz",
+ "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=",
+ "dev": true
+ },
+ "path-exists": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
+ "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=",
+ "dev": true
+ },
+ "path-is-absolute": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
+ "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
+ "dev": true
+ },
+ "path-is-inside": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz",
+ "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=",
+ "dev": true
+ },
+ "path-key": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz",
+ "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=",
+ "dev": true
+ },
+ "path-parse": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz",
+ "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==",
+ "dev": true
+ },
+ "path-to-regexp": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-2.2.1.tgz",
+ "integrity": "sha512-gu9bD6Ta5bwGrrU8muHzVOBFFREpp2iRkVfhBJahwJ6p6Xw20SjT0MxLnwkjOibQmGSYhiUnf2FLe7k+jcFmGQ==",
+ "dev": true
+ },
+ "path-type": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz",
+ "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==",
+ "dev": true,
+ "requires": {
+ "pify": "^3.0.0"
+ }
+ },
+ "pbkdf2": {
+ "version": "3.0.17",
+ "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.17.tgz",
+ "integrity": "sha512-U/il5MsrZp7mGg3mSQfn742na2T+1/vHDCG5/iTI3X9MKUuYUZVLQhyRsg06mCgDBTd57TxzgZt7P+fYfjRLtA==",
+ "dev": true,
+ "requires": {
+ "create-hash": "^1.1.2",
+ "create-hmac": "^1.1.4",
+ "ripemd160": "^2.0.1",
+ "safe-buffer": "^5.0.1",
+ "sha.js": "^2.4.8"
+ }
+ },
+ "picomatch": {
+ "version": "2.0.7",
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.0.7.tgz",
+ "integrity": "sha512-oLHIdio3tZ0qH76NybpeneBhYVj0QFTfXEFTc/B3zKQspYfYYkWYgFsmzo+4kvId/bQRcNkVeguI3y+CD22BtA==",
+ "dev": true
+ },
+ "pidtree": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/pidtree/-/pidtree-0.3.0.tgz",
+ "integrity": "sha512-9CT4NFlDcosssyg8KVFltgokyKZIFjoBxw8CTGy+5F38Y1eQWrt8tRayiUOXE+zVKQnYu5BR8JjCtvK3BcnBhg==",
+ "dev": true
+ },
+ "pify": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
+ "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=",
+ "dev": true
+ },
+ "pkg-dir": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz",
+ "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==",
+ "dev": true,
+ "requires": {
+ "find-up": "^3.0.0"
+ }
+ },
+ "posix-character-classes": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz",
+ "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=",
+ "dev": true
+ },
+ "process": {
+ "version": "0.11.10",
+ "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz",
+ "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=",
+ "dev": true
+ },
+ "process-nextick-args": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
+ "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==",
+ "dev": true
+ },
+ "promise-inflight": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz",
+ "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=",
+ "dev": true
+ },
+ "prr": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz",
+ "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=",
+ "dev": true
+ },
+ "pseudomap": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz",
+ "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=",
+ "dev": true
+ },
+ "public-encrypt": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz",
+ "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==",
+ "dev": true,
+ "requires": {
+ "bn.js": "^4.1.0",
+ "browserify-rsa": "^4.0.0",
+ "create-hash": "^1.1.0",
+ "parse-asn1": "^5.0.0",
+ "randombytes": "^2.0.1",
+ "safe-buffer": "^5.1.2"
+ }
+ },
+ "pump": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz",
+ "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==",
+ "dev": true,
+ "requires": {
+ "end-of-stream": "^1.1.0",
+ "once": "^1.3.1"
+ }
+ },
+ "pumpify": {
+ "version": "1.5.1",
+ "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz",
+ "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==",
+ "dev": true,
+ "requires": {
+ "duplexify": "^3.6.0",
+ "inherits": "^2.0.3",
+ "pump": "^2.0.0"
+ },
+ "dependencies": {
+ "pump": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz",
+ "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==",
+ "dev": true,
+ "requires": {
+ "end-of-stream": "^1.1.0",
+ "once": "^1.3.1"
+ }
+ }
+ }
+ },
+ "punycode": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
+ "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==",
+ "dev": true
+ },
+ "querystring": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz",
+ "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=",
+ "dev": true
+ },
+ "querystring-es3": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz",
+ "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=",
+ "dev": true
+ },
+ "randombytes": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz",
+ "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==",
+ "dev": true,
+ "requires": {
+ "safe-buffer": "^5.1.0"
+ }
+ },
+ "randomfill": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz",
+ "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==",
+ "dev": true,
+ "requires": {
+ "randombytes": "^2.0.5",
+ "safe-buffer": "^5.1.0"
+ }
+ },
+ "range-parser": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz",
+ "integrity": "sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4=",
+ "dev": true
+ },
+ "rc": {
+ "version": "1.2.8",
+ "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz",
+ "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==",
+ "dev": true,
+ "requires": {
+ "deep-extend": "^0.6.0",
+ "ini": "~1.3.0",
+ "minimist": "^1.2.0",
+ "strip-json-comments": "~2.0.1"
+ }
+ },
+ "read-pkg": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz",
+ "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=",
+ "dev": true,
+ "requires": {
+ "load-json-file": "^4.0.0",
+ "normalize-package-data": "^2.3.2",
+ "path-type": "^3.0.0"
+ }
+ },
+ "readable-stream": {
+ "version": "2.3.6",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
+ "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
+ "dev": true,
+ "requires": {
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.3",
+ "isarray": "~1.0.0",
+ "process-nextick-args": "~2.0.0",
+ "safe-buffer": "~5.1.1",
+ "string_decoder": "~1.1.1",
+ "util-deprecate": "~1.0.1"
+ }
+ },
+ "readdirp": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz",
+ "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "^4.1.11",
+ "micromatch": "^3.1.10",
+ "readable-stream": "^2.0.2"
+ },
+ "dependencies": {
+ "braces": {
+ "version": "2.3.2",
+ "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz",
+ "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==",
+ "dev": true,
+ "requires": {
+ "arr-flatten": "^1.1.0",
+ "array-unique": "^0.3.2",
+ "extend-shallow": "^2.0.1",
+ "fill-range": "^4.0.0",
+ "isobject": "^3.0.1",
+ "repeat-element": "^1.1.2",
+ "snapdragon": "^0.8.1",
+ "snapdragon-node": "^2.0.1",
+ "split-string": "^3.0.2",
+ "to-regex": "^3.0.1"
+ },
+ "dependencies": {
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "dev": true,
+ "requires": {
+ "is-extendable": "^0.1.0"
+ }
+ }
+ }
+ },
+ "fill-range": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz",
+ "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=",
+ "dev": true,
+ "requires": {
+ "extend-shallow": "^2.0.1",
+ "is-number": "^3.0.0",
+ "repeat-string": "^1.6.1",
+ "to-regex-range": "^2.1.0"
+ },
+ "dependencies": {
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "dev": true,
+ "requires": {
+ "is-extendable": "^0.1.0"
+ }
+ }
+ }
+ },
+ "is-number": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
+ "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
+ "dev": true,
+ "requires": {
+ "kind-of": "^3.0.2"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "dev": true,
+ "requires": {
+ "is-buffer": "^1.1.5"
+ }
+ }
+ }
+ },
+ "micromatch": {
+ "version": "3.1.10",
+ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz",
+ "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==",
+ "dev": true,
+ "requires": {
+ "arr-diff": "^4.0.0",
+ "array-unique": "^0.3.2",
+ "braces": "^2.3.1",
+ "define-property": "^2.0.2",
+ "extend-shallow": "^3.0.2",
+ "extglob": "^2.0.4",
+ "fragment-cache": "^0.2.1",
+ "kind-of": "^6.0.2",
+ "nanomatch": "^1.2.9",
+ "object.pick": "^1.3.0",
+ "regex-not": "^1.0.0",
+ "snapdragon": "^0.8.1",
+ "to-regex": "^3.0.2"
+ }
+ },
+ "to-regex-range": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz",
+ "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=",
+ "dev": true,
+ "requires": {
+ "is-number": "^3.0.0",
+ "repeat-string": "^1.6.1"
+ }
+ }
+ }
+ },
+ "regex-not": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz",
+ "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==",
+ "dev": true,
+ "requires": {
+ "extend-shallow": "^3.0.2",
+ "safe-regex": "^1.1.0"
+ }
+ },
+ "registry-auth-token": {
+ "version": "3.3.2",
+ "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-3.3.2.tgz",
+ "integrity": "sha512-JL39c60XlzCVgNrO+qq68FoNb56w/m7JYvGR2jT5iR1xBrUA3Mfx5Twk5rqTThPmQKMWydGmq8oFtDlxfrmxnQ==",
+ "dev": true,
+ "requires": {
+ "rc": "^1.1.6",
+ "safe-buffer": "^5.0.1"
+ }
+ },
+ "registry-url": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-3.1.0.tgz",
+ "integrity": "sha1-PU74cPc93h138M+aOBQyRE4XSUI=",
+ "dev": true,
+ "requires": {
+ "rc": "^1.0.1"
+ }
+ },
+ "remove-trailing-separator": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz",
+ "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=",
+ "dev": true
+ },
+ "repeat-element": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz",
+ "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==",
+ "dev": true
+ },
+ "repeat-string": {
+ "version": "1.6.1",
+ "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz",
+ "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=",
+ "dev": true
+ },
+ "require-directory": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
+ "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=",
+ "dev": true
+ },
+ "require-main-filename": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz",
+ "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==",
+ "dev": true
+ },
+ "resolve": {
+ "version": "1.12.0",
+ "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.12.0.tgz",
+ "integrity": "sha512-B/dOmuoAik5bKcD6s6nXDCjzUKnaDvdkRyAk6rsmsKLipWj4797iothd7jmmUhWTfinVMU+wc56rYKsit2Qy4w==",
+ "dev": true,
+ "requires": {
+ "path-parse": "^1.0.6"
+ }
+ },
+ "resolve-cwd": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-2.0.0.tgz",
+ "integrity": "sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=",
+ "dev": true,
+ "requires": {
+ "resolve-from": "^3.0.0"
+ }
+ },
+ "resolve-dir": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz",
+ "integrity": "sha1-eaQGRMNivoLybv/nOcm7U4IEb0M=",
+ "dev": true,
+ "requires": {
+ "expand-tilde": "^2.0.0",
+ "global-modules": "^1.0.0"
+ },
+ "dependencies": {
+ "global-modules": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz",
+ "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==",
+ "dev": true,
+ "requires": {
+ "global-prefix": "^1.0.1",
+ "is-windows": "^1.0.1",
+ "resolve-dir": "^1.0.0"
+ }
+ }
+ }
+ },
+ "resolve-from": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz",
+ "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=",
+ "dev": true
+ },
+ "resolve-url": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz",
+ "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=",
+ "dev": true
+ },
+ "ret": {
+ "version": "0.1.15",
+ "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz",
+ "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==",
+ "dev": true
+ },
+ "rimraf": {
+ "version": "2.6.3",
+ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz",
+ "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==",
+ "dev": true,
+ "requires": {
+ "glob": "^7.1.3"
+ }
+ },
+ "ripemd160": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz",
+ "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==",
+ "dev": true,
+ "requires": {
+ "hash-base": "^3.0.0",
+ "inherits": "^2.0.1"
+ }
+ },
+ "run-queue": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz",
+ "integrity": "sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec=",
+ "dev": true,
+ "requires": {
+ "aproba": "^1.1.1"
+ }
+ },
+ "safe-buffer": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
+ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
+ "dev": true
+ },
+ "safe-regex": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz",
+ "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=",
+ "dev": true,
+ "requires": {
+ "ret": "~0.1.10"
+ }
+ },
+ "schema-utils": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz",
+ "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==",
+ "dev": true,
+ "requires": {
+ "ajv": "^6.1.0",
+ "ajv-errors": "^1.0.0",
+ "ajv-keywords": "^3.1.0"
+ }
+ },
+ "semver": {
+ "version": "5.7.0",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz",
+ "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==",
+ "dev": true
+ },
+ "serialize-javascript": {
+ "version": "1.7.0",
+ "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-1.7.0.tgz",
+ "integrity": "sha512-ke8UG8ulpFOxO8f8gRYabHQe/ZntKlcig2Mp+8+URDP1D8vJZ0KUt7LYo07q25Z/+JVSgpr/cui9PIp5H6/+nA==",
+ "dev": true
+ },
+ "serve": {
+ "version": "11.1.0",
+ "resolved": "https://registry.npmjs.org/serve/-/serve-11.1.0.tgz",
+ "integrity": "sha512-+4wpDtOSS+4ZLyDWMxThutA3iOTawX2+yDovOI8cjOUOmemyvNlHyFAsezBlSgbZKTYChI3tzA1Mh0z6XZ62qA==",
+ "dev": true,
+ "requires": {
+ "@zeit/schemas": "2.6.0",
+ "ajv": "6.5.3",
+ "arg": "2.0.0",
+ "boxen": "1.3.0",
+ "chalk": "2.4.1",
+ "clipboardy": "1.2.3",
+ "compression": "1.7.3",
+ "serve-handler": "6.1.0",
+ "update-check": "1.5.2"
+ },
+ "dependencies": {
+ "ajv": {
+ "version": "6.5.3",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.5.3.tgz",
+ "integrity": "sha512-LqZ9wY+fx3UMiiPd741yB2pj3hhil+hQc8taf4o2QGRFpWgZ2V5C8HA165DY9sS3fJwsk7uT7ZlFEyC3Ig3lLg==",
+ "dev": true,
+ "requires": {
+ "fast-deep-equal": "^2.0.1",
+ "fast-json-stable-stringify": "^2.0.0",
+ "json-schema-traverse": "^0.4.1",
+ "uri-js": "^4.2.2"
+ }
+ },
+ "chalk": {
+ "version": "2.4.1",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz",
+ "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^3.2.1",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^5.3.0"
+ }
+ }
+ }
+ },
+ "serve-handler": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/serve-handler/-/serve-handler-6.1.0.tgz",
+ "integrity": "sha512-63N075Tn3PsFYcu0NVV7tb367UbiW3gnC+/50ohL4oqOhAG6bmbaWqiRcXQgbzqc0ALBjSAzg7VTfa0Qw4E3hA==",
+ "dev": true,
+ "requires": {
+ "bytes": "3.0.0",
+ "content-disposition": "0.5.2",
+ "fast-url-parser": "1.1.3",
+ "mime-types": "2.1.18",
+ "minimatch": "3.0.4",
+ "path-is-inside": "1.0.2",
+ "path-to-regexp": "2.2.1",
+ "range-parser": "1.2.0"
+ },
+ "dependencies": {
+ "mime-db": {
+ "version": "1.33.0",
+ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.33.0.tgz",
+ "integrity": "sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ==",
+ "dev": true
+ },
+ "mime-types": {
+ "version": "2.1.18",
+ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.18.tgz",
+ "integrity": "sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==",
+ "dev": true,
+ "requires": {
+ "mime-db": "~1.33.0"
+ }
+ }
+ }
+ },
+ "set-blocking": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz",
+ "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=",
+ "dev": true
+ },
+ "set-value": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz",
+ "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==",
+ "dev": true,
+ "requires": {
+ "extend-shallow": "^2.0.1",
+ "is-extendable": "^0.1.1",
+ "is-plain-object": "^2.0.3",
+ "split-string": "^3.0.1"
+ },
+ "dependencies": {
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "dev": true,
+ "requires": {
+ "is-extendable": "^0.1.0"
+ }
+ }
+ }
+ },
+ "setimmediate": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz",
+ "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=",
+ "dev": true
+ },
+ "sha.js": {
+ "version": "2.4.11",
+ "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz",
+ "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==",
+ "dev": true,
+ "requires": {
+ "inherits": "^2.0.1",
+ "safe-buffer": "^5.0.1"
+ }
+ },
+ "shebang-command": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz",
+ "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=",
+ "dev": true,
+ "requires": {
+ "shebang-regex": "^1.0.0"
+ }
+ },
+ "shebang-regex": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz",
+ "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=",
+ "dev": true
+ },
+ "shell-quote": {
+ "version": "1.6.1",
+ "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.6.1.tgz",
+ "integrity": "sha1-9HgZSczkAmlxJ0MOo7PFR29IF2c=",
+ "dev": true,
+ "requires": {
+ "array-filter": "~0.0.0",
+ "array-map": "~0.0.0",
+ "array-reduce": "~0.0.0",
+ "jsonify": "~0.0.0"
+ }
+ },
+ "signal-exit": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz",
+ "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=",
+ "dev": true
+ },
+ "snapdragon": {
+ "version": "0.8.2",
+ "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz",
+ "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==",
+ "dev": true,
+ "requires": {
+ "base": "^0.11.1",
+ "debug": "^2.2.0",
+ "define-property": "^0.2.5",
+ "extend-shallow": "^2.0.1",
+ "map-cache": "^0.2.2",
+ "source-map": "^0.5.6",
+ "source-map-resolve": "^0.5.0",
+ "use": "^3.1.0"
+ },
+ "dependencies": {
+ "define-property": {
+ "version": "0.2.5",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
+ "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
+ "dev": true,
+ "requires": {
+ "is-descriptor": "^0.1.0"
+ }
+ },
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "dev": true,
+ "requires": {
+ "is-extendable": "^0.1.0"
+ }
+ }
+ }
+ },
+ "snapdragon-node": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz",
+ "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==",
+ "dev": true,
+ "requires": {
+ "define-property": "^1.0.0",
+ "isobject": "^3.0.0",
+ "snapdragon-util": "^3.0.1"
+ },
+ "dependencies": {
+ "define-property": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
+ "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
+ "dev": true,
+ "requires": {
+ "is-descriptor": "^1.0.0"
+ }
+ },
+ "is-accessor-descriptor": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
+ "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
+ "dev": true,
+ "requires": {
+ "kind-of": "^6.0.0"
+ }
+ },
+ "is-data-descriptor": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
+ "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
+ "dev": true,
+ "requires": {
+ "kind-of": "^6.0.0"
+ }
+ },
+ "is-descriptor": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
+ "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
+ "dev": true,
+ "requires": {
+ "is-accessor-descriptor": "^1.0.0",
+ "is-data-descriptor": "^1.0.0",
+ "kind-of": "^6.0.2"
+ }
+ }
+ }
+ },
+ "snapdragon-util": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz",
+ "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==",
+ "dev": true,
+ "requires": {
+ "kind-of": "^3.2.0"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "dev": true,
+ "requires": {
+ "is-buffer": "^1.1.5"
+ }
+ }
+ }
+ },
+ "source-list-map": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz",
+ "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==",
+ "dev": true
+ },
+ "source-map": {
+ "version": "0.5.7",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
+ "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
+ "dev": true
+ },
+ "source-map-resolve": {
+ "version": "0.5.2",
+ "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.2.tgz",
+ "integrity": "sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA==",
+ "dev": true,
+ "requires": {
+ "atob": "^2.1.1",
+ "decode-uri-component": "^0.2.0",
+ "resolve-url": "^0.2.1",
+ "source-map-url": "^0.4.0",
+ "urix": "^0.1.0"
+ }
+ },
+ "source-map-support": {
+ "version": "0.5.13",
+ "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz",
+ "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==",
+ "dev": true,
+ "requires": {
+ "buffer-from": "^1.0.0",
+ "source-map": "^0.6.0"
+ },
+ "dependencies": {
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+ "dev": true
+ }
+ }
+ },
+ "source-map-url": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz",
+ "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=",
+ "dev": true
+ },
+ "spdx-correct": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.0.tgz",
+ "integrity": "sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q==",
+ "dev": true,
+ "requires": {
+ "spdx-expression-parse": "^3.0.0",
+ "spdx-license-ids": "^3.0.0"
+ }
+ },
+ "spdx-exceptions": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz",
+ "integrity": "sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA==",
+ "dev": true
+ },
+ "spdx-expression-parse": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz",
+ "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==",
+ "dev": true,
+ "requires": {
+ "spdx-exceptions": "^2.1.0",
+ "spdx-license-ids": "^3.0.0"
+ }
+ },
+ "spdx-license-ids": {
+ "version": "3.0.5",
+ "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz",
+ "integrity": "sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q==",
+ "dev": true
+ },
+ "split-string": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz",
+ "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==",
+ "dev": true,
+ "requires": {
+ "extend-shallow": "^3.0.0"
+ }
+ },
+ "ssri": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.1.tgz",
+ "integrity": "sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA==",
+ "dev": true,
+ "requires": {
+ "figgy-pudding": "^3.5.1"
+ }
+ },
+ "static-extend": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz",
+ "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=",
+ "dev": true,
+ "requires": {
+ "define-property": "^0.2.5",
+ "object-copy": "^0.1.0"
+ },
+ "dependencies": {
+ "define-property": {
+ "version": "0.2.5",
+ "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
+ "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
+ "dev": true,
+ "requires": {
+ "is-descriptor": "^0.1.0"
+ }
+ }
+ }
+ },
+ "stream-browserify": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz",
+ "integrity": "sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==",
+ "dev": true,
+ "requires": {
+ "inherits": "~2.0.1",
+ "readable-stream": "^2.0.2"
+ }
+ },
+ "stream-each": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/stream-each/-/stream-each-1.2.3.tgz",
+ "integrity": "sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw==",
+ "dev": true,
+ "requires": {
+ "end-of-stream": "^1.1.0",
+ "stream-shift": "^1.0.0"
+ }
+ },
+ "stream-http": {
+ "version": "2.8.3",
+ "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz",
+ "integrity": "sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==",
+ "dev": true,
+ "requires": {
+ "builtin-status-codes": "^3.0.0",
+ "inherits": "^2.0.1",
+ "readable-stream": "^2.3.6",
+ "to-arraybuffer": "^1.0.0",
+ "xtend": "^4.0.0"
+ }
+ },
+ "stream-shift": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.0.tgz",
+ "integrity": "sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI=",
+ "dev": true
+ },
+ "string-width": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz",
+ "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==",
+ "dev": true,
+ "requires": {
+ "emoji-regex": "^7.0.1",
+ "is-fullwidth-code-point": "^2.0.0",
+ "strip-ansi": "^5.1.0"
+ }
+ },
+ "string.prototype.padend": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/string.prototype.padend/-/string.prototype.padend-3.0.0.tgz",
+ "integrity": "sha1-86rvfBcZ8XDF6rHDK/eA2W4h8vA=",
+ "dev": true,
+ "requires": {
+ "define-properties": "^1.1.2",
+ "es-abstract": "^1.4.3",
+ "function-bind": "^1.0.2"
+ }
+ },
+ "string_decoder": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
+ "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+ "dev": true,
+ "requires": {
+ "safe-buffer": "~5.1.0"
+ }
+ },
+ "strip-ansi": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
+ "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "^4.1.0"
+ }
+ },
+ "strip-bom": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz",
+ "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=",
+ "dev": true
+ },
+ "strip-eof": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz",
+ "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=",
+ "dev": true
+ },
+ "strip-json-comments": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz",
+ "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=",
+ "dev": true
+ },
+ "supports-color": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "dev": true,
+ "requires": {
+ "has-flag": "^3.0.0"
+ }
+ },
+ "tapable": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz",
+ "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==",
+ "dev": true
+ },
+ "term-size": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/term-size/-/term-size-1.2.0.tgz",
+ "integrity": "sha1-RYuDiH8oj8Vtb/+/rSYuJmOO+mk=",
+ "dev": true,
+ "requires": {
+ "execa": "^0.7.0"
+ },
+ "dependencies": {
+ "cross-spawn": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz",
+ "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=",
+ "dev": true,
+ "requires": {
+ "lru-cache": "^4.0.1",
+ "shebang-command": "^1.2.0",
+ "which": "^1.2.9"
+ }
+ },
+ "execa": {
+ "version": "0.7.0",
+ "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz",
+ "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=",
+ "dev": true,
+ "requires": {
+ "cross-spawn": "^5.0.1",
+ "get-stream": "^3.0.0",
+ "is-stream": "^1.1.0",
+ "npm-run-path": "^2.0.0",
+ "p-finally": "^1.0.0",
+ "signal-exit": "^3.0.0",
+ "strip-eof": "^1.0.0"
+ }
+ },
+ "get-stream": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz",
+ "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=",
+ "dev": true
+ },
+ "lru-cache": {
+ "version": "4.1.5",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz",
+ "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==",
+ "dev": true,
+ "requires": {
+ "pseudomap": "^1.0.2",
+ "yallist": "^2.1.2"
+ }
+ },
+ "yallist": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz",
+ "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=",
+ "dev": true
+ }
+ }
+ },
+ "terser": {
+ "version": "4.1.3",
+ "resolved": "https://registry.npmjs.org/terser/-/terser-4.1.3.tgz",
+ "integrity": "sha512-on13d+cnpn5bMouZu+J8tPYQecsdRJCJuxFJ+FVoPBoLJgk5bCBkp+Uen2hWyi0KIUm6eDarnlAlH+KgIx/PuQ==",
+ "dev": true,
+ "requires": {
+ "commander": "^2.20.0",
+ "source-map": "~0.6.1",
+ "source-map-support": "~0.5.12"
+ },
+ "dependencies": {
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+ "dev": true
+ }
+ }
+ },
+ "terser-webpack-plugin": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.4.1.tgz",
+ "integrity": "sha512-ZXmmfiwtCLfz8WKZyYUuuHf3dMYEjg8NrjHMb0JqHVHVOSkzp3cW2/XG1fP3tRhqEqSzMwzzRQGtAPbs4Cncxg==",
+ "dev": true,
+ "requires": {
+ "cacache": "^12.0.2",
+ "find-cache-dir": "^2.1.0",
+ "is-wsl": "^1.1.0",
+ "schema-utils": "^1.0.0",
+ "serialize-javascript": "^1.7.0",
+ "source-map": "^0.6.1",
+ "terser": "^4.1.2",
+ "webpack-sources": "^1.4.0",
+ "worker-farm": "^1.7.0"
+ },
+ "dependencies": {
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+ "dev": true
+ }
+ }
+ },
+ "through2": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz",
+ "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==",
+ "dev": true,
+ "requires": {
+ "readable-stream": "~2.3.6",
+ "xtend": "~4.0.1"
+ }
+ },
+ "timers-browserify": {
+ "version": "2.0.10",
+ "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.10.tgz",
+ "integrity": "sha512-YvC1SV1XdOUaL6gx5CoGroT3Gu49pK9+TZ38ErPldOWW4j49GI1HKs9DV+KGq/w6y+LZ72W1c8cKz2vzY+qpzg==",
+ "dev": true,
+ "requires": {
+ "setimmediate": "^1.0.4"
+ }
+ },
+ "to-arraybuffer": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz",
+ "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=",
+ "dev": true
+ },
+ "to-object-path": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz",
+ "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=",
+ "dev": true,
+ "requires": {
+ "kind-of": "^3.0.2"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "dev": true,
+ "requires": {
+ "is-buffer": "^1.1.5"
+ }
+ }
+ }
+ },
+ "to-regex": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz",
+ "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==",
+ "dev": true,
+ "requires": {
+ "define-property": "^2.0.2",
+ "extend-shallow": "^3.0.2",
+ "regex-not": "^1.0.2",
+ "safe-regex": "^1.1.0"
+ }
+ },
+ "to-regex-range": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
+ "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
+ "dev": true,
+ "requires": {
+ "is-number": "^7.0.0"
+ }
+ },
+ "ts-loader": {
+ "version": "6.0.4",
+ "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-6.0.4.tgz",
+ "integrity": "sha512-p2zJYe7OtwR+49kv4gs7v4dMrfYD1IPpOtqiSPCbe8oR+4zEBtdHwzM7A7M91F+suReqgzZrlClk4LRSSp882g==",
+ "dev": true,
+ "requires": {
+ "chalk": "^2.3.0",
+ "enhanced-resolve": "^4.0.0",
+ "loader-utils": "^1.0.2",
+ "micromatch": "^4.0.0",
+ "semver": "^6.0.0"
+ },
+ "dependencies": {
+ "semver": {
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
+ "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
+ "dev": true
+ }
+ }
+ },
+ "tslib": {
+ "version": "1.10.0",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.10.0.tgz",
+ "integrity": "sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ==",
+ "dev": true
+ },
+ "tty-browserify": {
+ "version": "0.0.0",
+ "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz",
+ "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=",
+ "dev": true
+ },
+ "typedarray": {
+ "version": "0.0.6",
+ "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz",
+ "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=",
+ "dev": true
+ },
+ "typescript": {
+ "version": "3.5.3",
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.5.3.tgz",
+ "integrity": "sha512-ACzBtm/PhXBDId6a6sDJfroT2pOWt/oOnk4/dElG5G33ZL776N3Y6/6bKZJBFpd+b05F3Ct9qDjMeJmRWtE2/g==",
+ "dev": true
+ },
+ "union-value": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz",
+ "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==",
+ "dev": true,
+ "requires": {
+ "arr-union": "^3.1.0",
+ "get-value": "^2.0.6",
+ "is-extendable": "^0.1.1",
+ "set-value": "^2.0.1"
+ }
+ },
+ "unique-filename": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz",
+ "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==",
+ "dev": true,
+ "requires": {
+ "unique-slug": "^2.0.0"
+ }
+ },
+ "unique-slug": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz",
+ "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==",
+ "dev": true,
+ "requires": {
+ "imurmurhash": "^0.1.4"
+ }
+ },
+ "unset-value": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz",
+ "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=",
+ "dev": true,
+ "requires": {
+ "has-value": "^0.3.1",
+ "isobject": "^3.0.0"
+ },
+ "dependencies": {
+ "has-value": {
+ "version": "0.3.1",
+ "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz",
+ "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=",
+ "dev": true,
+ "requires": {
+ "get-value": "^2.0.3",
+ "has-values": "^0.1.4",
+ "isobject": "^2.0.0"
+ },
+ "dependencies": {
+ "isobject": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz",
+ "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=",
+ "dev": true,
+ "requires": {
+ "isarray": "1.0.0"
+ }
+ }
+ }
+ },
+ "has-values": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz",
+ "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=",
+ "dev": true
+ }
+ }
+ },
+ "upath": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/upath/-/upath-1.1.2.tgz",
+ "integrity": "sha512-kXpym8nmDmlCBr7nKdIx8P2jNBa+pBpIUFRnKJ4dr8htyYGJFokkr2ZvERRtUN+9SY+JqXouNgUPtv6JQva/2Q==",
+ "dev": true
+ },
+ "update-check": {
+ "version": "1.5.2",
+ "resolved": "https://registry.npmjs.org/update-check/-/update-check-1.5.2.tgz",
+ "integrity": "sha512-1TrmYLuLj/5ZovwUS7fFd1jMH3NnFDN1y1A8dboedIDt7zs/zJMo6TwwlhYKkSeEwzleeiSBV5/3c9ufAQWDaQ==",
+ "dev": true,
+ "requires": {
+ "registry-auth-token": "3.3.2",
+ "registry-url": "3.1.0"
+ }
+ },
+ "uri-js": {
+ "version": "4.2.2",
+ "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz",
+ "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==",
+ "dev": true,
+ "requires": {
+ "punycode": "^2.1.0"
+ }
+ },
+ "urix": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz",
+ "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=",
+ "dev": true
+ },
+ "url": {
+ "version": "0.11.0",
+ "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz",
+ "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=",
+ "dev": true,
+ "requires": {
+ "punycode": "1.3.2",
+ "querystring": "0.2.0"
+ },
+ "dependencies": {
+ "punycode": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz",
+ "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=",
+ "dev": true
+ }
+ }
+ },
+ "use": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz",
+ "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==",
+ "dev": true
+ },
+ "util": {
+ "version": "0.11.1",
+ "resolved": "https://registry.npmjs.org/util/-/util-0.11.1.tgz",
+ "integrity": "sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==",
+ "dev": true,
+ "requires": {
+ "inherits": "2.0.3"
+ },
+ "dependencies": {
+ "inherits": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
+ "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
+ "dev": true
+ }
+ }
+ },
+ "util-deprecate": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
+ "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=",
+ "dev": true
+ },
+ "v8-compile-cache": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.0.3.tgz",
+ "integrity": "sha512-CNmdbwQMBjwr9Gsmohvm0pbL954tJrNzf6gWL3K+QMQf00PF7ERGrEiLgjuU3mKreLC2MeGhUsNV9ybTbLgd3w==",
+ "dev": true
+ },
+ "validate-npm-package-license": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz",
+ "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==",
+ "dev": true,
+ "requires": {
+ "spdx-correct": "^3.0.0",
+ "spdx-expression-parse": "^3.0.0"
+ }
+ },
+ "vary": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
+ "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=",
+ "dev": true
+ },
+ "vm-browserify": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.0.tgz",
+ "integrity": "sha512-iq+S7vZJE60yejDYM0ek6zg308+UZsdtPExWP9VZoCFCz1zkJoXFnAX7aZfd/ZwrkidzdUZL0C/ryW+JwAiIGw==",
+ "dev": true
+ },
+ "watchpack": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.6.0.tgz",
+ "integrity": "sha512-i6dHe3EyLjMmDlU1/bGQpEw25XSjkJULPuAVKCbNRefQVq48yXKUpwg538F7AZTf9kyr57zj++pQFltUa5H7yA==",
+ "dev": true,
+ "requires": {
+ "chokidar": "^2.0.2",
+ "graceful-fs": "^4.1.2",
+ "neo-async": "^2.5.0"
+ }
+ },
+ "webpack": {
+ "version": "4.39.1",
+ "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.39.1.tgz",
+ "integrity": "sha512-/LAb2TJ2z+eVwisldp3dqTEoNhzp/TLCZlmZm3GGGAlnfIWDgOEE758j/9atklNLfRyhKbZTCOIoPqLJXeBLbQ==",
+ "dev": true,
+ "requires": {
+ "@webassemblyjs/ast": "1.8.5",
+ "@webassemblyjs/helper-module-context": "1.8.5",
+ "@webassemblyjs/wasm-edit": "1.8.5",
+ "@webassemblyjs/wasm-parser": "1.8.5",
+ "acorn": "^6.2.1",
+ "ajv": "^6.10.2",
+ "ajv-keywords": "^3.4.1",
+ "chrome-trace-event": "^1.0.2",
+ "enhanced-resolve": "^4.1.0",
+ "eslint-scope": "^4.0.3",
+ "json-parse-better-errors": "^1.0.2",
+ "loader-runner": "^2.4.0",
+ "loader-utils": "^1.2.3",
+ "memory-fs": "^0.4.1",
+ "micromatch": "^3.1.10",
+ "mkdirp": "^0.5.1",
+ "neo-async": "^2.6.1",
+ "node-libs-browser": "^2.2.1",
+ "schema-utils": "^1.0.0",
+ "tapable": "^1.1.3",
+ "terser-webpack-plugin": "^1.4.1",
+ "watchpack": "^1.6.0",
+ "webpack-sources": "^1.4.1"
+ },
+ "dependencies": {
+ "braces": {
+ "version": "2.3.2",
+ "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz",
+ "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==",
+ "dev": true,
+ "requires": {
+ "arr-flatten": "^1.1.0",
+ "array-unique": "^0.3.2",
+ "extend-shallow": "^2.0.1",
+ "fill-range": "^4.0.0",
+ "isobject": "^3.0.1",
+ "repeat-element": "^1.1.2",
+ "snapdragon": "^0.8.1",
+ "snapdragon-node": "^2.0.1",
+ "split-string": "^3.0.2",
+ "to-regex": "^3.0.1"
+ },
+ "dependencies": {
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "dev": true,
+ "requires": {
+ "is-extendable": "^0.1.0"
+ }
+ }
+ }
+ },
+ "fill-range": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz",
+ "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=",
+ "dev": true,
+ "requires": {
+ "extend-shallow": "^2.0.1",
+ "is-number": "^3.0.0",
+ "repeat-string": "^1.6.1",
+ "to-regex-range": "^2.1.0"
+ },
+ "dependencies": {
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+ "dev": true,
+ "requires": {
+ "is-extendable": "^0.1.0"
+ }
+ }
+ }
+ },
+ "is-number": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
+ "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
+ "dev": true,
+ "requires": {
+ "kind-of": "^3.0.2"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "dev": true,
+ "requires": {
+ "is-buffer": "^1.1.5"
+ }
+ }
+ }
+ },
+ "micromatch": {
+ "version": "3.1.10",
+ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz",
+ "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==",
+ "dev": true,
+ "requires": {
+ "arr-diff": "^4.0.0",
+ "array-unique": "^0.3.2",
+ "braces": "^2.3.1",
+ "define-property": "^2.0.2",
+ "extend-shallow": "^3.0.2",
+ "extglob": "^2.0.4",
+ "fragment-cache": "^0.2.1",
+ "kind-of": "^6.0.2",
+ "nanomatch": "^1.2.9",
+ "object.pick": "^1.3.0",
+ "regex-not": "^1.0.0",
+ "snapdragon": "^0.8.1",
+ "to-regex": "^3.0.2"
+ }
+ },
+ "to-regex-range": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz",
+ "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=",
+ "dev": true,
+ "requires": {
+ "is-number": "^3.0.0",
+ "repeat-string": "^1.6.1"
+ }
+ }
+ }
+ },
+ "webpack-cli": {
+ "version": "3.3.6",
+ "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-3.3.6.tgz",
+ "integrity": "sha512-0vEa83M7kJtxK/jUhlpZ27WHIOndz5mghWL2O53kiDoA9DIxSKnfqB92LoqEn77cT4f3H2cZm1BMEat/6AZz3A==",
+ "dev": true,
+ "requires": {
+ "chalk": "2.4.2",
+ "cross-spawn": "6.0.5",
+ "enhanced-resolve": "4.1.0",
+ "findup-sync": "3.0.0",
+ "global-modules": "2.0.0",
+ "import-local": "2.0.0",
+ "interpret": "1.2.0",
+ "loader-utils": "1.2.3",
+ "supports-color": "6.1.0",
+ "v8-compile-cache": "2.0.3",
+ "yargs": "13.2.4"
+ },
+ "dependencies": {
+ "supports-color": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz",
+ "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==",
+ "dev": true,
+ "requires": {
+ "has-flag": "^3.0.0"
+ }
+ }
+ }
+ },
+ "webpack-sources": {
+ "version": "1.4.3",
+ "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz",
+ "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==",
+ "dev": true,
+ "requires": {
+ "source-list-map": "^2.0.0",
+ "source-map": "~0.6.1"
+ },
+ "dependencies": {
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+ "dev": true
+ }
+ }
+ },
+ "whatwg-fetch": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.0.0.tgz",
+ "integrity": "sha512-9GSJUgz1D4MfyKU7KRqwOjXCXTqWdFNvEr7eUBYchQiVc744mqK/MzXPNR2WsPkmkOa4ywfg8C2n8h+13Bey1Q=="
+ },
+ "which": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
+ "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
+ "dev": true,
+ "requires": {
+ "isexe": "^2.0.0"
+ }
+ },
+ "which-module": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz",
+ "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=",
+ "dev": true
+ },
+ "widest-line": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-2.0.1.tgz",
+ "integrity": "sha512-Ba5m9/Fa4Xt9eb2ELXt77JxVDV8w7qQrH0zS/TWSJdLyAwQjWoOzpzj5lwVftDz6n/EOu3tNACS84v509qwnJA==",
+ "dev": true,
+ "requires": {
+ "string-width": "^2.1.1"
+ },
+ "dependencies": {
+ "ansi-regex": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
+ "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
+ "dev": true
+ },
+ "string-width": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz",
+ "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
+ "dev": true,
+ "requires": {
+ "is-fullwidth-code-point": "^2.0.0",
+ "strip-ansi": "^4.0.0"
+ }
+ },
+ "strip-ansi": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
+ "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "^3.0.0"
+ }
+ }
+ }
+ },
+ "worker-farm": {
+ "version": "1.7.0",
+ "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.7.0.tgz",
+ "integrity": "sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw==",
+ "dev": true,
+ "requires": {
+ "errno": "~0.1.7"
+ }
+ },
+ "wrap-ansi": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz",
+ "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^3.2.0",
+ "string-width": "^3.0.0",
+ "strip-ansi": "^5.0.0"
+ }
+ },
+ "wrappy": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
+ "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
+ "dev": true
+ },
+ "xtend": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz",
+ "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==",
+ "dev": true
+ },
+ "y18n": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz",
+ "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==",
+ "dev": true
+ },
+ "yallist": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.0.3.tgz",
+ "integrity": "sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A==",
+ "dev": true
+ },
+ "yargs": {
+ "version": "13.2.4",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.2.4.tgz",
+ "integrity": "sha512-HG/DWAJa1PAnHT9JAhNa8AbAv3FPaiLzioSjCcmuXXhP8MlpHO5vwls4g4j6n30Z74GVQj8Xa62dWVx1QCGklg==",
+ "dev": true,
+ "requires": {
+ "cliui": "^5.0.0",
+ "find-up": "^3.0.0",
+ "get-caller-file": "^2.0.1",
+ "os-locale": "^3.1.0",
+ "require-directory": "^2.1.1",
+ "require-main-filename": "^2.0.0",
+ "set-blocking": "^2.0.0",
+ "string-width": "^3.0.0",
+ "which-module": "^2.0.0",
+ "y18n": "^4.0.0",
+ "yargs-parser": "^13.1.0"
+ }
+ },
+ "yargs-parser": {
+ "version": "13.1.1",
+ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.1.tgz",
+ "integrity": "sha512-oVAVsHz6uFrg3XQheFII8ESO2ssAf9luWuAd6Wexsu4F3OtIW0o8IribPXYrD4WC24LWtPrJlGy87y5udK+dxQ==",
+ "dev": true,
+ "requires": {
+ "camelcase": "^5.0.0",
+ "decamelize": "^1.2.0"
+ }
+ }
+ }
+}
diff --git a/package.json b/package.json
index 3032beb..345cc46 100644
--- a/package.json
+++ b/package.json
@@ -5,15 +5,17 @@
"build-sample": "npx webpack --config sample.webpack.config.js",
"watch-sample": "npx webpack --watch --config sample.webpack.config.js",
"build-all": "npm-run-all build-framework build-sample",
- "watch-all": "npm-run-all watch-framework watch-sample"
+ "watch-all": "npm-run-all watch-framework watch-sample",
+ "serve": "serve"
},
"devDependencies": {
- "npm-run-all": "^4.1.3",
- "ts-loader": "^4.4.2",
- "typescript": "^3.0.1",
- "webpack": "^4.16.5",
- "webpack-cli": "^3.1.0",
- "glob": "^7.1.2"
+ "glob": "^7.1.4",
+ "npm-run-all": "^4.1.5",
+ "serve": "^11.1.0",
+ "ts-loader": "^6.0.4",
+ "typescript": "^3.5.3",
+ "webpack": "^4.39.1",
+ "webpack-cli": "^3.3.6"
},
"dependencies": {
"whatwg-fetch": "^3.0.0"