diff --git a/.editorconfig b/.editorconfig
new file mode 100644
index 0000000..2a046b7
--- /dev/null
+++ b/.editorconfig
@@ -0,0 +1,17 @@
+# Editor settings for any editor or IDE.
+# References at https://editorconfig.org/.
+
+root = true
+
+# Editor settings for every file.
+[*]
+ charset = utf-8
+ end_of_line = lf
+ indent_size = 2
+ indent_style = space
+ insert_final_newline = true
+ trim_trailing_whitespace = true
+
+# Editor settings for TypeScript and JavaScript files.
+[*.{ts,js}]
+ indent_style = tab
diff --git a/.gitattributes b/.gitattributes
index 412eeda..49e3350 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -1,5 +1,5 @@
# Auto detect text files and perform LF normalization
-* text=auto
+* text=auto eol=lf
# Custom for Visual Studio
*.cs diff=csharp
diff --git a/.gitignore b/.gitignore
index ba18f2a..649c577 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,199 +1,200 @@
-## Ignore Visual Studio temporary files, build results, and
-## files generated by popular Visual Studio add-ons.
-
-# User-specific files
-*.suo
-*.user
-*.sln.docstates
-
-# Build results
-[Dd]ebug/
-[Dd]ebugPublic/
-[Rr]elease/
-[Rr]eleases/
-x64/
-x86/
-build/
-bld/
-[Oo]bj/
-
-# Roslyn cache directories
-*.ide/
-
-# MSTest test Results
-[Tt]est[Rr]esult*/
-[Bb]uild[Ll]og.*
-
-#NUNIT
-*.VisualState.xml
-TestResult.xml
-
-# Build Results of an ATL Project
-[Dd]ebugPS/
-[Rr]eleasePS/
-dlldata.c
-
-*_i.c
-*_p.c
-*_i.h
-*.ilk
-*.meta
-*.obj
-*.pch
-*.pdb
-*.pgc
-*.pgd
-*.rsp
-*.sbr
-*.tlb
-*.tli
-*.tlh
-*.tmp
-*.tmp_proj
-*.log
-*.vspscc
-*.vssscc
-.builds
-*.pidb
-*.svclog
-*.scc
-
-# Chutzpah Test files
-_Chutzpah*
-
-# Visual C++ cache files
-ipch/
-*.aps
-*.ncb
-*.opensdf
-*.sdf
-*.cachefile
-
-# Visual Studio profiler
-*.psess
-*.vsp
-*.vspx
-
-# TFS 2012 Local Workspace
-$tf/
-
-# Guidance Automation Toolkit
-*.gpState
-
-# ReSharper is a .NET coding add-in
-_ReSharper*/
-*.[Rr]e[Ss]harper
-*.DotSettings.user
-
-# JustCode is a .NET coding addin-in
-.JustCode
-
-# TeamCity is a build add-in
-_TeamCity*
-
-# DotCover is a Code Coverage Tool
-*.dotCover
-
-# NCrunch
-_NCrunch_*
-.*crunch*.local.xml
-
-# MightyMoose
-*.mm.*
-AutoTest.Net/
-
-# Web workbench (sass)
-.sass-cache/
-
-# Installshield output folder
-[Ee]xpress/
-
-# DocProject is a documentation generator add-in
-DocProject/buildhelp/
-DocProject/Help/*.HxT
-DocProject/Help/*.HxC
-DocProject/Help/*.hhc
-DocProject/Help/*.hhk
-DocProject/Help/*.hhp
-DocProject/Help/Html2
-DocProject/Help/html
-
-# Click-Once directory
-publish/
-
-# Publish Web Output
-*.[Pp]ublish.xml
-*.azurePubxml
-# TODO: Comment the next line if you want to checkin your web deploy settings
-# but database connection strings (with potential passwords) will be unencrypted
-*.pubxml
-*.publishproj
-
-# NuGet Packages
-*.nupkg
-# The packages folder can be ignored because of Package Restore
-**/packages/*
-# except build/, which is used as an MSBuild target.
-!**/packages/build/
-# If using the old MSBuild-Integrated Package Restore, uncomment this:
-#!**/packages/repositories.config
-
-# Windows Azure Build Output
-csx/
-*.build.csdef
-
-# Windows Store app package directory
-AppPackages/
-
-# Others
-sql/
-*.Cache
-ClientBin/
-[Ss]tyle[Cc]op.*
-~$*
-*~
-*.dbmdl
-*.dbproj.schemaview
-*.pfx
-*.publishsettings
-node_modules/
-
-# RIA/Silverlight projects
-Generated_Code/
-
-# Backup & report files from converting an old project file
-# to a newer Visual Studio version. Backup files are not needed,
-# because we have git ;-)
-_UpgradeReport_Files/
-Backup*/
-UpgradeLog*.XML
-UpgradeLog*.htm
-
-# SQL Server files
-*.mdf
-*.ldf
-
-# Business Intelligence projects
-*.rdl.data
-*.bim.layout
-*.bim_*.settings
-
-# Microsoft Fakes
-FakesAssemblies/
-
-# =========================
-# Operating System Files
-# =========================
-
-# OSX
-# =========================
-
+## Ignore Visual Studio temporary files, build results, and
+## files generated by popular Visual Studio add-ons.
+
+# User-specific files
+*.suo
+*.user
+*.sln.docstates
+
+# Build results
+[Dd]ebug/
+[Dd]ebugPublic/
+[Rr]elease/
+[Rr]eleases/
+x64/
+x86/
+build/
+bld/
+[Oo]bj/
+
+# Roslyn cache directories
+*.ide/
+
+# MSTest test Results
+[Tt]est[Rr]esult*/
+[Bb]uild[Ll]og.*
+
+#NUNIT
+*.VisualState.xml
+TestResult.xml
+
+# Build Results of an ATL Project
+[Dd]ebugPS/
+[Rr]eleasePS/
+dlldata.c
+
+*_i.c
+*_p.c
+*_i.h
+*.ilk
+*.meta
+*.obj
+*.pch
+*.pdb
+*.pgc
+*.pgd
+*.rsp
+*.sbr
+*.tlb
+*.tli
+*.tlh
+*.tmp
+*.tmp_proj
+*.log
+*.vspscc
+*.vssscc
+.builds
+*.pidb
+*.svclog
+*.scc
+
+# Chutzpah Test files
+_Chutzpah*
+
+# Visual C++ cache files
+ipch/
+*.aps
+*.ncb
+*.opensdf
+*.sdf
+*.cachefile
+
+# Visual Studio profiler
+*.psess
+*.vsp
+*.vspx
+
+# TFS 2012 Local Workspace
+$tf/
+
+# Guidance Automation Toolkit
+*.gpState
+
+# ReSharper is a .NET coding add-in
+_ReSharper*/
+*.[Rr]e[Ss]harper
+*.DotSettings.user
+
+# JustCode is a .NET coding addin-in
+.JustCode
+
+# TeamCity is a build add-in
+_TeamCity*
+
+# DotCover is a Code Coverage Tool
+*.dotCover
+
+# NCrunch
+_NCrunch_*
+.*crunch*.local.xml
+
+# MightyMoose
+*.mm.*
+AutoTest.Net/
+
+# Web workbench (sass)
+.sass-cache/
+
+# Installshield output folder
+[Ee]xpress/
+
+# DocProject is a documentation generator add-in
+DocProject/buildhelp/
+DocProject/Help/*.HxT
+DocProject/Help/*.HxC
+DocProject/Help/*.hhc
+DocProject/Help/*.hhk
+DocProject/Help/*.hhp
+DocProject/Help/Html2
+DocProject/Help/html
+
+# Click-Once directory
+publish/
+
+# Publish Web Output
+*.[Pp]ublish.xml
+*.azurePubxml
+# TODO: Comment the next line if you want to checkin your web deploy settings
+# but database connection strings (with potential passwords) will be unencrypted
+*.pubxml
+*.publishproj
+
+# NuGet Packages
+*.nupkg
+# The packages folder can be ignored because of Package Restore
+**/packages/*
+# except build/, which is used as an MSBuild target.
+!**/packages/build/
+# If using the old MSBuild-Integrated Package Restore, uncomment this:
+#!**/packages/repositories.config
+
+# Windows Azure Build Output
+csx/
+*.build.csdef
+
+# Windows Store app package directory
+AppPackages/
+
+# Others
+sql/
+*.Cache
+ClientBin/
+[Ss]tyle[Cc]op.*
+~$*
+*~
+*.dbmdl
+*.dbproj.schemaview
+*.pfx
+*.publishsettings
+node_modules/
+
+# RIA/Silverlight projects
+Generated_Code/
+
+# Backup & report files from converting an old project file
+# to a newer Visual Studio version. Backup files are not needed,
+# because we have git ;-)
+_UpgradeReport_Files/
+Backup*/
+UpgradeLog*.XML
+UpgradeLog*.htm
+
+# SQL Server files
+*.mdf
+*.ldf
+
+# Business Intelligence projects
+*.rdl.data
+*.bim.layout
+*.bim_*.settings
+
+# Microsoft Fakes
+FakesAssemblies/
+
+# =========================
+# Operating System Files
+# =========================
+
+# OSX
+# =========================
+
.DS_Store
.AppleDouble
.LSOverride
# Icon must end with two \r
-Icon
+Icon
+
# Thumbnails
._*
@@ -208,24 +209,25 @@ Icon
Network Trash Folder
Temporary Items
.apdisk
-
-# Windows
-# =========================
-
-# Windows image file caches
-Thumbs.db
-ehthumbs.db
-
-# Folder config file
-Desktop.ini
-
-# Recycle Bin used on file shares
-$RECYCLE.BIN/
-
-# Windows Installer files
-*.cab
-*.msi
-*.msm
-*.msp
-
-Example/*.js
+
+# Windows
+# =========================
+
+# Windows image file caches
+Thumbs.db
+ehthumbs.db
+
+# Folder config file
+Desktop.ini
+
+# Recycle Bin used on file shares
+$RECYCLE.BIN/
+
+# Windows Installer files
+*.cab
+*.msi
+*.msm
+*.msp
+
+# Demo bundled sources.
+demo/dist
diff --git a/.vs/config/applicationhost.config b/.vs/config/applicationhost.config
deleted file mode 100644
index 0981446..0000000
--- a/.vs/config/applicationhost.config
+++ /dev/null
@@ -1,1033 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/3rd/tsm-0.7.d.ts b/3rd/tsm-0.7.d.ts
deleted file mode 100644
index 307b69c..0000000
--- a/3rd/tsm-0.7.d.ts
+++ /dev/null
@@ -1,238 +0,0 @@
-declare var EPSILON: number;
-declare module TSM {
- class vec2 {
- private values;
- public x : number;
- public y : number;
- public xy : number[];
- constructor(values?: number[]);
- public at(index: number): number;
- public reset(): void;
- public copy(dest?: vec2): vec2;
- public negate(dest?: vec2): vec2;
- public equals(vector: vec2, threshold?: number): boolean;
- public length(): number;
- public squaredLength(): number;
- public add(vector: vec2): vec2;
- public subtract(vector: vec2): vec2;
- public multiply(vector: vec2): vec2;
- public divide(vector: vec2): vec2;
- public scale(value: number, dest?: vec2): vec2;
- public normalize(dest?: vec2): vec2;
- public multiplyMat2(matrix: TSM.mat2, dest?: vec2): vec2;
- public multiplyMat3(matrix: TSM.mat3, dest?: vec2): vec2;
- static cross(vector: vec2, vector2: vec2, dest?: TSM.vec3): TSM.vec3;
- static dot(vector: vec2, vector2: vec2): number;
- static distance(vector: vec2, vector2: vec2): number;
- static squaredDistance(vector: vec2, vector2: vec2): number;
- static direction(vector: vec2, vector2: vec2, dest?: vec2): vec2;
- static mix(vector: vec2, vector2: vec2, time: number, dest?: vec2): vec2;
- static sum(vector: vec2, vector2: vec2, dest?: vec2): vec2;
- static difference(vector: vec2, vector2: vec2, dest?: vec2): vec2;
- static product(vector: vec2, vector2: vec2, dest?: vec2): vec2;
- static quotient(vector: vec2, vector2: vec2, dest?: vec2): vec2;
- static zero: vec2;
- }
-}
-declare module TSM {
- class vec3 {
- private values;
- public x : number;
- public y : number;
- public z : number;
- public xy : number[];
- public xyz : number[];
- constructor(values?: number[]);
- public at(index: number): number;
- public reset(): void;
- public copy(dest?: vec3): vec3;
- public negate(dest?: vec3): vec3;
- public equals(vector: vec3, threshold?: number): boolean;
- public length(): number;
- public squaredLength(): number;
- public add(vector: vec3): vec3;
- public subtract(vector: vec3): vec3;
- public multiply(vector: vec3): vec3;
- public divide(vector: vec3): vec3;
- public scale(value: number, dest?: vec3): vec3;
- public normalize(dest?: vec3): vec3;
- public multiplyByMat3(matrix: TSM.mat3, dest?: vec3): vec3;
- public multiplyByQuat(quat: TSM.quat, dest?: vec3): vec3;
- static cross(vector: vec3, vector2: vec3, dest?: vec3): vec3;
- static dot(vector: vec3, vector2: vec3): number;
- static distance(vector: vec3, vector2: vec3): number;
- static squaredDistance(vector: vec3, vector2: vec3): number;
- static direction(vector: vec3, vector2: vec3, dest?: vec3): vec3;
- static mix(vector: vec3, vector2: vec3, time: number, dest?: vec3): vec3;
- static sum(vector: vec3, vector2: vec3, dest?: vec3): vec3;
- static difference(vector: vec3, vector2: vec3, dest?: vec3): vec3;
- static product(vector: vec3, vector2: vec3, dest?: vec3): vec3;
- static quotient(vector: vec3, vector2: vec3, dest?: vec3): vec3;
- public toQuat(dest?: TSM.quat): TSM.quat;
- static zero: vec3;
- static up: vec3;
- static right: vec3;
- static forward: vec3;
- }
-}
-declare module TSM {
- class vec4 {
- private values;
- public x : number;
- public y : number;
- public z : number;
- public w : number;
- public xy : number[];
- public xyz : number[];
- public xyzw : number[];
- public r : number;
- public g : number;
- public b : number;
- public a : number;
- public rg : number[];
- public rgb : number[];
- public rgba : number[];
- constructor(values?: number[]);
- public at(index: number): number;
- public reset(): void;
- public copy(dest?: vec4): vec4;
- public negate(dest?: vec4): vec4;
- public equals(vector: vec4, threshold?: number): boolean;
- public length(): number;
- public squaredLength(): number;
- public add(vector: vec4): vec4;
- public subtract(vector: vec4): vec4;
- public multiply(vector: vec4): vec4;
- public divide(vector: vec4): vec4;
- public scale(value: number, dest?: vec4): vec4;
- public normalize(dest?: vec4): vec4;
- public multiplyMat4(matrix: TSM.mat4, dest?: vec4): vec4;
- static mix(vector: vec4, vector2: vec4, time: number, dest?: vec4): vec4;
- static sum(vector: vec4, vector2: vec4, dest?: vec4): vec4;
- static difference(vector: vec4, vector2: vec4, dest?: vec4): vec4;
- static product(vector: vec4, vector2: vec4, dest?: vec4): vec4;
- static quotient(vector: vec4, vector2: vec4, dest?: vec4): vec4;
- static zero: vec4;
- }
-}
-declare module TSM {
- class mat2 {
- private values;
- constructor(values?: number[]);
- public at(index: number): number;
- public init(values: number[]): mat2;
- public reset(): void;
- public copy(dest?: mat2): mat2;
- public all(): number[];
- public row(index: number): number[];
- public col(index: number): number[];
- public equals(matrix: mat2, threshold?: number): boolean;
- public determinant(): number;
- public setIdentity(): mat2;
- public transpose(): mat2;
- public inverse(): mat2;
- public multiply(matrix: mat2): mat2;
- public rotate(angle: number): mat2;
- public multiplyVec2(vector: TSM.vec2, result?: TSM.vec2): TSM.vec2;
- public scale(vector: TSM.vec2): mat2;
- static product(m1: mat2, m2: mat2, result?: mat2): mat2;
- static identity: mat2;
- }
-}
-declare module TSM {
- class mat3 {
- private values;
- constructor(values?: number[]);
- public at(index: number): number;
- public init(values: number[]): mat3;
- public reset(): void;
- public copy(dest?: mat3): mat3;
- public all(): number[];
- public row(index: number): number[];
- public col(index: number): number[];
- public equals(matrix: mat3, threshold?: number): boolean;
- public determinant(): number;
- public setIdentity(): mat3;
- public transpose(): mat3;
- public inverse(): mat3;
- public multiply(matrix: mat3): mat3;
- public multiplyVec2(vector: TSM.vec2, result?: TSM.vec2): TSM.vec2;
- public multiplyVec3(vector: TSM.vec3, result?: TSM.vec3): TSM.vec3;
- public toMat4(result?: TSM.mat4): TSM.mat4;
- public toQuat(): TSM.quat;
- public rotate(angle: number, axis: TSM.vec3): mat3;
- static product(m1: mat3, m2: mat3, result?: mat3): mat3;
- static identity: mat3;
- }
-}
-declare module TSM {
- class mat4 {
- private values;
- constructor(values?: number[]);
- public at(index: number): number;
- public init(values: number[]): mat4;
- public reset(): void;
- public copy(dest?: mat4): mat4;
- public all(): number[];
- public row(index: number): number[];
- public col(index: number): number[];
- public equals(matrix: mat4, threshold?: number): boolean;
- public determinant(): number;
- public setIdentity(): mat4;
- public transpose(): mat4;
- public inverse(): mat4;
- public multiply(matrix: mat4): mat4;
- public multiplyVec3(vector: TSM.vec3): TSM.vec3;
- public multiplyVec4(vector: TSM.vec4, dest?: TSM.vec4): TSM.vec4;
- public toMat3(): TSM.mat3;
- public toInverseMat3(): TSM.mat3;
- public translate(vector: TSM.vec3): mat4;
- public scale(vector: TSM.vec3): mat4;
- public rotate(angle: number, axis: TSM.vec3): mat4;
- static frustum(left: number, right: number, bottom: number, top: number, near: number, far: number): mat4;
- static perspective(fov: number, aspect: number, near: number, far: number): mat4;
- static orthographic(left: number, right: number, bottom: number, top: number, near: number, far: number): mat4;
- static lookAt(position: TSM.vec3, target: TSM.vec3, up?: TSM.vec3): mat4;
- static product(m1: mat4, m2: mat4, result?: mat4): mat4;
- static identity: mat4;
- }
-}
-declare module TSM {
- class quat {
- private values;
- public x : number;
- public y : number;
- public z : number;
- public w : number;
- public xy : number[];
- public xyz : number[];
- public xyzw : number[];
- constructor(values?: number[]);
- public at(index: number): number;
- public reset(): void;
- public copy(dest?: quat): quat;
- public roll(): number;
- public pitch(): number;
- public yaw(): number;
- public equals(vector: quat, threshold?: number): boolean;
- public setIdentity(): quat;
- public calculateW(): quat;
- static dot(q1: quat, q2: quat): number;
- public inverse(): quat;
- public conjugate(): quat;
- public length(): number;
- public normalize(dest?: quat): quat;
- public add(other: quat): quat;
- public multiply(other: quat): quat;
- public multiplyVec3(vector: TSM.vec3, dest?: TSM.vec3): TSM.vec3;
- public toMat3(dest?: TSM.mat3): TSM.mat3;
- public toMat4(dest?: TSM.mat4): TSM.mat4;
- static sum(q1: quat, q2: quat, dest?: quat): quat;
- static product(q1: quat, q2: quat, dest?: quat): quat;
- static cross(q1: quat, q2: quat, dest?: quat): quat;
- static shortMix(q1: quat, q2: quat, time: number, dest?: quat): quat;
- static mix(q1: quat, q2: quat, time: number, dest?: quat): quat;
- static fromAxis(axis: TSM.vec3, angle: number, dest?: quat): quat;
- static identity: quat;
- }
-}
diff --git a/3rd/tsm-0.7.js b/3rd/tsm-0.7.js
deleted file mode 100644
index a950911..0000000
--- a/3rd/tsm-0.7.js
+++ /dev/null
@@ -1,2884 +0,0 @@
-/**
-* @fileoverview TSM - A TypeScript vector and matrix math library
-* @author Matthias Ferch
-* @version 0.6
-*/
-/*
-* Copyright (c) 2012 Matthias Ferch
-*
-* Project homepage: https://github.com/vexator/TSM
-*
-* This software is provided 'as-is', without any express or implied
-* warranty. In no event will the authors be held liable for any damages
-* arising from the use of this software.
-*
-* Permission is granted to anyone to use this software for any purpose,
-* including commercial applications, and to alter it and redistribute it
-* freely, subject to the following restrictions:
-*
-* 1. The origin of this software must not be misrepresented; you must not
-* claim that you wrote the original software. If you use this software
-* in a product, an acknowledgment in the product documentation would be
-* appreciated but is not required.
-*
-* 2. Altered source versions must be plainly marked as such, and must not
-* be misrepresented as being the original software.
-*
-* 3. This notice may not be removed or altered from any source
-* distribution.
-*/
-var EPSILON = 0.000001;
-/*
-* Copyright (c) 2012 Matthias Ferch
-*
-* Project homepage: https://github.com/vexator/TSM
-*
-* This software is provided 'as-is', without any express or implied
-* warranty. In no event will the authors be held liable for any damages
-* arising from the use of this software.
-*
-* Permission is granted to anyone to use this software for any purpose,
-* including commercial applications, and to alter it and redistribute it
-* freely, subject to the following restrictions:
-*
-* 1. The origin of this software must not be misrepresented; you must not
-* claim that you wrote the original software. If you use this software
-* in a product, an acknowledgment in the product documentation would be
-* appreciated but is not required.
-*
-* 2. Altered source versions must be plainly marked as such, and must not
-* be misrepresented as being the original software.
-*
-* 3. This notice may not be removed or altered from any source
-* distribution.
-*/
-///
-var TSM;
-(function (TSM) {
- var vec2 = (function () {
- function vec2(values) {
- if (typeof values === "undefined") { values = null; }
- this.values = new Float32Array(2);
- if (values) {
- this.xy = values;
- }
- }
- Object.defineProperty(vec2.prototype, "x", {
- get: function () {
- return this.values[0];
- },
- set: function (value) {
- this.values[0] = value;
- },
- enumerable: true,
- configurable: true
- });
-
- Object.defineProperty(vec2.prototype, "y", {
- get: function () {
- return this.values[1];
- },
- set: function (value) {
- this.values[1] = value;
- },
- enumerable: true,
- configurable: true
- });
-
- Object.defineProperty(vec2.prototype, "xy", {
- get: function () {
- return [
- this.values[0],
- this.values[1]
- ];
- },
- set: function (values) {
- this.values[0] = values[0];
- this.values[1] = values[1];
- },
- enumerable: true,
- configurable: true
- });
-
-
-
-
- vec2.prototype.at = function (index) {
- return this.values[index];
- };
-
- vec2.prototype.reset = function () {
- this.x = 0;
- this.y = 0;
- };
-
- vec2.prototype.copy = function (dest) {
- if (typeof dest === "undefined") { dest = null; }
- if (!dest)
- dest = new vec2();
-
- dest.x = this.x;
- dest.y = this.y;
-
- return dest;
- };
-
- vec2.prototype.negate = function (dest) {
- if (typeof dest === "undefined") { dest = null; }
- if (!dest)
- dest = this;
-
- dest.x = -this.x;
- dest.y = -this.y;
-
- return dest;
- };
-
- vec2.prototype.equals = function (vector, threshold) {
- if (typeof threshold === "undefined") { threshold = EPSILON; }
- if (Math.abs(this.x - vector.x) > threshold)
- return false;
-
- if (Math.abs(this.y - vector.y) > threshold)
- return false;
-
- return true;
- };
-
- vec2.prototype.length = function () {
- return Math.sqrt(this.squaredLength());
- };
-
- vec2.prototype.squaredLength = function () {
- var x = this.x, y = this.y;
-
- return (x * x + y * y);
- };
-
- vec2.prototype.add = function (vector) {
- this.x += vector.x;
- this.y += vector.y;
-
- return this;
- };
-
- vec2.prototype.subtract = function (vector) {
- this.x -= vector.x;
- this.y -= vector.y;
-
- return this;
- };
-
- vec2.prototype.multiply = function (vector) {
- this.x *= vector.x;
- this.y *= vector.y;
-
- return this;
- };
-
- vec2.prototype.divide = function (vector) {
- this.x /= vector.x;
- this.y /= vector.y;
-
- return this;
- };
-
- vec2.prototype.scale = function (value, dest) {
- if (typeof dest === "undefined") { dest = null; }
- if (!dest)
- dest = this;
-
- dest.x *= value;
- dest.y *= value;
-
- return dest;
- };
-
- vec2.prototype.normalize = function (dest) {
- if (typeof dest === "undefined") { dest = null; }
- if (!dest)
- dest = this;
-
- var length = this.length();
-
- if (length === 1) {
- return this;
- }
-
- if (length === 0) {
- dest.x = 0;
- dest.y = 0;
-
- return dest;
- }
-
- length = 1.0 / length;
-
- dest.x *= length;
- dest.y *= length;
-
- return dest;
- };
-
- vec2.prototype.multiplyMat2 = function (matrix, dest) {
- if (typeof dest === "undefined") { dest = null; }
- if (!dest)
- dest = this;
-
- return matrix.multiplyVec2(this, dest);
- };
-
- vec2.prototype.multiplyMat3 = function (matrix, dest) {
- if (typeof dest === "undefined") { dest = null; }
- if (!dest)
- dest = this;
-
- return matrix.multiplyVec2(this, dest);
- };
-
- vec2.cross = function (vector, vector2, dest) {
- if (typeof dest === "undefined") { dest = null; }
- if (!dest)
- dest = new TSM.vec3();
-
- var x = vector.x, y = vector.y;
-
- var x2 = vector2.x, y2 = vector2.y;
-
- var z = x * y2 - y * x2;
-
- dest.x = 0;
- dest.y = 0;
- dest.z = z;
-
- return dest;
- };
-
- vec2.dot = function (vector, vector2) {
- return (vector.x * vector2.x + vector.y * vector2.y);
- };
-
- vec2.distance = function (vector, vector2) {
- return Math.sqrt(this.squaredDistance(vector, vector2));
- };
-
- vec2.squaredDistance = function (vector, vector2) {
- var x = vector2.x - vector.x, y = vector2.y - vector.y;
-
- return (x * x + y * y);
- };
-
- vec2.direction = function (vector, vector2, dest) {
- if (typeof dest === "undefined") { dest = null; }
- if (!dest)
- dest = new vec2();
-
- var x = vector.x - vector2.x, y = vector.y - vector2.y;
-
- var length = Math.sqrt(x * x + y * y);
-
- if (length === 0) {
- dest.x = 0;
- dest.y = 0;
-
- return dest;
- }
-
- length = 1 / length;
-
- dest.x = x * length;
- dest.y = y * length;
-
- return dest;
- };
-
- vec2.mix = function (vector, vector2, time, dest) {
- if (typeof dest === "undefined") { dest = null; }
- if (!dest)
- dest = new vec2();
-
- var x = vector.x, y = vector.y;
-
- var x2 = vector2.x, y2 = vector2.y;
-
- dest.x = x + time * (x2 - x);
- dest.y = y + time * (y2 - y);
-
- return dest;
- };
-
- vec2.sum = function (vector, vector2, dest) {
- if (typeof dest === "undefined") { dest = null; }
- if (!dest)
- dest = new vec2();
-
- dest.x = vector.x + vector2.x;
- dest.y = vector.y + vector2.y;
-
- return dest;
- };
-
- vec2.difference = function (vector, vector2, dest) {
- if (typeof dest === "undefined") { dest = null; }
- if (!dest)
- dest = new vec2();
-
- dest.x = vector.x - vector2.x;
- dest.y = vector.y - vector2.y;
-
- return dest;
- };
-
- vec2.product = function (vector, vector2, dest) {
- if (typeof dest === "undefined") { dest = null; }
- if (!dest)
- dest = new vec2();
-
- dest.x = vector.x * vector2.x;
- dest.y = vector.y * vector2.y;
-
- return dest;
- };
-
- vec2.quotient = function (vector, vector2, dest) {
- if (typeof dest === "undefined") { dest = null; }
- if (!dest)
- dest = new vec2();
-
- dest.x = vector.x / vector2.x;
- dest.y = vector.y / vector2.y;
-
- return dest;
- };
-
- vec2.zero = new vec2([0, 0]);
- return vec2;
- })();
- TSM.vec2 = vec2;
-})(TSM || (TSM = {}));
-/**
-* @fileoverview TSM - A TypeScript vector and matrix math library
-* @author Matthias Ferch
-* @version 0.6
-*/
-/*
-* Copyright (c) 2012 Matthias Ferch
-*
-* Project homepage: https://github.com/vexator/TSM
-*
-* This software is provided 'as-is', without any express or implied
-* warranty. In no event will the authors be held liable for any damages
-* arising from the use of this software.
-*
-* Permission is granted to anyone to use this software for any purpose,
-* including commercial applications, and to alter it and redistribute it
-* freely, subject to the following restrictions:
-*
-* 1. The origin of this software must not be misrepresented; you must not
-* claim that you wrote the original software. If you use this software
-* in a product, an acknowledgment in the product documentation would be
-* appreciated but is not required.
-*
-* 2. Altered source versions must be plainly marked as such, and must not
-* be misrepresented as being the original software.
-*
-* 3. This notice may not be removed or altered from any source
-* distribution.
-*/
-///
-var TSM;
-(function (TSM) {
- var vec3 = (function () {
- function vec3(values) {
- if (typeof values === "undefined") { values = null; }
- this.values = new Float32Array(3);
- if (values) {
- this.xyz = values;
- }
- }
- Object.defineProperty(vec3.prototype, "x", {
- get: function () {
- return this.values[0];
- },
- set: function (value) {
- this.values[0] = value;
- },
- enumerable: true,
- configurable: true
- });
-
- Object.defineProperty(vec3.prototype, "y", {
- get: function () {
- return this.values[1];
- },
- set: function (value) {
- this.values[1] = value;
- },
- enumerable: true,
- configurable: true
- });
-
- Object.defineProperty(vec3.prototype, "z", {
- get: function () {
- return this.values[2];
- },
- set: function (value) {
- this.values[2] = value;
- },
- enumerable: true,
- configurable: true
- });
-
- Object.defineProperty(vec3.prototype, "xy", {
- get: function () {
- return [
- this.values[0],
- this.values[1]
- ];
- },
- set: function (values) {
- this.values[0] = values[0];
- this.values[1] = values[1];
- },
- enumerable: true,
- configurable: true
- });
-
- Object.defineProperty(vec3.prototype, "xyz", {
- get: function () {
- return [
- this.values[0],
- this.values[1],
- this.values[2]
- ];
- },
- set: function (values) {
- this.values[0] = values[0];
- this.values[1] = values[1];
- this.values[2] = values[2];
- },
- enumerable: true,
- configurable: true
- });
-
-
-
-
-
-
- vec3.prototype.at = function (index) {
- return this.values[index];
- };
-
- vec3.prototype.reset = function () {
- this.x = 0;
- this.y = 0;
- this.z = 0;
- };
-
- vec3.prototype.copy = function (dest) {
- if (typeof dest === "undefined") { dest = null; }
- if (!dest)
- dest = new vec3();
-
- dest.x = this.x;
- dest.y = this.y;
- dest.z = this.z;
-
- return dest;
- };
-
- vec3.prototype.negate = function (dest) {
- if (typeof dest === "undefined") { dest = null; }
- if (!dest)
- dest = this;
-
- dest.x = -this.x;
- dest.y = -this.y;
- dest.z = -this.z;
-
- return dest;
- };
-
- vec3.prototype.equals = function (vector, threshold) {
- if (typeof threshold === "undefined") { threshold = EPSILON; }
- if (Math.abs(this.x - vector.x) > threshold)
- return false;
-
- if (Math.abs(this.y - vector.y) > threshold)
- return false;
-
- if (Math.abs(this.z - vector.z) > threshold)
- return false;
-
- return true;
- };
-
- vec3.prototype.length = function () {
- return Math.sqrt(this.squaredLength());
- };
-
- vec3.prototype.squaredLength = function () {
- var x = this.x, y = this.y, z = this.z;
-
- return (x * x + y * y + z * z);
- };
-
- vec3.prototype.add = function (vector) {
- this.x += vector.x;
- this.y += vector.y;
- this.z += vector.z;
-
- return this;
- };
-
- vec3.prototype.subtract = function (vector) {
- this.x -= vector.x;
- this.y -= vector.y;
- this.z -= vector.z;
-
- return this;
- };
-
- vec3.prototype.multiply = function (vector) {
- this.x *= vector.x;
- this.y *= vector.y;
- this.z *= vector.z;
-
- return this;
- };
-
- vec3.prototype.divide = function (vector) {
- this.x /= vector.x;
- this.y /= vector.y;
- this.z /= vector.z;
-
- return this;
- };
-
- vec3.prototype.scale = function (value, dest) {
- if (typeof dest === "undefined") { dest = null; }
- if (!dest)
- dest = this;
-
- dest.x *= value;
- dest.y *= value;
- dest.z *= value;
-
- return dest;
- };
-
- vec3.prototype.normalize = function (dest) {
- if (typeof dest === "undefined") { dest = null; }
- if (!dest)
- dest = this;
-
- var length = this.length();
-
- if (length === 1) {
- return this;
- }
-
- if (length === 0) {
- dest.x = 0;
- dest.y = 0;
- dest.z = 0;
-
- return dest;
- }
-
- length = 1.0 / length;
-
- dest.x *= length;
- dest.y *= length;
- dest.z *= length;
-
- return dest;
- };
-
- vec3.prototype.multiplyByMat3 = function (matrix, dest) {
- if (typeof dest === "undefined") { dest = null; }
- if (!dest)
- dest = this;
-
- return matrix.multiplyVec3(this, dest);
- };
-
- vec3.prototype.multiplyByQuat = function (quat, dest) {
- if (typeof dest === "undefined") { dest = null; }
- if (!dest)
- dest = this;
-
- return quat.multiplyVec3(this, dest);
- };
-
- vec3.cross = function (vector, vector2, dest) {
- if (typeof dest === "undefined") { dest = null; }
- if (!dest)
- dest = new vec3();
-
- var x = vector.x, y = vector.y, z = vector.z;
-
- var x2 = vector2.x, y2 = vector2.y, z2 = vector2.z;
-
- dest.x = y * z2 - z * y2;
- dest.y = z * x2 - x * z2;
- dest.z = x * y2 - y * x2;
-
- return dest;
- };
-
- vec3.dot = function (vector, vector2) {
- var x = vector.x, y = vector.y, z = vector.z;
-
- var x2 = vector2.x, y2 = vector2.y, z2 = vector2.z;
-
- return (x * x2 + y * y2 + z * z2);
- };
-
- vec3.distance = function (vector, vector2) {
- var x = vector2.x - vector.x, y = vector2.y - vector.y, z = vector2.z - vector.z;
-
- return Math.sqrt(this.squaredDistance(vector, vector2));
- };
-
- vec3.squaredDistance = function (vector, vector2) {
- var x = vector2.x - vector.x, y = vector2.y - vector.y, z = vector2.z - vector.z;
-
- return (x * x + y * y + z * z);
- };
-
- vec3.direction = function (vector, vector2, dest) {
- if (typeof dest === "undefined") { dest = null; }
- if (!dest)
- dest = new vec3();
-
- var x = vector.x - vector2.x, y = vector.y - vector2.y, z = vector.z - vector2.z;
-
- var length = Math.sqrt(x * x + y * y + z * z);
-
- if (length === 0) {
- dest.x = 0;
- dest.y = 0;
- dest.z = 0;
-
- return dest;
- }
-
- length = 1 / length;
-
- dest.x = x * length;
- dest.y = y * length;
- dest.z = z * length;
-
- return dest;
- };
-
- vec3.mix = function (vector, vector2, time, dest) {
- if (typeof dest === "undefined") { dest = null; }
- if (!dest)
- dest = new vec3();
-
- dest.x = vector.x + time * (vector2.x - vector.x);
- dest.y = vector.y + time * (vector2.y - vector.y);
- dest.z = vector.z + time * (vector2.z - vector.z);
-
- return dest;
- };
-
- vec3.sum = function (vector, vector2, dest) {
- if (typeof dest === "undefined") { dest = null; }
- if (!dest)
- dest = new vec3();
-
- dest.x = vector.x + vector2.x;
- dest.y = vector.y + vector2.y;
- dest.z = vector.z + vector2.z;
-
- return dest;
- };
-
- vec3.difference = function (vector, vector2, dest) {
- if (typeof dest === "undefined") { dest = null; }
- if (!dest)
- dest = new vec3();
-
- dest.x = vector.x - vector2.x;
- dest.y = vector.y - vector2.y;
- dest.z = vector.z - vector2.z;
-
- return dest;
- };
-
- vec3.product = function (vector, vector2, dest) {
- if (typeof dest === "undefined") { dest = null; }
- if (!dest)
- dest = new vec3();
-
- dest.x = vector.x * vector2.x;
- dest.y = vector.y * vector2.y;
- dest.z = vector.z * vector2.z;
-
- return dest;
- };
-
- vec3.quotient = function (vector, vector2, dest) {
- if (typeof dest === "undefined") { dest = null; }
- if (!dest)
- dest = new vec3();
-
- dest.x = vector.x / vector2.x;
- dest.y = vector.y / vector2.y;
- dest.z = vector.z / vector2.z;
-
- return dest;
- };
-
- vec3.prototype.toQuat = function (dest) {
- if (typeof dest === "undefined") { dest = null; }
- if (!dest)
- dest = new TSM.quat();
-
- var c = new vec3();
- var s = new vec3();
-
- c.x = Math.cos(this.x * 0.5);
- s.x = Math.sin(this.x * 0.5);
-
- c.y = Math.cos(this.y * 0.5);
- s.y = Math.sin(this.y * 0.5);
-
- c.z = Math.cos(this.z * 0.5);
- s.z = Math.sin(this.z * 0.5);
-
- dest.x = s.x * c.y * c.z - c.x * s.y * s.z;
- dest.y = c.x * s.y * c.z + s.x * c.y * s.z;
- dest.z = c.x * c.y * s.z - s.x * s.y * c.z;
- dest.w = c.x * c.y * c.z + s.x * s.y * s.z;
-
- return dest;
- };
-
- vec3.zero = new vec3([0, 0, 0]);
-
- vec3.up = new vec3([0, 1, 0]);
- vec3.right = new vec3([1, 0, 0]);
- vec3.forward = new vec3([0, 0, 1]);
- return vec3;
- })();
- TSM.vec3 = vec3;
-})(TSM || (TSM = {}));
-/**
-* @fileoverview TSM - A TypeScript vector and matrix math library
-* @author Matthias Ferch
-* @version 0.6
-*/
-/*
-* Copyright (c) 2012 Matthias Ferch
-*
-* Project homepage: https://github.com/vexator/TSM
-*
-* This software is provided 'as-is', without any express or implied
-* warranty. In no event will the authors be held liable for any damages
-* arising from the use of this software.
-*
-* Permission is granted to anyone to use this software for any purpose,
-* including commercial applications, and to alter it and redistribute it
-* freely, subject to the following restrictions:
-*
-* 1. The origin of this software must not be misrepresented; you must not
-* claim that you wrote the original software. If you use this software
-* in a product, an acknowledgment in the product documentation would be
-* appreciated but is not required.
-*
-* 2. Altered source versions must be plainly marked as such, and must not
-* be misrepresented as being the original software.
-*
-* 3. This notice may not be removed or altered from any source
-* distribution.
-*/
-///
-var TSM;
-(function (TSM) {
- var vec4 = (function () {
- function vec4(values) {
- if (typeof values === "undefined") { values = null; }
- this.values = new Float32Array(4);
- if (values) {
- this.xyzw = values;
- }
- }
- Object.defineProperty(vec4.prototype, "x", {
- get: function () {
- return this.values[0];
- },
- set: function (value) {
- this.values[0] = value;
- },
- enumerable: true,
- configurable: true
- });
-
- Object.defineProperty(vec4.prototype, "y", {
- get: function () {
- return this.values[1];
- },
- set: function (value) {
- this.values[1] = value;
- },
- enumerable: true,
- configurable: true
- });
-
- Object.defineProperty(vec4.prototype, "z", {
- get: function () {
- return this.values[2];
- },
- set: function (value) {
- this.values[2] = value;
- },
- enumerable: true,
- configurable: true
- });
-
- Object.defineProperty(vec4.prototype, "w", {
- get: function () {
- return this.values[3];
- },
- set: function (value) {
- this.values[3] = value;
- },
- enumerable: true,
- configurable: true
- });
-
- Object.defineProperty(vec4.prototype, "xy", {
- get: function () {
- return [
- this.values[0],
- this.values[1]
- ];
- },
- set: function (values) {
- this.values[0] = values[0];
- this.values[1] = values[1];
- },
- enumerable: true,
- configurable: true
- });
-
- Object.defineProperty(vec4.prototype, "xyz", {
- get: function () {
- return [
- this.values[0],
- this.values[1],
- this.values[2]
- ];
- },
- set: function (values) {
- this.values[0] = values[0];
- this.values[1] = values[1];
- this.values[2] = values[2];
- },
- enumerable: true,
- configurable: true
- });
-
- Object.defineProperty(vec4.prototype, "xyzw", {
- get: function () {
- return [
- this.values[0],
- this.values[1],
- this.values[2],
- this.values[3]
- ];
- },
- set: function (values) {
- this.values[0] = values[0];
- this.values[1] = values[1];
- this.values[2] = values[2];
- this.values[3] = values[3];
- },
- enumerable: true,
- configurable: true
- });
-
-
-
-
-
-
-
-
- Object.defineProperty(vec4.prototype, "r", {
- get: function () {
- return this.values[0];
- },
- set: function (value) {
- this.values[0] = value;
- },
- enumerable: true,
- configurable: true
- });
-
- Object.defineProperty(vec4.prototype, "g", {
- get: function () {
- return this.values[1];
- },
- set: function (value) {
- this.values[1] = value;
- },
- enumerable: true,
- configurable: true
- });
-
- Object.defineProperty(vec4.prototype, "b", {
- get: function () {
- return this.values[2];
- },
- set: function (value) {
- this.values[2] = value;
- },
- enumerable: true,
- configurable: true
- });
-
- Object.defineProperty(vec4.prototype, "a", {
- get: function () {
- return this.values[3];
- },
- set: function (value) {
- this.values[3] = value;
- },
- enumerable: true,
- configurable: true
- });
-
- Object.defineProperty(vec4.prototype, "rg", {
- get: function () {
- return [
- this.values[0],
- this.values[1]
- ];
- },
- set: function (values) {
- this.values[0] = values[0];
- this.values[1] = values[1];
- },
- enumerable: true,
- configurable: true
- });
-
- Object.defineProperty(vec4.prototype, "rgb", {
- get: function () {
- return [
- this.values[0],
- this.values[1],
- this.values[2]
- ];
- },
- set: function (values) {
- this.values[0] = values[0];
- this.values[1] = values[1];
- this.values[2] = values[2];
- },
- enumerable: true,
- configurable: true
- });
-
- Object.defineProperty(vec4.prototype, "rgba", {
- get: function () {
- return [
- this.values[0],
- this.values[1],
- this.values[2],
- this.values[3]
- ];
- },
- set: function (values) {
- this.values[0] = values[0];
- this.values[1] = values[1];
- this.values[2] = values[2];
- this.values[3] = values[3];
- },
- enumerable: true,
- configurable: true
- });
-
-
-
-
-
-
-
-
- vec4.prototype.at = function (index) {
- return this.values[index];
- };
-
- vec4.prototype.reset = function () {
- this.x = 0;
- this.y = 0;
- this.z = 0;
- this.w = 0;
- };
-
- vec4.prototype.copy = function (dest) {
- if (typeof dest === "undefined") { dest = null; }
- if (!dest)
- dest = new vec4();
-
- dest.x = this.x;
- dest.y = this.y;
- dest.z = this.z;
- dest.w = this.w;
-
- return dest;
- };
-
- vec4.prototype.negate = function (dest) {
- if (typeof dest === "undefined") { dest = null; }
- if (!dest)
- dest = this;
-
- dest.x = -this.x;
- dest.y = -this.y;
- dest.z = -this.z;
- dest.w = -this.w;
-
- return dest;
- };
-
- vec4.prototype.equals = function (vector, threshold) {
- if (typeof threshold === "undefined") { threshold = EPSILON; }
- if (Math.abs(this.x - vector.x) > threshold)
- return false;
-
- if (Math.abs(this.y - vector.y) > threshold)
- return false;
-
- if (Math.abs(this.z - vector.z) > threshold)
- return false;
-
- if (Math.abs(this.w - vector.w) > threshold)
- return false;
-
- return true;
- };
-
- vec4.prototype.length = function () {
- return Math.sqrt(this.squaredLength());
- };
-
- vec4.prototype.squaredLength = function () {
- var x = this.x, y = this.y, z = this.z, w = this.w;
-
- return (x * x + y * y + z * z + w * w);
- };
-
- vec4.prototype.add = function (vector) {
- this.x += vector.x;
- this.y += vector.y;
- this.z += vector.z;
- this.w += vector.w;
-
- return this;
- };
-
- vec4.prototype.subtract = function (vector) {
- this.x -= vector.x;
- this.y -= vector.y;
- this.z -= vector.z;
- this.w -= vector.w;
-
- return this;
- };
-
- vec4.prototype.multiply = function (vector) {
- this.x *= vector.x;
- this.y *= vector.y;
- this.z *= vector.z;
- this.w *= vector.w;
-
- return this;
- };
-
- vec4.prototype.divide = function (vector) {
- this.x /= vector.x;
- this.y /= vector.y;
- this.z /= vector.z;
- this.w /= vector.w;
-
- return this;
- };
-
- vec4.prototype.scale = function (value, dest) {
- if (typeof dest === "undefined") { dest = null; }
- if (!dest)
- dest = this;
-
- dest.x *= value;
- dest.y *= value;
- dest.z *= value;
- dest.w *= value;
-
- return dest;
- };
-
- vec4.prototype.normalize = function (dest) {
- if (typeof dest === "undefined") { dest = null; }
- if (!dest)
- dest = this;
-
- var length = this.length();
-
- if (length === 1) {
- return this;
- }
-
- if (length === 0) {
- dest.x *= 0;
- dest.y *= 0;
- dest.z *= 0;
- dest.w *= 0;
-
- return dest;
- }
-
- length = 1.0 / length;
-
- dest.x *= length;
- dest.y *= length;
- dest.z *= length;
- dest.w *= length;
-
- return dest;
- };
-
- vec4.prototype.multiplyMat4 = function (matrix, dest) {
- if (typeof dest === "undefined") { dest = null; }
- if (!dest)
- dest = this;
-
- return matrix.multiplyVec4(this, dest);
- };
-
- vec4.mix = function (vector, vector2, time, dest) {
- if (typeof dest === "undefined") { dest = null; }
- if (!dest)
- dest = new vec4();
-
- dest.x = vector.x + time * (vector2.x - vector.x);
- dest.y = vector.y + time * (vector2.y - vector.y);
- dest.z = vector.z + time * (vector2.z - vector.z);
- dest.w = vector.w + time * (vector2.w - vector.w);
-
- return dest;
- };
-
- vec4.sum = function (vector, vector2, dest) {
- if (typeof dest === "undefined") { dest = null; }
- if (!dest)
- dest = new vec4();
-
- dest.x = vector.x + vector2.x, dest.y = vector.y + vector2.y, dest.z = vector.z + vector2.z, dest.w = vector.w + vector2.w;
-
- return dest;
- };
-
- vec4.difference = function (vector, vector2, dest) {
- if (typeof dest === "undefined") { dest = null; }
- if (!dest)
- dest = new vec4();
-
- dest.x = vector.x - vector2.x, dest.y = vector.y - vector2.y, dest.z = vector.z - vector2.z, dest.w = vector.w - vector2.w;
-
- return dest;
- };
-
- vec4.product = function (vector, vector2, dest) {
- if (typeof dest === "undefined") { dest = null; }
- if (!dest)
- dest = new vec4();
-
- dest.x = vector.x * vector2.x, dest.y = vector.y * vector2.y, dest.z = vector.z * vector2.z, dest.w = vector.w * vector2.w;
-
- return dest;
- };
-
- vec4.quotient = function (vector, vector2, dest) {
- if (typeof dest === "undefined") { dest = null; }
- if (!dest)
- dest = new vec4();
-
- dest.x = vector.x / vector2.x, dest.y = vector.y / vector2.y, dest.z = vector.z / vector2.z, dest.w = vector.w / vector2.w;
-
- return dest;
- };
-
- vec4.zero = new vec4([0, 0, 0, 1]);
- return vec4;
- })();
- TSM.vec4 = vec4;
-})(TSM || (TSM = {}));
-/**
-* @fileoverview TSM - A TypeScript vector and matrix math library
-* @author Matthias Ferch
-* @version 0.6
-*/
-/*
-* Copyright (c) 2012 Matthias Ferch
-*
-* Project homepage: https://github.com/vexator/TSM
-*
-* This software is provided 'as-is', without any express or implied
-* warranty. In no event will the authors be held liable for any damages
-* arising from the use of this software.
-*
-* Permission is granted to anyone to use this software for any purpose,
-* including commercial applications, and to alter it and redistribute it
-* freely, subject to the following restrictions:
-*
-* 1. The origin of this software must not be misrepresented; you must not
-* claim that you wrote the original software. If you use this software
-* in a product, an acknowledgment in the product documentation would be
-* appreciated but is not required.
-*
-* 2. Altered source versions must be plainly marked as such, and must not
-* be misrepresented as being the original software.
-*
-* 3. This notice may not be removed or altered from any source
-* distribution.
-*/
-///
-var TSM;
-(function (TSM) {
- var mat2 = (function () {
- function mat2(values) {
- if (typeof values === "undefined") { values = null; }
- this.values = new Float32Array(4);
- if (values) {
- this.init(values);
- }
- }
- mat2.prototype.at = function (index) {
- return this.values[index];
- };
-
- mat2.prototype.init = function (values) {
- for (var i = 0; i < 4; i++) {
- this.values[i] = values[i];
- }
-
- return this;
- };
-
- mat2.prototype.reset = function () {
- for (var i = 0; i < 4; i++) {
- this.values[i] = 0;
- }
- };
-
- mat2.prototype.copy = function (dest) {
- if (typeof dest === "undefined") { dest = null; }
- if (!dest)
- dest = new mat2();
-
- for (var i = 0; i < 4; i++) {
- dest.values[i] = this.values[i];
- }
-
- return dest;
- };
-
- mat2.prototype.all = function () {
- var data = [];
- for (var i = 0; i < 4; i++) {
- data[i] = this.values[i];
- }
-
- return data;
- };
-
- mat2.prototype.row = function (index) {
- return [
- this.values[index * 2 + 0],
- this.values[index * 2 + 1]
- ];
- };
-
- mat2.prototype.col = function (index) {
- return [
- this.values[index],
- this.values[index + 2]
- ];
- };
-
- mat2.prototype.equals = function (matrix, threshold) {
- if (typeof threshold === "undefined") { threshold = EPSILON; }
- for (var i = 0; i < 4; i++) {
- if (Math.abs(this.values[i] - matrix.at(i)) > threshold)
- return false;
- }
-
- return true;
- };
-
- mat2.prototype.determinant = function () {
- return this.values[0] * this.values[3] - this.values[2] * this.values[1];
- };
-
- mat2.prototype.setIdentity = function () {
- this.values[0] = 1;
- this.values[1] = 0;
- this.values[2] = 0;
- this.values[3] = 1;
-
- return this;
- };
-
- mat2.prototype.transpose = function () {
- var temp = this.values[1];
-
- this.values[1] = this.values[2];
- this.values[2] = temp;
-
- return this;
- };
-
- mat2.prototype.inverse = function () {
- var det = this.determinant();
-
- if (!det)
- return null;
-
- det = 1.0 / det;
-
- this.values[0] = det * (this.values[3]);
- this.values[1] = det * (-this.values[1]);
- this.values[2] = det * (-this.values[2]);
- this.values[3] = det * (this.values[0]);
-
- return this;
- };
-
- mat2.prototype.multiply = function (matrix) {
- var a11 = this.values[0], a12 = this.values[1], a21 = this.values[2], a22 = this.values[3];
-
- this.values[0] = a11 * matrix.at(0) + a12 * matrix.at(2);
- this.values[1] = a11 * matrix.at(1) + a12 * matrix.at(3);
- this.values[2] = a21 * matrix.at(0) + a22 * matrix.at(2);
- this.values[3] = a21 * matrix.at(1) + a22 * matrix.at(3);
-
- return this;
- };
-
- mat2.prototype.rotate = function (angle) {
- var a11 = this.values[0], a12 = this.values[1], a21 = this.values[2], a22 = this.values[3];
-
- var sin = Math.sin(angle), cos = Math.cos(angle);
-
- this.values[0] = a11 * cos + a12 * sin;
- this.values[1] = a11 * -sin + a12 * cos;
- this.values[2] = a21 * cos + a22 * sin;
- this.values[3] = a21 * -sin + a22 * cos;
-
- return this;
- };
-
- mat2.prototype.multiplyVec2 = function (vector, result) {
- if (typeof result === "undefined") { result = null; }
- var x = vector.x, y = vector.y;
-
- if (result) {
- result.xy = [
- x * this.values[0] + y * this.values[1],
- x * this.values[2] + y * this.values[3]
- ];
-
- return result;
- } else {
- return new TSM.vec2([
- x * this.values[0] + y * this.values[1],
- x * this.values[2] + y * this.values[3]
- ]);
- }
- };
-
- mat2.prototype.scale = function (vector) {
- var a11 = this.values[0], a12 = this.values[1], a21 = this.values[2], a22 = this.values[3];
-
- var x = vector.x, y = vector.y;
-
- this.values[0] = a11 * x;
- this.values[1] = a12 * y;
- this.values[2] = a21 * x;
- this.values[3] = a22 * y;
-
- return this;
- };
-
- mat2.product = function (m1, m2, result) {
- if (typeof result === "undefined") { result = null; }
- var a11 = m1.at(0), a12 = m1.at(1), a21 = m1.at(2), a22 = m1.at(3);
-
- if (result) {
- result.init([
- a11 * m2.at(0) + a12 * m2.at(2),
- a11 * m2.at(1) + a12 * m2.at(3),
- a21 * m2.at(0) + a22 * m2.at(2),
- a21 * m2.at(1) + a22 * m2.at(3)
- ]);
-
- return result;
- } else {
- return new mat2([
- a11 * m2.at(0) + a12 * m2.at(2),
- a11 * m2.at(1) + a12 * m2.at(3),
- a21 * m2.at(0) + a22 * m2.at(2),
- a21 * m2.at(1) + a22 * m2.at(3)
- ]);
- }
- };
-
- mat2.identity = new mat2().setIdentity();
- return mat2;
- })();
- TSM.mat2 = mat2;
-})(TSM || (TSM = {}));
-/**
-* @fileoverview TSM - A TypeScript vector and matrix math library
-* @author Matthias Ferch
-* @version 0.6
-*/
-/*
-* Copyright (c) 2012 Matthias Ferch
-*
-* Project homepage: https://github.com/vexator/TSM
-*
-* This software is provided 'as-is', without any express or implied
-* warranty. In no event will the authors be held liable for any damages
-* arising from the use of this software.
-*
-* Permission is granted to anyone to use this software for any purpose,
-* including commercial applications, and to alter it and redistribute it
-* freely, subject to the following restrictions:
-*
-* 1. The origin of this software must not be misrepresented; you must not
-* claim that you wrote the original software. If you use this software
-* in a product, an acknowledgment in the product documentation would be
-* appreciated but is not required.
-*
-* 2. Altered source versions must be plainly marked as such, and must not
-* be misrepresented as being the original software.
-*
-* 3. This notice may not be removed or altered from any source
-* distribution.
-*/
-///
-var TSM;
-(function (TSM) {
- var mat3 = (function () {
- function mat3(values) {
- if (typeof values === "undefined") { values = null; }
- this.values = new Float32Array(9);
- if (values) {
- this.init(values);
- }
- }
- mat3.prototype.at = function (index) {
- return this.values[index];
- };
-
- mat3.prototype.init = function (values) {
- for (var i = 0; i < 9; i++) {
- this.values[i] = values[i];
- }
-
- return this;
- };
-
- mat3.prototype.reset = function () {
- for (var i = 0; i < 9; i++) {
- this.values[i] = 0;
- }
- };
-
- mat3.prototype.copy = function (dest) {
- if (typeof dest === "undefined") { dest = null; }
- if (!dest)
- dest = new mat3();
-
- for (var i = 0; i < 9; i++) {
- dest.values[i] = this.values[i];
- }
-
- return dest;
- };
-
- mat3.prototype.all = function () {
- var data = [];
- for (var i = 0; i < 9; i++) {
- data[i] = this.values[i];
- }
-
- return data;
- };
-
- mat3.prototype.row = function (index) {
- return [
- this.values[index * 3 + 0],
- this.values[index * 3 + 1],
- this.values[index * 3 + 2]
- ];
- };
-
- mat3.prototype.col = function (index) {
- return [
- this.values[index],
- this.values[index + 3],
- this.values[index + 6]
- ];
- };
-
- mat3.prototype.equals = function (matrix, threshold) {
- if (typeof threshold === "undefined") { threshold = EPSILON; }
- for (var i = 0; i < 9; i++) {
- if (Math.abs(this.values[i] - matrix.at(i)) > threshold)
- return false;
- }
-
- return true;
- };
-
- mat3.prototype.determinant = function () {
- var a00 = this.values[0], a01 = this.values[1], a02 = this.values[2], a10 = this.values[3], a11 = this.values[4], a12 = this.values[5], a20 = this.values[6], a21 = this.values[7], a22 = this.values[8];
-
- var det01 = a22 * a11 - a12 * a21, det11 = -a22 * a10 + a12 * a20, det21 = a21 * a10 - a11 * a20;
-
- return a00 * det01 + a01 * det11 + a02 * det21;
- };
-
- mat3.prototype.setIdentity = function () {
- this.values[0] = 1;
- this.values[1] = 0;
- this.values[2] = 0;
- this.values[3] = 0;
- this.values[4] = 1;
- this.values[5] = 0;
- this.values[6] = 0;
- this.values[7] = 0;
- this.values[8] = 1;
-
- return this;
- };
-
- mat3.prototype.transpose = function () {
- var temp01 = this.values[1], temp02 = this.values[2], temp12 = this.values[5];
-
- this.values[1] = this.values[3];
- this.values[2] = this.values[6];
- this.values[3] = temp01;
- this.values[5] = this.values[7];
- this.values[6] = temp02;
- this.values[7] = temp12;
-
- return this;
- };
-
- mat3.prototype.inverse = function () {
- var a00 = this.values[0], a01 = this.values[1], a02 = this.values[2], a10 = this.values[3], a11 = this.values[4], a12 = this.values[5], a20 = this.values[6], a21 = this.values[7], a22 = this.values[8];
-
- var det01 = a22 * a11 - a12 * a21, det11 = -a22 * a10 + a12 * a20, det21 = a21 * a10 - a11 * a20;
-
- var det = a00 * det01 + a01 * det11 + a02 * det21;
-
- if (!det)
- return null;
-
- det = 1.0 / det;
-
- this.values[0] = det01 * det;
- this.values[1] = (-a22 * a01 + a02 * a21) * det;
- this.values[2] = (a12 * a01 - a02 * a11) * det;
- this.values[3] = det11 * det;
- this.values[4] = (a22 * a00 - a02 * a20) * det;
- this.values[5] = (-a12 * a00 + a02 * a10) * det;
- this.values[6] = det21 * det;
- this.values[7] = (-a21 * a00 + a01 * a20) * det;
- this.values[8] = (a11 * a00 - a01 * a10) * det;
-
- return this;
- };
-
- mat3.prototype.multiply = function (matrix) {
- var a00 = this.values[0], a01 = this.values[1], a02 = this.values[2], a10 = this.values[3], a11 = this.values[4], a12 = this.values[5], a20 = this.values[6], a21 = this.values[7], a22 = this.values[8];
-
- var b00 = matrix.at(0), b01 = matrix.at(1), b02 = matrix.at(2), b10 = matrix.at(3), b11 = matrix.at(4), b12 = matrix.at(5), b20 = matrix.at(6), b21 = matrix.at(7), b22 = matrix.at(8);
-
- this.values[0] = b00 * a00 + b01 * a10 + b02 * a20;
- this.values[1] = b00 * a01 + b01 * a11 + b02 * a21;
- this.values[2] = b00 * a02 + b01 * a12 + b02 * a22;
-
- this.values[3] = b10 * a00 + b11 * a10 + b12 * a20;
- this.values[4] = b10 * a01 + b11 * a11 + b12 * a21;
- this.values[5] = b10 * a02 + b11 * a12 + b12 * a22;
-
- this.values[6] = b20 * a00 + b21 * a10 + b22 * a20;
- this.values[7] = b20 * a01 + b21 * a11 + b22 * a21;
- this.values[8] = b20 * a02 + b21 * a12 + b22 * a22;
-
- return this;
- };
-
- mat3.prototype.multiplyVec2 = function (vector, result) {
- if (typeof result === "undefined") { result = null; }
- var x = vector.x, y = vector.y;
-
- if (result) {
- result.xy = [
- x * this.values[0] + y * this.values[3] + this.values[6],
- x * this.values[1] + y * this.values[4] + this.values[7]
- ];
-
- return result;
- } else {
- return new TSM.vec2([
- x * this.values[0] + y * this.values[3] + this.values[6],
- x * this.values[1] + y * this.values[4] + this.values[7]
- ]);
- }
- };
-
- mat3.prototype.multiplyVec3 = function (vector, result) {
- if (typeof result === "undefined") { result = null; }
- var x = vector.x, y = vector.y, z = vector.z;
-
- if (result) {
- result.xyz = [
- x * this.values[0] + y * this.values[3] + z * this.values[6],
- x * this.values[1] + y * this.values[4] + z * this.values[7],
- x * this.values[2] + y * this.values[5] + z * this.values[8]
- ];
-
- return result;
- } else {
- return new TSM.vec3([
- x * this.values[0] + y * this.values[3] + z * this.values[6],
- x * this.values[1] + y * this.values[4] + z * this.values[7],
- x * this.values[2] + y * this.values[5] + z * this.values[8]
- ]);
- }
- };
-
- mat3.prototype.toMat4 = function (result) {
- if (typeof result === "undefined") { result = null; }
- if (result) {
- result.init([
- this.values[0],
- this.values[1],
- this.values[2],
- 0,
- this.values[3],
- this.values[4],
- this.values[5],
- 0,
- this.values[6],
- this.values[7],
- this.values[8],
- 0,
- 0,
- 0,
- 0,
- 1
- ]);
-
- return result;
- } else {
- return new TSM.mat4([
- this.values[0],
- this.values[1],
- this.values[2],
- 0,
- this.values[3],
- this.values[4],
- this.values[5],
- 0,
- this.values[6],
- this.values[7],
- this.values[8],
- 0,
- 0,
- 0,
- 0,
- 1
- ]);
- }
- };
-
- mat3.prototype.toQuat = function () {
- var m00 = this.values[0], m01 = this.values[1], m02 = this.values[2], m10 = this.values[3], m11 = this.values[4], m12 = this.values[5], m20 = this.values[6], m21 = this.values[7], m22 = this.values[8];
-
- var fourXSquaredMinus1 = m00 - m11 - m22;
- var fourYSquaredMinus1 = m11 - m00 - m22;
- var fourZSquaredMinus1 = m22 - m00 - m11;
- var fourWSquaredMinus1 = m00 + m11 + m22;
-
- var biggestIndex = 0;
-
- var fourBiggestSquaredMinus1 = fourWSquaredMinus1;
-
- if (fourXSquaredMinus1 > fourBiggestSquaredMinus1) {
- fourBiggestSquaredMinus1 = fourXSquaredMinus1;
- biggestIndex = 1;
- }
-
- if (fourYSquaredMinus1 > fourBiggestSquaredMinus1) {
- fourBiggestSquaredMinus1 = fourYSquaredMinus1;
- biggestIndex = 2;
- }
-
- if (fourZSquaredMinus1 > fourBiggestSquaredMinus1) {
- fourBiggestSquaredMinus1 = fourZSquaredMinus1;
- biggestIndex = 3;
- }
-
- var biggestVal = Math.sqrt(fourBiggestSquaredMinus1 + 1) * 0.5;
- var mult = 0.25 / biggestVal;
-
- var result = new TSM.quat();
-
- switch (biggestIndex) {
- case 0:
- result.w = biggestVal;
- result.x = (m12 - m21) * mult;
- result.y = (m20 - m02) * mult;
- result.z = (m01 - m10) * mult;
-
- break;
-
- case 1:
- result.w = (m12 - m21) * mult;
- result.x = biggestVal;
- result.y = (m01 + m10) * mult;
- result.z = (m20 + m02) * mult;
-
- break;
-
- case 2:
- result.w = (m20 - m02) * mult;
- result.x = (m01 + m10) * mult;
- result.y = biggestVal;
- result.z = (m12 + m21) * mult;
-
- break;
-
- case 3:
- result.w = (m01 - m10) * mult;
- result.x = (m20 + m02) * mult;
- result.y = (m12 + m21) * mult;
- result.z = biggestVal;
-
- break;
- }
-
- return result;
- };
-
- mat3.prototype.rotate = function (angle, axis) {
- var x = axis.x, y = axis.y, z = axis.z;
-
- var length = Math.sqrt(x * x + y * y + z * z);
-
- if (!length)
- return null;
-
- if (length !== 1) {
- length = 1 / length;
- x *= length;
- y *= length;
- z *= length;
- }
-
- var s = Math.sin(angle);
- var c = Math.cos(angle);
-
- var t = 1.0 - c;
-
- var a00 = this.values[0], a01 = this.values[1], a02 = this.values[2], a10 = this.values[4], a11 = this.values[5], a12 = this.values[6], a20 = this.values[8], a21 = this.values[9], a22 = this.values[10];
-
- var b00 = x * x * t + c, b01 = y * x * t + z * s, b02 = z * x * t - y * s, b10 = x * y * t - z * s, b11 = y * y * t + c, b12 = z * y * t + x * s, b20 = x * z * t + y * s, b21 = y * z * t - x * s, b22 = z * z * t + c;
-
- this.values[0] = a00 * b00 + a10 * b01 + a20 * b02;
- this.values[1] = a01 * b00 + a11 * b01 + a21 * b02;
- this.values[2] = a02 * b00 + a12 * b01 + a22 * b02;
-
- this.values[3] = a00 * b10 + a10 * b11 + a20 * b12;
- this.values[4] = a01 * b10 + a11 * b11 + a21 * b12;
- this.values[5] = a02 * b10 + a12 * b11 + a22 * b12;
-
- this.values[6] = a00 * b20 + a10 * b21 + a20 * b22;
- this.values[7] = a01 * b20 + a11 * b21 + a21 * b22;
- this.values[8] = a02 * b20 + a12 * b21 + a22 * b22;
-
- return this;
- };
-
- mat3.product = function (m1, m2, result) {
- if (typeof result === "undefined") { result = null; }
- var a00 = m1.at(0), a01 = m1.at(1), a02 = m1.at(2), a10 = m1.at(3), a11 = m1.at(4), a12 = m1.at(5), a20 = m1.at(6), a21 = m1.at(7), a22 = m1.at(8);
-
- var b00 = m2.at(0), b01 = m2.at(1), b02 = m2.at(2), b10 = m2.at(3), b11 = m2.at(4), b12 = m2.at(5), b20 = m2.at(6), b21 = m2.at(7), b22 = m2.at(8);
-
- if (result) {
- result.init([
- b00 * a00 + b01 * a10 + b02 * a20,
- b00 * a01 + b01 * a11 + b02 * a21,
- b00 * a02 + b01 * a12 + b02 * a22,
- b10 * a00 + b11 * a10 + b12 * a20,
- b10 * a01 + b11 * a11 + b12 * a21,
- b10 * a02 + b11 * a12 + b12 * a22,
- b20 * a00 + b21 * a10 + b22 * a20,
- b20 * a01 + b21 * a11 + b22 * a21,
- b20 * a02 + b21 * a12 + b22 * a22
- ]);
-
- return result;
- } else {
- return new mat3([
- b00 * a00 + b01 * a10 + b02 * a20,
- b00 * a01 + b01 * a11 + b02 * a21,
- b00 * a02 + b01 * a12 + b02 * a22,
- b10 * a00 + b11 * a10 + b12 * a20,
- b10 * a01 + b11 * a11 + b12 * a21,
- b10 * a02 + b11 * a12 + b12 * a22,
- b20 * a00 + b21 * a10 + b22 * a20,
- b20 * a01 + b21 * a11 + b22 * a21,
- b20 * a02 + b21 * a12 + b22 * a22
- ]);
- }
- };
-
- mat3.identity = new mat3().setIdentity();
- return mat3;
- })();
- TSM.mat3 = mat3;
-})(TSM || (TSM = {}));
-/**
-* @fileoverview TSM - A TypeScript vector and matrix math library
-* @author Matthias Ferch
-* @version 0.6
-*/
-/*
-* Copyright (c) 2012 Matthias Ferch
-*
-* Project homepage: https://github.com/vexator/TSM
-*
-* This software is provided 'as-is', without any express or implied
-* warranty. In no event will the authors be held liable for any damages
-* arising from the use of this software.
-*
-* Permission is granted to anyone to use this software for any purpose,
-* including commercial applications, and to alter it and redistribute it
-* freely, subject to the following restrictions:
-*
-* 1. The origin of this software must not be misrepresented; you must not
-* claim that you wrote the original software. If you use this software
-* in a product, an acknowledgment in the product documentation would be
-* appreciated but is not required.
-*
-* 2. Altered source versions must be plainly marked as such, and must not
-* be misrepresented as being the original software.
-*
-* 3. This notice may not be removed or altered from any source
-* distribution.
-*/
-///
-var TSM;
-(function (TSM) {
- var mat4 = (function () {
- function mat4(values) {
- if (typeof values === "undefined") { values = null; }
- this.values = new Float32Array(16);
- if (values) {
- this.init(values);
- }
- }
- mat4.prototype.at = function (index) {
- return this.values[index];
- };
-
- mat4.prototype.init = function (values) {
- for (var i = 0; i < 16; i++) {
- this.values[i] = values[i];
- }
-
- return this;
- };
-
- mat4.prototype.reset = function () {
- for (var i = 0; i < 16; i++) {
- this.values[i] = 0;
- }
- };
-
- mat4.prototype.copy = function (dest) {
- if (typeof dest === "undefined") { dest = null; }
- if (!dest)
- dest = new mat4();
-
- for (var i = 0; i < 16; i++) {
- dest.values[i] = this.values[i];
- }
-
- return dest;
- };
-
- mat4.prototype.all = function () {
- var data = [];
- for (var i = 0; i < 16; i++) {
- data[i] = this.values[i];
- }
-
- return data;
- };
-
- mat4.prototype.row = function (index) {
- return [
- this.values[index * 4 + 0],
- this.values[index * 4 + 1],
- this.values[index * 4 + 2],
- this.values[index * 4 + 3]
- ];
- };
-
- mat4.prototype.col = function (index) {
- return [
- this.values[index],
- this.values[index + 4],
- this.values[index + 8],
- this.values[index + 12]
- ];
- };
-
- mat4.prototype.equals = function (matrix, threshold) {
- if (typeof threshold === "undefined") { threshold = EPSILON; }
- for (var i = 0; i < 16; i++) {
- if (Math.abs(this.values[i] - matrix.at(i)) > threshold)
- return false;
- }
-
- return true;
- };
-
- mat4.prototype.determinant = function () {
- var a00 = this.values[0], a01 = this.values[1], a02 = this.values[2], a03 = this.values[3], a10 = this.values[4], a11 = this.values[5], a12 = this.values[6], a13 = this.values[7], a20 = this.values[8], a21 = this.values[9], a22 = this.values[10], a23 = this.values[11], a30 = this.values[12], a31 = this.values[13], a32 = this.values[14], a33 = this.values[15];
-
- var det00 = a00 * a11 - a01 * a10, det01 = a00 * a12 - a02 * a10, det02 = a00 * a13 - a03 * a10, det03 = a01 * a12 - a02 * a11, det04 = a01 * a13 - a03 * a11, det05 = a02 * a13 - a03 * a12, det06 = a20 * a31 - a21 * a30, det07 = a20 * a32 - a22 * a30, det08 = a20 * a33 - a23 * a30, det09 = a21 * a32 - a22 * a31, det10 = a21 * a33 - a23 * a31, det11 = a22 * a33 - a23 * a32;
-
- return (det00 * det11 - det01 * det10 + det02 * det09 + det03 * det08 - det04 * det07 + det05 * det06);
- };
-
- mat4.prototype.setIdentity = function () {
- this.values[0] = 1;
- this.values[1] = 0;
- this.values[2] = 0;
- this.values[3] = 0;
- this.values[4] = 0;
- this.values[5] = 1;
- this.values[6] = 0;
- this.values[7] = 0;
- this.values[8] = 0;
- this.values[9] = 0;
- this.values[10] = 1;
- this.values[11] = 0;
- this.values[12] = 0;
- this.values[13] = 0;
- this.values[14] = 0;
- this.values[15] = 1;
-
- return this;
- };
-
- mat4.prototype.transpose = function () {
- var temp01 = this.values[1], temp02 = this.values[2], temp03 = this.values[3], temp12 = this.values[6], temp13 = this.values[7], temp23 = this.values[11];
-
- this.values[1] = this.values[4];
- this.values[2] = this.values[8];
- this.values[3] = this.values[12];
- this.values[4] = temp01;
- this.values[6] = this.values[9];
- this.values[7] = this.values[13];
- this.values[8] = temp02;
- this.values[9] = temp12;
- this.values[11] = this.values[14];
- this.values[12] = temp03;
- this.values[13] = temp13;
- this.values[14] = temp23;
-
- return this;
- };
-
- mat4.prototype.inverse = function () {
- var a00 = this.values[0], a01 = this.values[1], a02 = this.values[2], a03 = this.values[3], a10 = this.values[4], a11 = this.values[5], a12 = this.values[6], a13 = this.values[7], a20 = this.values[8], a21 = this.values[9], a22 = this.values[10], a23 = this.values[11], a30 = this.values[12], a31 = this.values[13], a32 = this.values[14], a33 = this.values[15];
-
- var det00 = a00 * a11 - a01 * a10, det01 = a00 * a12 - a02 * a10, det02 = a00 * a13 - a03 * a10, det03 = a01 * a12 - a02 * a11, det04 = a01 * a13 - a03 * a11, det05 = a02 * a13 - a03 * a12, det06 = a20 * a31 - a21 * a30, det07 = a20 * a32 - a22 * a30, det08 = a20 * a33 - a23 * a30, det09 = a21 * a32 - a22 * a31, det10 = a21 * a33 - a23 * a31, det11 = a22 * a33 - a23 * a32;
-
- var det = (det00 * det11 - det01 * det10 + det02 * det09 + det03 * det08 - det04 * det07 + det05 * det06);
-
- if (!det)
- return null;
-
- det = 1.0 / det;
-
- this.values[0] = (a11 * det11 - a12 * det10 + a13 * det09) * det;
- this.values[1] = (-a01 * det11 + a02 * det10 - a03 * det09) * det;
- this.values[2] = (a31 * det05 - a32 * det04 + a33 * det03) * det;
- this.values[3] = (-a21 * det05 + a22 * det04 - a23 * det03) * det;
- this.values[4] = (-a10 * det11 + a12 * det08 - a13 * det07) * det;
- this.values[5] = (a00 * det11 - a02 * det08 + a03 * det07) * det;
- this.values[6] = (-a30 * det05 + a32 * det02 - a33 * det01) * det;
- this.values[7] = (a20 * det05 - a22 * det02 + a23 * det01) * det;
- this.values[8] = (a10 * det10 - a11 * det08 + a13 * det06) * det;
- this.values[9] = (-a00 * det10 + a01 * det08 - a03 * det06) * det;
- this.values[10] = (a30 * det04 - a31 * det02 + a33 * det00) * det;
- this.values[11] = (-a20 * det04 + a21 * det02 - a23 * det00) * det;
- this.values[12] = (-a10 * det09 + a11 * det07 - a12 * det06) * det;
- this.values[13] = (a00 * det09 - a01 * det07 + a02 * det06) * det;
- this.values[14] = (-a30 * det03 + a31 * det01 - a32 * det00) * det;
- this.values[15] = (a20 * det03 - a21 * det01 + a22 * det00) * det;
-
- return this;
- };
-
- mat4.prototype.multiply = function (matrix) {
- var a00 = this.values[0], a01 = this.values[1], a02 = this.values[2], a03 = this.values[3];
- var a10 = this.values[4], a11 = this.values[5], a12 = this.values[6], a13 = this.values[7];
- var a20 = this.values[8], a21 = this.values[9], a22 = this.values[10], a23 = this.values[11];
- var a30 = this.values[12], a31 = this.values[13], a32 = this.values[14], a33 = this.values[15];
-
- var b0 = matrix.at(0), b1 = matrix.at(1), b2 = matrix.at(2), b3 = matrix.at(3);
-
- this.values[0] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;
- this.values[1] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;
- this.values[2] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32;
- this.values[3] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;
-
- b0 = matrix.at(4);
- b1 = matrix.at(5);
- b2 = matrix.at(6);
- b3 = matrix.at(7);
-
- this.values[4] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;
- this.values[5] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;
- this.values[6] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32;
- this.values[7] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;
-
- b0 = matrix.at(8);
- b1 = matrix.at(9);
- b2 = matrix.at(10);
- b3 = matrix.at(11);
-
- this.values[8] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;
- this.values[9] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;
- this.values[10] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32;
- this.values[11] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;
-
- b0 = matrix.at(12);
- b1 = matrix.at(13);
- b2 = matrix.at(14);
- b3 = matrix.at(15);
-
- this.values[12] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;
- this.values[13] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;
- this.values[14] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32;
- this.values[15] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;
-
- return this;
- };
-
- mat4.prototype.multiplyVec3 = function (vector) {
- var x = vector.x, y = vector.y, z = vector.z;
-
- return new TSM.vec3([
- this.values[0] * x + this.values[4] * y + this.values[8] * z + this.values[12],
- this.values[1] * x + this.values[5] * y + this.values[9] * z + this.values[13],
- this.values[2] * x + this.values[6] * y + this.values[10] * z + this.values[14]
- ]);
- };
-
- mat4.prototype.multiplyVec4 = function (vector, dest) {
- if (typeof dest === "undefined") { dest = null; }
- if (!dest)
- dest = new TSM.vec4();
-
- var x = vector.x, y = vector.y, z = vector.z, w = vector.w;
-
- dest.x = this.values[0] * x + this.values[4] * y + this.values[8] * z + this.values[12] * w;
- dest.y = this.values[1] * x + this.values[5] * y + this.values[9] * z + this.values[13] * w;
- dest.z = this.values[2] * x + this.values[6] * y + this.values[10] * z + this.values[14] * w;
- dest.w = this.values[3] * x + this.values[7] * y + this.values[11] * z + this.values[15] * w;
-
- return dest;
- };
-
- mat4.prototype.toMat3 = function () {
- return new TSM.mat3([
- this.values[0],
- this.values[1],
- this.values[2],
- this.values[4],
- this.values[5],
- this.values[6],
- this.values[8],
- this.values[9],
- this.values[10]
- ]);
- };
-
- mat4.prototype.toInverseMat3 = function () {
- var a00 = this.values[0], a01 = this.values[1], a02 = this.values[2], a10 = this.values[4], a11 = this.values[5], a12 = this.values[6], a20 = this.values[8], a21 = this.values[9], a22 = this.values[10];
-
- var det01 = a22 * a11 - a12 * a21, det11 = -a22 * a10 + a12 * a20, det21 = a21 * a10 - a11 * a20;
-
- var det = a00 * det01 + a01 * det11 + a02 * det21;
-
- if (!det)
- return null;
-
- det = 1.0 / det;
-
- return new TSM.mat3([
- det01 * det,
- (-a22 * a01 + a02 * a21) * det,
- (a12 * a01 - a02 * a11) * det,
- det11 * det,
- (a22 * a00 - a02 * a20) * det,
- (-a12 * a00 + a02 * a10) * det,
- det21 * det,
- (-a21 * a00 + a01 * a20) * det,
- (a11 * a00 - a01 * a10) * det
- ]);
- };
-
- mat4.prototype.translate = function (vector) {
- var x = vector.x, y = vector.y, z = vector.z;
-
- this.values[12] += this.values[0] * x + this.values[4] * y + this.values[8] * z;
- this.values[13] += this.values[1] * x + this.values[5] * y + this.values[9] * z;
- this.values[14] += this.values[2] * x + this.values[6] * y + this.values[10] * z;
- this.values[15] += this.values[3] * x + this.values[7] * y + this.values[11] * z;
-
- return this;
- };
-
- mat4.prototype.scale = function (vector) {
- var x = vector.x, y = vector.y, z = vector.z;
-
- this.values[0] *= x;
- this.values[1] *= x;
- this.values[2] *= x;
- this.values[3] *= x;
-
- this.values[4] *= y;
- this.values[5] *= y;
- this.values[6] *= y;
- this.values[7] *= y;
-
- this.values[8] *= z;
- this.values[9] *= z;
- this.values[10] *= z;
- this.values[11] *= z;
-
- return this;
- };
-
- mat4.prototype.rotate = function (angle, axis) {
- var x = axis.x, y = axis.y, z = axis.z;
-
- var length = Math.sqrt(x * x + y * y + z * z);
-
- if (!length)
- return null;
-
- if (length !== 1) {
- length = 1 / length;
- x *= length;
- y *= length;
- z *= length;
- }
-
- var s = Math.sin(angle);
- var c = Math.cos(angle);
-
- var t = 1.0 - c;
-
- var a00 = this.values[0], a01 = this.values[1], a02 = this.values[2], a03 = this.values[3], a10 = this.values[4], a11 = this.values[5], a12 = this.values[6], a13 = this.values[7], a20 = this.values[8], a21 = this.values[9], a22 = this.values[10], a23 = this.values[11];
-
- var b00 = x * x * t + c, b01 = y * x * t + z * s, b02 = z * x * t - y * s, b10 = x * y * t - z * s, b11 = y * y * t + c, b12 = z * y * t + x * s, b20 = x * z * t + y * s, b21 = y * z * t - x * s, b22 = z * z * t + c;
-
- this.values[0] = a00 * b00 + a10 * b01 + a20 * b02;
- this.values[1] = a01 * b00 + a11 * b01 + a21 * b02;
- this.values[2] = a02 * b00 + a12 * b01 + a22 * b02;
- this.values[3] = a03 * b00 + a13 * b01 + a23 * b02;
-
- this.values[4] = a00 * b10 + a10 * b11 + a20 * b12;
- this.values[5] = a01 * b10 + a11 * b11 + a21 * b12;
- this.values[6] = a02 * b10 + a12 * b11 + a22 * b12;
- this.values[7] = a03 * b10 + a13 * b11 + a23 * b12;
-
- this.values[8] = a00 * b20 + a10 * b21 + a20 * b22;
- this.values[9] = a01 * b20 + a11 * b21 + a21 * b22;
- this.values[10] = a02 * b20 + a12 * b21 + a22 * b22;
- this.values[11] = a03 * b20 + a13 * b21 + a23 * b22;
-
- return this;
- };
-
- mat4.frustum = function (left, right, bottom, top, near, far) {
- var rl = (right - left), tb = (top - bottom), fn = (far - near);
-
- return new mat4([
- (near * 2) / rl,
- 0,
- 0,
- 0,
- 0,
- (near * 2) / tb,
- 0,
- 0,
- (right + left) / rl,
- (top + bottom) / tb,
- -(far + near) / fn,
- -1,
- 0,
- 0,
- -(far * near * 2) / fn,
- 0
- ]);
- };
-
- mat4.perspective = function (fov, aspect, near, far) {
- var top = near * Math.tan(fov * Math.PI / 360.0), right = top * aspect;
-
- return mat4.frustum(-right, right, -top, top, near, far);
- };
-
- mat4.orthographic = function (left, right, bottom, top, near, far) {
- var rl = (right - left), tb = (top - bottom), fn = (far - near);
-
- return new mat4([
- 2 / rl,
- 0,
- 0,
- 0,
- 0,
- 2 / tb,
- 0,
- 0,
- 0,
- 0,
- -2 / fn,
- 0,
- -(left + right) / rl,
- -(top + bottom) / tb,
- -(far + near) / fn,
- 1
- ]);
- };
-
- mat4.lookAt = function (position, target, up) {
- if (typeof up === "undefined") { up = TSM.vec3.up; }
- if (position.equals(target)) {
- return this.identity;
- }
-
- var z = TSM.vec3.difference(position, target).normalize();
-
- var x = TSM.vec3.cross(up, z).normalize();
- var y = TSM.vec3.cross(z, x).normalize();
-
- return new mat4([
- x.x,
- y.x,
- z.x,
- 0,
- x.y,
- y.y,
- z.y,
- 0,
- x.z,
- y.z,
- z.z,
- 0,
- -TSM.vec3.dot(x, position),
- -TSM.vec3.dot(y, position),
- -TSM.vec3.dot(z, position),
- 1
- ]);
- };
-
- mat4.product = function (m1, m2, result) {
- if (typeof result === "undefined") { result = null; }
- var a00 = m1.at(0), a01 = m1.at(1), a02 = m1.at(2), a03 = m1.at(3), a10 = m1.at(4), a11 = m1.at(5), a12 = m1.at(6), a13 = m1.at(7), a20 = m1.at(8), a21 = m1.at(9), a22 = m1.at(10), a23 = m1.at(11), a30 = m1.at(12), a31 = m1.at(13), a32 = m1.at(14), a33 = m1.at(15);
-
- var b00 = m2.at(0), b01 = m2.at(1), b02 = m2.at(2), b03 = m2.at(3), b10 = m2.at(4), b11 = m2.at(5), b12 = m2.at(6), b13 = m2.at(7), b20 = m2.at(8), b21 = m2.at(9), b22 = m2.at(10), b23 = m2.at(11), b30 = m2.at(12), b31 = m2.at(13), b32 = m2.at(14), b33 = m2.at(15);
-
- if (result) {
- result.init([
- b00 * a00 + b01 * a10 + b02 * a20 + b03 * a30,
- b00 * a01 + b01 * a11 + b02 * a21 + b03 * a31,
- b00 * a02 + b01 * a12 + b02 * a22 + b03 * a32,
- b00 * a03 + b01 * a13 + b02 * a23 + b03 * a33,
- b10 * a00 + b11 * a10 + b12 * a20 + b13 * a30,
- b10 * a01 + b11 * a11 + b12 * a21 + b13 * a31,
- b10 * a02 + b11 * a12 + b12 * a22 + b13 * a32,
- b10 * a03 + b11 * a13 + b12 * a23 + b13 * a33,
- b20 * a00 + b21 * a10 + b22 * a20 + b23 * a30,
- b20 * a01 + b21 * a11 + b22 * a21 + b23 * a31,
- b20 * a02 + b21 * a12 + b22 * a22 + b23 * a32,
- b20 * a03 + b21 * a13 + b22 * a23 + b23 * a33,
- b30 * a00 + b31 * a10 + b32 * a20 + b33 * a30,
- b30 * a01 + b31 * a11 + b32 * a21 + b33 * a31,
- b30 * a02 + b31 * a12 + b32 * a22 + b33 * a32,
- b30 * a03 + b31 * a13 + b32 * a23 + b33 * a33
- ]);
-
- return result;
- } else {
- return new mat4([
- b00 * a00 + b01 * a10 + b02 * a20 + b03 * a30,
- b00 * a01 + b01 * a11 + b02 * a21 + b03 * a31,
- b00 * a02 + b01 * a12 + b02 * a22 + b03 * a32,
- b00 * a03 + b01 * a13 + b02 * a23 + b03 * a33,
- b10 * a00 + b11 * a10 + b12 * a20 + b13 * a30,
- b10 * a01 + b11 * a11 + b12 * a21 + b13 * a31,
- b10 * a02 + b11 * a12 + b12 * a22 + b13 * a32,
- b10 * a03 + b11 * a13 + b12 * a23 + b13 * a33,
- b20 * a00 + b21 * a10 + b22 * a20 + b23 * a30,
- b20 * a01 + b21 * a11 + b22 * a21 + b23 * a31,
- b20 * a02 + b21 * a12 + b22 * a22 + b23 * a32,
- b20 * a03 + b21 * a13 + b22 * a23 + b23 * a33,
- b30 * a00 + b31 * a10 + b32 * a20 + b33 * a30,
- b30 * a01 + b31 * a11 + b32 * a21 + b33 * a31,
- b30 * a02 + b31 * a12 + b32 * a22 + b33 * a32,
- b30 * a03 + b31 * a13 + b32 * a23 + b33 * a33
- ]);
- }
- };
-
- mat4.identity = new mat4().setIdentity();
- return mat4;
- })();
- TSM.mat4 = mat4;
-})(TSM || (TSM = {}));
-/**
-* @fileoverview TSM - A TypeScript vector and matrix math library
-* @author Matthias Ferch
-* @version 0.6
-*/
-/*
-* Copyright (c) 2012 Matthias Ferch
-*
-* Project homepage: https://github.com/vexator/TSM
-*
-* This software is provided 'as-is', without any express or implied
-* warranty. In no event will the authors be held liable for any damages
-* arising from the use of this software.
-*
-* Permission is granted to anyone to use this software for any purpose,
-* including commercial applications, and to alter it and redistribute it
-* freely, subject to the following restrictions:
-*
-* 1. The origin of this software must not be misrepresented; you must not
-* claim that you wrote the original software. If you use this software
-* in a product, an acknowledgment in the product documentation would be
-* appreciated but is not required.
-*
-* 2. Altered source versions must be plainly marked as such, and must not
-* be misrepresented as being the original software.
-*
-* 3. This notice may not be removed or altered from any source
-* distribution.
-*/
-///
-var TSM;
-(function (TSM) {
- var quat = (function () {
- function quat(values) {
- if (typeof values === "undefined") { values = null; }
- this.values = new Float32Array(4);
- if (values) {
- this.xyzw = values;
- }
- }
- Object.defineProperty(quat.prototype, "x", {
- get: function () {
- return this.values[0];
- },
- set: function (value) {
- this.values[0] = value;
- },
- enumerable: true,
- configurable: true
- });
-
- Object.defineProperty(quat.prototype, "y", {
- get: function () {
- return this.values[1];
- },
- set: function (value) {
- this.values[1] = value;
- },
- enumerable: true,
- configurable: true
- });
-
- Object.defineProperty(quat.prototype, "z", {
- get: function () {
- return this.values[2];
- },
- set: function (value) {
- this.values[2] = value;
- },
- enumerable: true,
- configurable: true
- });
-
- Object.defineProperty(quat.prototype, "w", {
- get: function () {
- return this.values[3];
- },
- set: function (value) {
- this.values[3] = value;
- },
- enumerable: true,
- configurable: true
- });
-
- Object.defineProperty(quat.prototype, "xy", {
- get: function () {
- return [
- this.values[0],
- this.values[1]
- ];
- },
- set: function (values) {
- this.values[0] = values[0];
- this.values[1] = values[1];
- },
- enumerable: true,
- configurable: true
- });
-
- Object.defineProperty(quat.prototype, "xyz", {
- get: function () {
- return [
- this.values[0],
- this.values[1],
- this.values[2]
- ];
- },
- set: function (values) {
- this.values[0] = values[0];
- this.values[1] = values[1];
- this.values[2] = values[2];
- },
- enumerable: true,
- configurable: true
- });
-
- Object.defineProperty(quat.prototype, "xyzw", {
- get: function () {
- return [
- this.values[0],
- this.values[1],
- this.values[2],
- this.values[3]
- ];
- },
- set: function (values) {
- this.values[0] = values[0];
- this.values[1] = values[1];
- this.values[2] = values[2];
- this.values[3] = values[3];
- },
- enumerable: true,
- configurable: true
- });
-
-
-
-
-
-
-
-
- quat.prototype.at = function (index) {
- return this.values[index];
- };
-
- quat.prototype.reset = function () {
- for (var i = 0; i < 4; i++) {
- this.values[i] = 0;
- }
- };
-
- quat.prototype.copy = function (dest) {
- if (typeof dest === "undefined") { dest = null; }
- if (!dest)
- dest = new quat();
-
- for (var i = 0; i < 4; i++) {
- dest.values[i] = this.values[i];
- }
-
- return dest;
- };
-
- quat.prototype.roll = function () {
- var x = this.x, y = this.y, z = this.z, w = this.w;
-
- return Math.atan2(2.0 * (x * y + w * z), w * w + x * x - y * y - z * z);
- };
-
- quat.prototype.pitch = function () {
- var x = this.x, y = this.y, z = this.z, w = this.w;
-
- return Math.atan2(2.0 * (y * z + w * x), w * w - x * x - y * y + z * z);
- };
-
- quat.prototype.yaw = function () {
- return Math.asin(2.0 * (this.x * this.z - this.w * this.y));
- };
-
- quat.prototype.equals = function (vector, threshold) {
- if (typeof threshold === "undefined") { threshold = EPSILON; }
- for (var i = 0; i < 4; i++) {
- if (Math.abs(this.values[i] - vector.at(i)) > threshold)
- return false;
- }
-
- return true;
- };
-
- quat.prototype.setIdentity = function () {
- this.x = 0;
- this.y = 0;
- this.z = 0;
- this.w = 1;
-
- return this;
- };
-
- quat.prototype.calculateW = function () {
- var x = this.x, y = this.y, z = this.z;
-
- this.w = -(Math.sqrt(Math.abs(1.0 - x * x - y * y - z * z)));
-
- return this;
- };
-
- quat.dot = function (q1, q2) {
- return q1.x * q2.x + q1.y * q2.y + q1.z * q2.z + q1.w * q2.w;
- };
-
- quat.prototype.inverse = function () {
- var dot = quat.dot(this, this);
-
- if (!dot) {
- this.xyzw = [0, 0, 0, 0];
-
- return this;
- }
-
- var invDot = dot ? 1.0 / dot : 0;
-
- this.x *= -invDot;
- this.y *= -invDot;
- this.z *= -invDot;
- this.w *= invDot;
-
- return this;
- };
-
- quat.prototype.conjugate = function () {
- this.values[0] *= -1;
- this.values[1] *= -1;
- this.values[2] *= -1;
-
- return this;
- };
-
- quat.prototype.length = function () {
- var x = this.x, y = this.y, z = this.z, w = this.w;
-
- return Math.sqrt(x * x + y * y + z * z + w * w);
- };
-
- quat.prototype.normalize = function (dest) {
- if (typeof dest === "undefined") { dest = null; }
- if (!dest)
- dest = this;
-
- var x = this.x, y = this.y, z = this.z, w = this.w;
-
- var length = Math.sqrt(x * x + y * y + z * z + w * w);
-
- if (!length) {
- dest.x = 0;
- dest.y = 0;
- dest.z = 0;
- dest.w = 0;
-
- return dest;
- }
-
- length = 1 / length;
-
- dest.x = x * length;
- dest.y = y * length;
- dest.z = z * length;
- dest.w = w * length;
-
- return dest;
- };
-
- quat.prototype.add = function (other) {
- for (var i = 0; i < 4; i++) {
- this.values[i] += other.at(i);
- }
-
- return this;
- };
-
- quat.prototype.multiply = function (other) {
- var q1x = this.values[0], q1y = this.values[1], q1z = this.values[2], q1w = this.values[3];
-
- var q2x = other.x, q2y = other.y, q2z = other.z, q2w = other.w;
-
- this.x = q1x * q2w + q1w * q2x + q1y * q2z - q1z * q2y;
- this.y = q1y * q2w + q1w * q2y + q1z * q2x - q1x * q2z;
- this.z = q1z * q2w + q1w * q2z + q1x * q2y - q1y * q2x;
- this.w = q1w * q2w - q1x * q2x - q1y * q2y - q1z * q2z;
-
- return this;
- };
-
- quat.prototype.multiplyVec3 = function (vector, dest) {
- if (typeof dest === "undefined") { dest = null; }
- if (!dest)
- dest = new TSM.vec3();
-
- var x = vector.x, y = vector.y, z = vector.z;
-
- var qx = this.x, qy = this.y, qz = this.z, qw = this.w;
-
- var ix = qw * x + qy * z - qz * y, iy = qw * y + qz * x - qx * z, iz = qw * z + qx * y - qy * x, iw = -qx * x - qy * y - qz * z;
-
- dest.x = ix * qw + iw * -qx + iy * -qz - iz * -qy;
- dest.y = iy * qw + iw * -qy + iz * -qx - ix * -qz;
- dest.z = iz * qw + iw * -qz + ix * -qy - iy * -qx;
-
- return dest;
- };
-
- quat.prototype.toMat3 = function (dest) {
- if (typeof dest === "undefined") { dest = null; }
- if (!dest)
- dest = new TSM.mat3();
-
- var x = this.x, y = this.y, z = this.z, w = this.w;
-
- var x2 = x + x, y2 = y + y, z2 = z + z;
-
- var xx = x * x2, xy = x * y2, xz = x * z2, yy = y * y2, yz = y * z2, zz = z * z2, wx = w * x2, wy = w * y2, wz = w * z2;
-
- dest.init([
- 1 - (yy + zz),
- xy + wz,
- xz - wy,
- xy - wz,
- 1 - (xx + zz),
- yz + wx,
- xz + wy,
- yz - wx,
- 1 - (xx + yy)
- ]);
-
- return dest;
- };
-
- quat.prototype.toMat4 = function (dest) {
- if (typeof dest === "undefined") { dest = null; }
- if (!dest)
- dest = new TSM.mat4();
-
- var x = this.x, y = this.y, z = this.z, w = this.w, x2 = x + x, y2 = y + y, z2 = z + z, xx = x * x2, xy = x * y2, xz = x * z2, yy = y * y2, yz = y * z2, zz = z * z2, wx = w * x2, wy = w * y2, wz = w * z2;
-
- dest.init([
- 1 - (yy + zz),
- xy + wz,
- xz - wy,
- 0,
- xy - wz,
- 1 - (xx + zz),
- yz + wx,
- 0,
- xz + wy,
- yz - wx,
- 1 - (xx + yy),
- 0,
- 0,
- 0,
- 0,
- 1
- ]);
-
- return dest;
- };
-
- quat.sum = function (q1, q2, dest) {
- if (typeof dest === "undefined") { dest = null; }
- if (!dest)
- dest = new quat();
-
- dest.x = q1.x + q2.x;
- dest.y = q1.y + q2.y;
- dest.z = q1.z + q2.z;
- dest.w = q1.w + q2.w;
-
- return dest;
- };
-
- quat.product = function (q1, q2, dest) {
- if (typeof dest === "undefined") { dest = null; }
- if (!dest)
- dest = new quat();
-
- var q1x = q1.x, q1y = q1.y, q1z = q1.z, q1w = q1.w, q2x = q2.x, q2y = q2.y, q2z = q2.z, q2w = q2.w;
-
- dest.x = q1x * q2w + q1w * q2x + q1y * q2z - q1z * q2y;
- dest.y = q1y * q2w + q1w * q2y + q1z * q2x - q1x * q2z;
- dest.z = q1z * q2w + q1w * q2z + q1x * q2y - q1y * q2x;
- dest.w = q1w * q2w - q1x * q2x - q1y * q2y - q1z * q2z;
-
- return dest;
- };
-
- quat.cross = function (q1, q2, dest) {
- if (typeof dest === "undefined") { dest = null; }
- if (!dest)
- dest = new quat();
-
- var q1x = q1.x, q1y = q1.y, q1z = q1.z, q1w = q1.w, q2x = q2.x, q2y = q2.y, q2z = q2.z, q2w = q2.w;
-
- dest.x = q1w * q2z + q1z * q2w + q1x * q2y - q1y * q2x;
- dest.y = q1w * q2w - q1x * q2x - q1y * q2y - q1z * q2z;
- dest.z = q1w * q2x + q1x * q2w + q1y * q2z - q1z * q2y;
- dest.w = q1w * q2y + q1y * q2w + q1z * q2x - q1x * q2z;
-
- return dest;
- };
-
- quat.shortMix = function (q1, q2, time, dest) {
- if (typeof dest === "undefined") { dest = null; }
- if (!dest)
- dest = new quat();
-
- if (time <= 0.0) {
- dest.xyzw = q1.xyzw;
-
- return dest;
- } else if (time >= 1.0) {
- dest.xyzw = q2.xyzw;
-
- return dest;
- }
-
- var cos = quat.dot(q1, q2), q2a = q2.copy();
-
- if (cos < 0.0) {
- q2a.inverse();
- cos = -cos;
- }
-
- var k0, k1;
-
- if (cos > 0.9999) {
- k0 = 1 - time;
- k1 = 0 + time;
- } else {
- var sin = Math.sqrt(1 - cos * cos);
- var angle = Math.atan2(sin, cos);
-
- var oneOverSin = 1 / sin;
-
- k0 = Math.sin((1 - time) * angle) * oneOverSin;
- k1 = Math.sin((0 + time) * angle) * oneOverSin;
- }
-
- dest.x = k0 * q1.x + k1 * q2a.x;
- dest.y = k0 * q1.y + k1 * q2a.y;
- dest.z = k0 * q1.z + k1 * q2a.z;
- dest.w = k0 * q1.w + k1 * q2a.w;
-
- return dest;
- };
-
- quat.mix = function (q1, q2, time, dest) {
- if (typeof dest === "undefined") { dest = null; }
- if (!dest)
- dest = new quat();
-
- var cosHalfTheta = q1.x * q2.x + q1.y * q2.y + q1.z * q2.z + q1.w * q2.w;
-
- if (Math.abs(cosHalfTheta) >= 1.0) {
- dest.xyzw = q1.xyzw;
-
- return dest;
- }
-
- var halfTheta = Math.acos(cosHalfTheta), sinHalfTheta = Math.sqrt(1.0 - cosHalfTheta * cosHalfTheta);
-
- if (Math.abs(sinHalfTheta) < 0.001) {
- dest.x = q1.x * 0.5 + q2.x * 0.5;
- dest.y = q1.y * 0.5 + q2.y * 0.5;
- dest.z = q1.z * 0.5 + q2.z * 0.5;
- dest.w = q1.w * 0.5 + q2.w * 0.5;
-
- return dest;
- }
-
- var ratioA = Math.sin((1 - time) * halfTheta) / sinHalfTheta, ratioB = Math.sin(time * halfTheta) / sinHalfTheta;
-
- dest.x = q1.x * ratioA + q2.x * ratioB;
- dest.y = q1.y * ratioA + q2.y * ratioB;
- dest.z = q1.z * ratioA + q2.z * ratioB;
- dest.w = q1.w * ratioA + q2.w * ratioB;
-
- return dest;
- };
-
- quat.fromAxis = function (axis, angle, dest) {
- if (typeof dest === "undefined") { dest = null; }
- if (!dest)
- dest = new quat();
-
- angle *= 0.5;
- var sin = Math.sin(angle);
-
- dest.x = axis.x * sin;
- dest.y = axis.y * sin;
- dest.z = axis.z * sin;
- dest.w = Math.cos(angle);
-
- return dest;
- };
-
- quat.identity = new quat().setIdentity();
- return quat;
- })();
- TSM.quat = quat;
-})(TSM || (TSM = {}));
-//# sourceMappingURL=tsm-0.7.js.map
diff --git a/Example/Example.csproj b/Example/Example.csproj
deleted file mode 100644
index 6163a57..0000000
--- a/Example/Example.csproj
+++ /dev/null
@@ -1,65 +0,0 @@
-
-
-
-
- Debug
- {3A2CFE47-DF00-4C73-BBA2-EE58504551F2}
- {349c5851-65df-11da-9384-00065b846f21};{fae04ec0-301f-11d3-bf4b-00c04f79efbc}
- Library
- bin
- v4.5
- full
- true
- 1.1
- true
-
-
-
-
-
-
-
-
-
-
- SpriteGL.d.ts
-
-
-
-
- 12.0
-
-
- Example
-
-
-
-
-
-
-
- True
- True
- 50668
- /
- http://localhost:50668/
- False
- False
-
-
- False
-
-
-
-
-
- True
- False
- False
-
-
- true
- false
-
-
-
\ No newline at end of file
diff --git a/Example/index.html b/Example/index.html
deleted file mode 100644
index 4053fa6..0000000
--- a/Example/index.html
+++ /dev/null
@@ -1,19 +0,0 @@
-
-
-
-
-
- SpriteJS Example
-
-
-
- SpriteJS Example
-
-
-
-
-
-
-
diff --git a/README.md b/README.md
index 5a7520a..de1a718 100644
--- a/README.md
+++ b/README.md
@@ -1,5 +1,28 @@
# SpriteGL
-Simple library for displaying sprites
+Simple library for displaying sprites.
-Example use in ```./Example/app.ts```
+## Installation
+
+Install from GitHub.
+
+```sh
+npm install --save https://github.com/krtr/SpriteGL
+
+# For Yarn use the command below.
+yarn add https://github.com/krtr/SpriteGL
+```
+
+## Running demo app
+
+To execute demo app you have to install dependencies and run `start` script.
+
+```sh
+# Installs library dependencies.
+npm install
+
+# Bundle and starts demo app.
+npm run start
+```
+
+Demo app will be at http://localhost:1234.
diff --git a/SpriteGL.sln b/SpriteGL.sln
deleted file mode 100644
index ab818f0..0000000
--- a/SpriteGL.sln
+++ /dev/null
@@ -1,34 +0,0 @@
-
-Microsoft Visual Studio Solution File, Format Version 12.00
-# Visual Studio 2013
-VisualStudioVersion = 12.0.31101.0
-MinimumVisualStudioVersion = 10.0.40219.1
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SpriteGL", "SpriteGL\SpriteGL.csproj", "{45F195DA-75B3-46D7-8329-A461AC171EA9}"
-EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{BF54AC41-5037-4F9C-9FF6-17CE56F92D94}"
- ProjectSection(SolutionItems) = preProject
- gulpfile.js = gulpfile.js
- package.json = package.json
- EndProjectSection
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Example", "Example\Example.csproj", "{3A2CFE47-DF00-4C73-BBA2-EE58504551F2}"
-EndProject
-Global
- GlobalSection(SolutionConfigurationPlatforms) = preSolution
- Debug|Any CPU = Debug|Any CPU
- Release|Any CPU = Release|Any CPU
- EndGlobalSection
- GlobalSection(ProjectConfigurationPlatforms) = postSolution
- {45F195DA-75B3-46D7-8329-A461AC171EA9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {45F195DA-75B3-46D7-8329-A461AC171EA9}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {45F195DA-75B3-46D7-8329-A461AC171EA9}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {45F195DA-75B3-46D7-8329-A461AC171EA9}.Release|Any CPU.Build.0 = Release|Any CPU
- {3A2CFE47-DF00-4C73-BBA2-EE58504551F2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {3A2CFE47-DF00-4C73-BBA2-EE58504551F2}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {3A2CFE47-DF00-4C73-BBA2-EE58504551F2}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {3A2CFE47-DF00-4C73-BBA2-EE58504551F2}.Release|Any CPU.Build.0 = Release|Any CPU
- EndGlobalSection
- GlobalSection(SolutionProperties) = preSolution
- HideSolutionNode = FALSE
- EndGlobalSection
-EndGlobal
diff --git a/SpriteGL/SpriteGL.csproj b/SpriteGL/SpriteGL.csproj
deleted file mode 100644
index 34f642b..0000000
--- a/SpriteGL/SpriteGL.csproj
+++ /dev/null
@@ -1,65 +0,0 @@
-
-
-
-
- Debug
- {45F195DA-75B3-46D7-8329-A461AC171EA9}
- {349c5851-65df-11da-9384-00065b846f21};{fae04ec0-301f-11d3-bf4b-00c04f79efbc}
- Library
- bin
- v4.5
- full
- true
- 1.1
- true
-
-
-
-
-
-
-
- tsm-0.7.d.ts
-
-
-
-
-
-
-
- 12.0
-
-
- SpriteGL
-
-
-
-
-
-
-
- True
- True
- 63111
- /
- http://localhost:63111/
- False
- False
-
-
- False
-
-
-
-
-
- True
- False
- False
-
-
- true
- false
-
-
-
\ No newline at end of file
diff --git a/SpriteGL/shader.ts b/SpriteGL/shader.ts
deleted file mode 100644
index 211eec1..0000000
--- a/SpriteGL/shader.ts
+++ /dev/null
@@ -1,79 +0,0 @@
-module SpriteGL {
-
- export class Shader {
- glProgram: WebGLProgram;
- VertexPosAttribute: number;
- TexCoordAttribute: number;
- private TexSampleUniform: WebGLUniformLocation;
- private MatUniform: WebGLUniformLocation;
- private CameraPosUniform: WebGLUniformLocation;
- private gl: WebGLRenderingContext = null;
-
- constructor(gl: WebGLRenderingContext) {
- this.gl = gl;
- this.glProgram = this.MakeProgram(gl);
- this.VertexPosAttribute = gl.getAttribLocation(this.glProgram, "aVertexPosition");
- this.TexCoordAttribute = gl.getAttribLocation(this.glProgram, "aTexCoord");
- this.TexSampleUniform = gl.getUniformLocation(this.glProgram, "sampler2d");
- this.MatUniform = gl.getUniformLocation(this.glProgram, "uProjectionView");
- this.CameraPosUniform = gl.getUniformLocation(this.glProgram, "uCameraPos");
-
- }
-
- public UseProgram() {
- this.gl.useProgram(this.glProgram);
- this.gl.uniform1i(this.TexSampleUniform, 0);
- }
-
- public UpdatePosition(x: number, y: number) {
- this.gl.uniform2f(this.CameraPosUniform, x, y);
- }
-
- private MakeProgram(gl: WebGLRenderingContext): WebGLProgram {
- var vertexShader = this.CompileShader(gl, Shader.defaultVertexShaderSrc, gl.VERTEX_SHADER);
- var fragmentShader = this.CompileShader(gl, Shader.defaultFragmentShaderSrc, gl.FRAGMENT_SHADER);
-
- var glProgram = gl.createProgram();
- gl.attachShader(glProgram, vertexShader);
- gl.attachShader(glProgram, fragmentShader);
- gl.linkProgram(glProgram);
-
- return glProgram;
- }
-
- private CompileShader(gl: WebGLRenderingContext, src: string, type) {
- var Shader = gl.createShader(type);
- gl.shaderSource(Shader, src);
- gl.compileShader(Shader);
-
- if (!gl.getShaderParameter(Shader, gl.COMPILE_STATUS)) {
- alert(gl.getShaderInfoLog(Shader));
- }
- return Shader;
- }
-
- public updateMatrix(mat: TSM.mat4) {
- this.gl.uniformMatrix4fv(this.MatUniform, false, mat.all());
- }
-
- private static defaultVertexShaderSrc = [
- "attribute vec3 aVertexPosition;",
- "attribute vec2 aTexCoord;",
- "uniform mat4 uProjectionView;",
- "uniform vec2 uCameraPos;",
- "varying vec2 vtexCoord;",
- "void main(void) {",
- " vtexCoord = aTexCoord;",
- " gl_Position = vec4(aVertexPosition.x - uCameraPos.x, aVertexPosition.y - uCameraPos.y, aVertexPosition.z, 1.0) * uProjectionView;",
- "}"].join("\n");
-
- private static defaultFragmentShaderSrc = [
- "precision mediump float;",
- "uniform sampler2D sampler2d;",
- "varying vec2 vtexCoord;",
- "void main(void) {",
- " gl_FragColor = texture2D(sampler2d, vec2(vtexCoord.s,vtexCoord.t));",
- " if(gl_FragColor.a < 0.5) discard;",
- "}"].join("\n");
- }
-}
diff --git a/SpriteGL/spriteRenderer.ts b/SpriteGL/spriteRenderer.ts
deleted file mode 100644
index f838af4..0000000
--- a/SpriteGL/spriteRenderer.ts
+++ /dev/null
@@ -1,97 +0,0 @@
-module SpriteGL {
- export class SpriteRenderer {
- private gl: WebGLRenderingContext;
- private Shader: Shader;
- private vbo: VBO;
- private texture: WebGLTexture;
- private SpriteSize: number;
- private Text: TextDrawer;
-
- constructor(webglContext: WebGLRenderingContext, Image: HTMLImageElement, Filtering = SpriteRenderer.TextureFilteringLinear) {
- this.gl = webglContext;
- this.vbo = new VBO(this.gl);
- this.Shader = new Shader(this.gl);
- this.Text = new TextDrawer(this.gl);
- this.Shader.UseProgram();
- this.CreateTexture(Image, Filtering);
- this.vbo.SetupForDraw(this.Shader.VertexPosAttribute, this.Shader.TexCoordAttribute, Image.width);
-
- this.gl.clearColor(0.0, 0.0, 0.0, 1.0);
- this.gl.blendFunc(this.gl.SRC_ALPHA, this.gl.ONE_MINUS_SRC_ALPHA);
- this.gl.enable(this.gl.BLEND);
- this.SetHight(0.0);
- this.gl.enable(this.gl.DEPTH_TEST);
- this.gl.depthFunc(this.gl.LEQUAL);
- }
-
- RenderAll() {
- this.gl.clear(this.gl.COLOR_BUFFER_BIT);
- this.gl.bindTexture(this.gl.TEXTURE_2D, this.texture);
- this.vbo.RenderAllSpr();
- this.gl.bindTexture(this.gl.TEXTURE_2D, this.Text.texture);
- this.vbo.RenderAllTxt();
- }
-
- UpdateViewPort(width: number, height: number) {
- this.gl.viewport(0, 0, width, height);
- var projmatrix = TSM.mat4.orthographic(-width / 2, width / 2, height / 2, -height / 2, 0.1, 2.0);
- var cameramatrix = TSM.mat4.lookAt(new TSM.vec3([0.0, 0.0, 1.0]), new TSM.vec3([0.0, 0.0, 0.0]), new TSM.vec3([0.0, 1.0, 0.0]));
- this.Shader.updateMatrix(projmatrix.multiply(cameramatrix));
- }
-
- DrawSpr(AtlasX: number, AtlasY: number, AtlasWidth, AtlasHeigh, ScreenX: number, ScreenY: number, ScreenWidth: number, ScreenHeight) {
- this.vbo.DrawSpr(AtlasX, AtlasY, AtlasWidth, AtlasHeigh, ScreenX, ScreenY, ScreenWidth, ScreenHeight);
- }
-
- SetHight(hight: number) {
- this.vbo.SetupHeight(hight);
- }
-
- PrepareTxt(str: string, color: string, fontSize: number, outLine = false) {
- return this.Text.PrepareTxt(str, color, fontSize, outLine);
- }
-
- DisposeTxt(txtObj) {
- this.Text.DisposeTxt(txtObj);
- }
-
- DrawTxt(txtObj, PosX: number, PosY: number) {
- this.vbo.DrawTxt(txtObj.Pos.x, txtObj.Pos.y, txtObj.Size.Width, txtObj.Size.Height, PosX, PosY, txtObj.Size.Width, txtObj.Size.Height);
- }
-
-
- UpdateCamera(x: number, y: number) {
- this.Shader.UpdatePosition(x, y);
- }
-
- private CreateTexture(image: HTMLImageElement, filtering: number) {
- this.texture = this.gl.createTexture();
- this.gl.bindTexture(this.gl.TEXTURE_2D, this.texture);
- this.gl.texImage2D(this.gl.TEXTURE_2D, 0, this.gl.RGBA, this.gl.RGBA, this.gl.UNSIGNED_BYTE, image);
- if (filtering == SpriteRenderer.TextureFilteringLinear) {
- this.gl.texParameteri(this.gl.TEXTURE_2D, this.gl.TEXTURE_MAG_FILTER, this.gl.LINEAR);
- this.gl.texParameteri(this.gl.TEXTURE_2D, this.gl.TEXTURE_MIN_FILTER, this.gl.LINEAR);
- } else {
- this.gl.texParameteri(this.gl.TEXTURE_2D, this.gl.TEXTURE_MAG_FILTER, this.gl.NEAREST);
- this.gl.texParameteri(this.gl.TEXTURE_2D, this.gl.TEXTURE_MIN_FILTER, this.gl.NEAREST);
- }
- }
-
- static fromCanvas(canvas: HTMLCanvasElement, Image: HTMLImageElement, Filtering = SpriteRenderer.TextureFilteringLinear): SpriteRenderer {
- try {
- var ctx = canvas.getContext("webgl") || canvas.getContext("experimental-webgl");
- } catch (e) {
- console.log("Error with WebGL context initialization");
- return null;
- }
- var newRenderer = new SpriteRenderer(ctx, Image, Filtering);
- newRenderer.UpdateViewPort(canvas.width, canvas.height);
- return newRenderer;
- }
-
-
- static TextureFilteringLinear = 0;
- static TextureFilteringNearest = 1;
- }
-
-}
\ No newline at end of file
diff --git a/SpriteGL/vbo.ts b/SpriteGL/vbo.ts
deleted file mode 100644
index 9463c88..0000000
--- a/SpriteGL/vbo.ts
+++ /dev/null
@@ -1,78 +0,0 @@
-module SpriteGL {
-
- export class VBO {
- verticlesBuffer: WebGLBuffer;
- private sprVerts = [];
- private txtVerts = [];
- private AtlasSize = 1;
- private gl: WebGLRenderingContext = null;
- private hight: number;
-
- constructor(gl: WebGLRenderingContext) {
- this.gl = gl;
- this.verticlesBuffer = gl.createBuffer();
- gl.bindBuffer(gl.ARRAY_BUFFER, this.verticlesBuffer);
- }
-
- SetupHeight(hight: number) {
- this.hight = hight;
- }
-
- SetupForDraw(vertexPositionAttr: number, textureCoordAttr: number, AtlasSize: number) {
- this.gl.enableVertexAttribArray(vertexPositionAttr);
- this.gl.vertexAttribPointer(vertexPositionAttr, 3, this.gl.FLOAT, false, 20, 0);
-
- this.gl.enableVertexAttribArray(textureCoordAttr);
- this.gl.vertexAttribPointer(textureCoordAttr, 2, this.gl.FLOAT, false, 20, 12);
- this.gl.bufferData(this.gl.ARRAY_BUFFER, new Float32Array(15*10000), this.gl.STREAM_DRAW);
- this.AtlasSize = AtlasSize;
- }
-
- RenderAllSpr() {
- this.gl.bufferSubData(this.gl.ARRAY_BUFFER, 0, new Float32Array(this.sprVerts));
- this.gl.drawArrays(this.gl.TRIANGLES, 0, this.sprVerts.length / 5);
- this.sprVerts = []
- }
-
- RenderAllTxt() {
- this.gl.bufferSubData(this.gl.ARRAY_BUFFER, 0, new Float32Array(this.txtVerts));
- this.gl.drawArrays(this.gl.TRIANGLES, 0, this.txtVerts.length / 5);
- this.txtVerts = []
- }
-
- DrawSpr(AtlasX: number, AtlasY: number, AtlasWidth, AtlasHeigh, ScreenX: number, ScreenY: number, ScreenWidth: number, ScreenHeight) {
- for (var i = 0; i < VBO.defaultVerts.length; i += 2) {
- //Pos
- this.sprVerts.push(VBO.defaultVerts[i] * ScreenWidth + ScreenX | 0);
- this.sprVerts.push(VBO.defaultVerts[i + 1] * ScreenHeight + ScreenY | 0);
- this.sprVerts.push(this.hight);
- //Tex
- this.sprVerts.push(VBO.defaultVerts[i] * (AtlasWidth /this.AtlasSize) + (AtlasX / this.AtlasSize));
- this.sprVerts.push(VBO.defaultVerts[i + 1] * (AtlasHeigh / this.AtlasSize) + (AtlasY / this.AtlasSize));
- }
- }
-
- DrawTxt(AtlasX: number, AtlasY: number, AtlasWidth, AtlasHeigh, ScreenX: number, ScreenY: number, ScreenWidth: number, ScreenHeight) {
- for (var i = 0; i < VBO.defaultVerts.length; i += 2) {
- //Pos
- this.txtVerts.push(VBO.defaultVerts[i] * ScreenWidth + ScreenX | 0);
- this.txtVerts.push(VBO.defaultVerts[i + 1] * ScreenHeight + ScreenY | 0);
- this.txtVerts.push(this.hight);
- //Tex
- this.txtVerts.push(VBO.defaultVerts[i] * (AtlasWidth / 1024) + (AtlasX / 1024));
- this.txtVerts.push(VBO.defaultVerts[i + 1] * (AtlasHeigh / 1024) + (AtlasY / 1024));
- }
- }
-
- private static defaultVerts =
- [ //Left
- 0.0, 1.0, // 1
- 1.0, 0.0, // 2
- 0.0, 0.0, // 3
- //Right
- 0.0, 1.0, // 1
- 1.0, 1.0, // 4
- 1.0, 0.0 // 2
- ];
- }
-}
diff --git a/bili.config.js b/bili.config.js
new file mode 100644
index 0000000..0fb6b81
--- /dev/null
+++ b/bili.config.js
@@ -0,0 +1,11 @@
+"use strict";
+
+module.exports = {
+ input: "src/index.ts",
+ banner: true,
+ format: ["es", "cjs", "umd", "umd-min"],
+ "typescript2": {
+ clean: true,
+ useTsconfigDeclarationDir: true
+ }
+};
diff --git a/bin/SpriteGL.d.ts b/bin/SpriteGL.d.ts
deleted file mode 100644
index ce5e16e..0000000
--- a/bin/SpriteGL.d.ts
+++ /dev/null
@@ -1,16 +0,0 @@
-declare module SpriteGL {
-class SpriteRenderer {
- constructor(webglContext: WebGLRenderingContext, Image: HTMLImageElement, Filtering?: number);
- RenderAll(): void;
- UpdateViewPort(width: number, height: number): void;
- DrawSpr(AtlasX: number, AtlasY: number, AtlasWidth: any, AtlasHeigh: any, ScreenX: number, ScreenY: number, ScreenWidth: number, ScreenHeight: any): void;
- SetHight(hight: number): void;
- PrepareTxt(str: string, color: string, fontSize: number, outLine?: boolean): any;
- DisposeTxt(txtObj: any): void;
- DrawTxt(txtObj: any, PosX: number, PosY: number): void;
- UpdateCamera(x: number, y: number): void;
- static fromCanvas(canvas: HTMLCanvasElement, Image: HTMLImageElement, Filtering?: number): SpriteRenderer;
- static TextureFilteringLinear: number;
- static TextureFilteringNearest: number;
- }
- }
\ No newline at end of file
diff --git a/bin/SpriteGL.js b/bin/SpriteGL.js
deleted file mode 100644
index 54f169f..0000000
--- a/bin/SpriteGL.js
+++ /dev/null
@@ -1,3187 +0,0 @@
-/**
-* @fileoverview TSM - A TypeScript vector and matrix math library
-* @author Matthias Ferch
-* @version 0.6
-*/
-/*
-* Copyright (c) 2012 Matthias Ferch
-*
-* Project homepage: https://github.com/vexator/TSM
-*
-* This software is provided 'as-is', without any express or implied
-* warranty. In no event will the authors be held liable for any damages
-* arising from the use of this software.
-*
-* Permission is granted to anyone to use this software for any purpose,
-* including commercial applications, and to alter it and redistribute it
-* freely, subject to the following restrictions:
-*
-* 1. The origin of this software must not be misrepresented; you must not
-* claim that you wrote the original software. If you use this software
-* in a product, an acknowledgment in the product documentation would be
-* appreciated but is not required.
-*
-* 2. Altered source versions must be plainly marked as such, and must not
-* be misrepresented as being the original software.
-*
-* 3. This notice may not be removed or altered from any source
-* distribution.
-*/
-var EPSILON = 0.000001;
-/*
-* Copyright (c) 2012 Matthias Ferch
-*
-* Project homepage: https://github.com/vexator/TSM
-*
-* This software is provided 'as-is', without any express or implied
-* warranty. In no event will the authors be held liable for any damages
-* arising from the use of this software.
-*
-* Permission is granted to anyone to use this software for any purpose,
-* including commercial applications, and to alter it and redistribute it
-* freely, subject to the following restrictions:
-*
-* 1. The origin of this software must not be misrepresented; you must not
-* claim that you wrote the original software. If you use this software
-* in a product, an acknowledgment in the product documentation would be
-* appreciated but is not required.
-*
-* 2. Altered source versions must be plainly marked as such, and must not
-* be misrepresented as being the original software.
-*
-* 3. This notice may not be removed or altered from any source
-* distribution.
-*/
-///
-var TSM;
-(function (TSM) {
- var vec2 = (function () {
- function vec2(values) {
- if (typeof values === "undefined") { values = null; }
- this.values = new Float32Array(2);
- if (values) {
- this.xy = values;
- }
- }
- Object.defineProperty(vec2.prototype, "x", {
- get: function () {
- return this.values[0];
- },
- set: function (value) {
- this.values[0] = value;
- },
- enumerable: true,
- configurable: true
- });
-
- Object.defineProperty(vec2.prototype, "y", {
- get: function () {
- return this.values[1];
- },
- set: function (value) {
- this.values[1] = value;
- },
- enumerable: true,
- configurable: true
- });
-
- Object.defineProperty(vec2.prototype, "xy", {
- get: function () {
- return [
- this.values[0],
- this.values[1]
- ];
- },
- set: function (values) {
- this.values[0] = values[0];
- this.values[1] = values[1];
- },
- enumerable: true,
- configurable: true
- });
-
-
-
-
- vec2.prototype.at = function (index) {
- return this.values[index];
- };
-
- vec2.prototype.reset = function () {
- this.x = 0;
- this.y = 0;
- };
-
- vec2.prototype.copy = function (dest) {
- if (typeof dest === "undefined") { dest = null; }
- if (!dest)
- dest = new vec2();
-
- dest.x = this.x;
- dest.y = this.y;
-
- return dest;
- };
-
- vec2.prototype.negate = function (dest) {
- if (typeof dest === "undefined") { dest = null; }
- if (!dest)
- dest = this;
-
- dest.x = -this.x;
- dest.y = -this.y;
-
- return dest;
- };
-
- vec2.prototype.equals = function (vector, threshold) {
- if (typeof threshold === "undefined") { threshold = EPSILON; }
- if (Math.abs(this.x - vector.x) > threshold)
- return false;
-
- if (Math.abs(this.y - vector.y) > threshold)
- return false;
-
- return true;
- };
-
- vec2.prototype.length = function () {
- return Math.sqrt(this.squaredLength());
- };
-
- vec2.prototype.squaredLength = function () {
- var x = this.x, y = this.y;
-
- return (x * x + y * y);
- };
-
- vec2.prototype.add = function (vector) {
- this.x += vector.x;
- this.y += vector.y;
-
- return this;
- };
-
- vec2.prototype.subtract = function (vector) {
- this.x -= vector.x;
- this.y -= vector.y;
-
- return this;
- };
-
- vec2.prototype.multiply = function (vector) {
- this.x *= vector.x;
- this.y *= vector.y;
-
- return this;
- };
-
- vec2.prototype.divide = function (vector) {
- this.x /= vector.x;
- this.y /= vector.y;
-
- return this;
- };
-
- vec2.prototype.scale = function (value, dest) {
- if (typeof dest === "undefined") { dest = null; }
- if (!dest)
- dest = this;
-
- dest.x *= value;
- dest.y *= value;
-
- return dest;
- };
-
- vec2.prototype.normalize = function (dest) {
- if (typeof dest === "undefined") { dest = null; }
- if (!dest)
- dest = this;
-
- var length = this.length();
-
- if (length === 1) {
- return this;
- }
-
- if (length === 0) {
- dest.x = 0;
- dest.y = 0;
-
- return dest;
- }
-
- length = 1.0 / length;
-
- dest.x *= length;
- dest.y *= length;
-
- return dest;
- };
-
- vec2.prototype.multiplyMat2 = function (matrix, dest) {
- if (typeof dest === "undefined") { dest = null; }
- if (!dest)
- dest = this;
-
- return matrix.multiplyVec2(this, dest);
- };
-
- vec2.prototype.multiplyMat3 = function (matrix, dest) {
- if (typeof dest === "undefined") { dest = null; }
- if (!dest)
- dest = this;
-
- return matrix.multiplyVec2(this, dest);
- };
-
- vec2.cross = function (vector, vector2, dest) {
- if (typeof dest === "undefined") { dest = null; }
- if (!dest)
- dest = new TSM.vec3();
-
- var x = vector.x, y = vector.y;
-
- var x2 = vector2.x, y2 = vector2.y;
-
- var z = x * y2 - y * x2;
-
- dest.x = 0;
- dest.y = 0;
- dest.z = z;
-
- return dest;
- };
-
- vec2.dot = function (vector, vector2) {
- return (vector.x * vector2.x + vector.y * vector2.y);
- };
-
- vec2.distance = function (vector, vector2) {
- return Math.sqrt(this.squaredDistance(vector, vector2));
- };
-
- vec2.squaredDistance = function (vector, vector2) {
- var x = vector2.x - vector.x, y = vector2.y - vector.y;
-
- return (x * x + y * y);
- };
-
- vec2.direction = function (vector, vector2, dest) {
- if (typeof dest === "undefined") { dest = null; }
- if (!dest)
- dest = new vec2();
-
- var x = vector.x - vector2.x, y = vector.y - vector2.y;
-
- var length = Math.sqrt(x * x + y * y);
-
- if (length === 0) {
- dest.x = 0;
- dest.y = 0;
-
- return dest;
- }
-
- length = 1 / length;
-
- dest.x = x * length;
- dest.y = y * length;
-
- return dest;
- };
-
- vec2.mix = function (vector, vector2, time, dest) {
- if (typeof dest === "undefined") { dest = null; }
- if (!dest)
- dest = new vec2();
-
- var x = vector.x, y = vector.y;
-
- var x2 = vector2.x, y2 = vector2.y;
-
- dest.x = x + time * (x2 - x);
- dest.y = y + time * (y2 - y);
-
- return dest;
- };
-
- vec2.sum = function (vector, vector2, dest) {
- if (typeof dest === "undefined") { dest = null; }
- if (!dest)
- dest = new vec2();
-
- dest.x = vector.x + vector2.x;
- dest.y = vector.y + vector2.y;
-
- return dest;
- };
-
- vec2.difference = function (vector, vector2, dest) {
- if (typeof dest === "undefined") { dest = null; }
- if (!dest)
- dest = new vec2();
-
- dest.x = vector.x - vector2.x;
- dest.y = vector.y - vector2.y;
-
- return dest;
- };
-
- vec2.product = function (vector, vector2, dest) {
- if (typeof dest === "undefined") { dest = null; }
- if (!dest)
- dest = new vec2();
-
- dest.x = vector.x * vector2.x;
- dest.y = vector.y * vector2.y;
-
- return dest;
- };
-
- vec2.quotient = function (vector, vector2, dest) {
- if (typeof dest === "undefined") { dest = null; }
- if (!dest)
- dest = new vec2();
-
- dest.x = vector.x / vector2.x;
- dest.y = vector.y / vector2.y;
-
- return dest;
- };
-
- vec2.zero = new vec2([0, 0]);
- return vec2;
- })();
- TSM.vec2 = vec2;
-})(TSM || (TSM = {}));
-/**
-* @fileoverview TSM - A TypeScript vector and matrix math library
-* @author Matthias Ferch
-* @version 0.6
-*/
-/*
-* Copyright (c) 2012 Matthias Ferch
-*
-* Project homepage: https://github.com/vexator/TSM
-*
-* This software is provided 'as-is', without any express or implied
-* warranty. In no event will the authors be held liable for any damages
-* arising from the use of this software.
-*
-* Permission is granted to anyone to use this software for any purpose,
-* including commercial applications, and to alter it and redistribute it
-* freely, subject to the following restrictions:
-*
-* 1. The origin of this software must not be misrepresented; you must not
-* claim that you wrote the original software. If you use this software
-* in a product, an acknowledgment in the product documentation would be
-* appreciated but is not required.
-*
-* 2. Altered source versions must be plainly marked as such, and must not
-* be misrepresented as being the original software.
-*
-* 3. This notice may not be removed or altered from any source
-* distribution.
-*/
-///
-var TSM;
-(function (TSM) {
- var vec3 = (function () {
- function vec3(values) {
- if (typeof values === "undefined") { values = null; }
- this.values = new Float32Array(3);
- if (values) {
- this.xyz = values;
- }
- }
- Object.defineProperty(vec3.prototype, "x", {
- get: function () {
- return this.values[0];
- },
- set: function (value) {
- this.values[0] = value;
- },
- enumerable: true,
- configurable: true
- });
-
- Object.defineProperty(vec3.prototype, "y", {
- get: function () {
- return this.values[1];
- },
- set: function (value) {
- this.values[1] = value;
- },
- enumerable: true,
- configurable: true
- });
-
- Object.defineProperty(vec3.prototype, "z", {
- get: function () {
- return this.values[2];
- },
- set: function (value) {
- this.values[2] = value;
- },
- enumerable: true,
- configurable: true
- });
-
- Object.defineProperty(vec3.prototype, "xy", {
- get: function () {
- return [
- this.values[0],
- this.values[1]
- ];
- },
- set: function (values) {
- this.values[0] = values[0];
- this.values[1] = values[1];
- },
- enumerable: true,
- configurable: true
- });
-
- Object.defineProperty(vec3.prototype, "xyz", {
- get: function () {
- return [
- this.values[0],
- this.values[1],
- this.values[2]
- ];
- },
- set: function (values) {
- this.values[0] = values[0];
- this.values[1] = values[1];
- this.values[2] = values[2];
- },
- enumerable: true,
- configurable: true
- });
-
-
-
-
-
-
- vec3.prototype.at = function (index) {
- return this.values[index];
- };
-
- vec3.prototype.reset = function () {
- this.x = 0;
- this.y = 0;
- this.z = 0;
- };
-
- vec3.prototype.copy = function (dest) {
- if (typeof dest === "undefined") { dest = null; }
- if (!dest)
- dest = new vec3();
-
- dest.x = this.x;
- dest.y = this.y;
- dest.z = this.z;
-
- return dest;
- };
-
- vec3.prototype.negate = function (dest) {
- if (typeof dest === "undefined") { dest = null; }
- if (!dest)
- dest = this;
-
- dest.x = -this.x;
- dest.y = -this.y;
- dest.z = -this.z;
-
- return dest;
- };
-
- vec3.prototype.equals = function (vector, threshold) {
- if (typeof threshold === "undefined") { threshold = EPSILON; }
- if (Math.abs(this.x - vector.x) > threshold)
- return false;
-
- if (Math.abs(this.y - vector.y) > threshold)
- return false;
-
- if (Math.abs(this.z - vector.z) > threshold)
- return false;
-
- return true;
- };
-
- vec3.prototype.length = function () {
- return Math.sqrt(this.squaredLength());
- };
-
- vec3.prototype.squaredLength = function () {
- var x = this.x, y = this.y, z = this.z;
-
- return (x * x + y * y + z * z);
- };
-
- vec3.prototype.add = function (vector) {
- this.x += vector.x;
- this.y += vector.y;
- this.z += vector.z;
-
- return this;
- };
-
- vec3.prototype.subtract = function (vector) {
- this.x -= vector.x;
- this.y -= vector.y;
- this.z -= vector.z;
-
- return this;
- };
-
- vec3.prototype.multiply = function (vector) {
- this.x *= vector.x;
- this.y *= vector.y;
- this.z *= vector.z;
-
- return this;
- };
-
- vec3.prototype.divide = function (vector) {
- this.x /= vector.x;
- this.y /= vector.y;
- this.z /= vector.z;
-
- return this;
- };
-
- vec3.prototype.scale = function (value, dest) {
- if (typeof dest === "undefined") { dest = null; }
- if (!dest)
- dest = this;
-
- dest.x *= value;
- dest.y *= value;
- dest.z *= value;
-
- return dest;
- };
-
- vec3.prototype.normalize = function (dest) {
- if (typeof dest === "undefined") { dest = null; }
- if (!dest)
- dest = this;
-
- var length = this.length();
-
- if (length === 1) {
- return this;
- }
-
- if (length === 0) {
- dest.x = 0;
- dest.y = 0;
- dest.z = 0;
-
- return dest;
- }
-
- length = 1.0 / length;
-
- dest.x *= length;
- dest.y *= length;
- dest.z *= length;
-
- return dest;
- };
-
- vec3.prototype.multiplyByMat3 = function (matrix, dest) {
- if (typeof dest === "undefined") { dest = null; }
- if (!dest)
- dest = this;
-
- return matrix.multiplyVec3(this, dest);
- };
-
- vec3.prototype.multiplyByQuat = function (quat, dest) {
- if (typeof dest === "undefined") { dest = null; }
- if (!dest)
- dest = this;
-
- return quat.multiplyVec3(this, dest);
- };
-
- vec3.cross = function (vector, vector2, dest) {
- if (typeof dest === "undefined") { dest = null; }
- if (!dest)
- dest = new vec3();
-
- var x = vector.x, y = vector.y, z = vector.z;
-
- var x2 = vector2.x, y2 = vector2.y, z2 = vector2.z;
-
- dest.x = y * z2 - z * y2;
- dest.y = z * x2 - x * z2;
- dest.z = x * y2 - y * x2;
-
- return dest;
- };
-
- vec3.dot = function (vector, vector2) {
- var x = vector.x, y = vector.y, z = vector.z;
-
- var x2 = vector2.x, y2 = vector2.y, z2 = vector2.z;
-
- return (x * x2 + y * y2 + z * z2);
- };
-
- vec3.distance = function (vector, vector2) {
- var x = vector2.x - vector.x, y = vector2.y - vector.y, z = vector2.z - vector.z;
-
- return Math.sqrt(this.squaredDistance(vector, vector2));
- };
-
- vec3.squaredDistance = function (vector, vector2) {
- var x = vector2.x - vector.x, y = vector2.y - vector.y, z = vector2.z - vector.z;
-
- return (x * x + y * y + z * z);
- };
-
- vec3.direction = function (vector, vector2, dest) {
- if (typeof dest === "undefined") { dest = null; }
- if (!dest)
- dest = new vec3();
-
- var x = vector.x - vector2.x, y = vector.y - vector2.y, z = vector.z - vector2.z;
-
- var length = Math.sqrt(x * x + y * y + z * z);
-
- if (length === 0) {
- dest.x = 0;
- dest.y = 0;
- dest.z = 0;
-
- return dest;
- }
-
- length = 1 / length;
-
- dest.x = x * length;
- dest.y = y * length;
- dest.z = z * length;
-
- return dest;
- };
-
- vec3.mix = function (vector, vector2, time, dest) {
- if (typeof dest === "undefined") { dest = null; }
- if (!dest)
- dest = new vec3();
-
- dest.x = vector.x + time * (vector2.x - vector.x);
- dest.y = vector.y + time * (vector2.y - vector.y);
- dest.z = vector.z + time * (vector2.z - vector.z);
-
- return dest;
- };
-
- vec3.sum = function (vector, vector2, dest) {
- if (typeof dest === "undefined") { dest = null; }
- if (!dest)
- dest = new vec3();
-
- dest.x = vector.x + vector2.x;
- dest.y = vector.y + vector2.y;
- dest.z = vector.z + vector2.z;
-
- return dest;
- };
-
- vec3.difference = function (vector, vector2, dest) {
- if (typeof dest === "undefined") { dest = null; }
- if (!dest)
- dest = new vec3();
-
- dest.x = vector.x - vector2.x;
- dest.y = vector.y - vector2.y;
- dest.z = vector.z - vector2.z;
-
- return dest;
- };
-
- vec3.product = function (vector, vector2, dest) {
- if (typeof dest === "undefined") { dest = null; }
- if (!dest)
- dest = new vec3();
-
- dest.x = vector.x * vector2.x;
- dest.y = vector.y * vector2.y;
- dest.z = vector.z * vector2.z;
-
- return dest;
- };
-
- vec3.quotient = function (vector, vector2, dest) {
- if (typeof dest === "undefined") { dest = null; }
- if (!dest)
- dest = new vec3();
-
- dest.x = vector.x / vector2.x;
- dest.y = vector.y / vector2.y;
- dest.z = vector.z / vector2.z;
-
- return dest;
- };
-
- vec3.prototype.toQuat = function (dest) {
- if (typeof dest === "undefined") { dest = null; }
- if (!dest)
- dest = new TSM.quat();
-
- var c = new vec3();
- var s = new vec3();
-
- c.x = Math.cos(this.x * 0.5);
- s.x = Math.sin(this.x * 0.5);
-
- c.y = Math.cos(this.y * 0.5);
- s.y = Math.sin(this.y * 0.5);
-
- c.z = Math.cos(this.z * 0.5);
- s.z = Math.sin(this.z * 0.5);
-
- dest.x = s.x * c.y * c.z - c.x * s.y * s.z;
- dest.y = c.x * s.y * c.z + s.x * c.y * s.z;
- dest.z = c.x * c.y * s.z - s.x * s.y * c.z;
- dest.w = c.x * c.y * c.z + s.x * s.y * s.z;
-
- return dest;
- };
-
- vec3.zero = new vec3([0, 0, 0]);
-
- vec3.up = new vec3([0, 1, 0]);
- vec3.right = new vec3([1, 0, 0]);
- vec3.forward = new vec3([0, 0, 1]);
- return vec3;
- })();
- TSM.vec3 = vec3;
-})(TSM || (TSM = {}));
-/**
-* @fileoverview TSM - A TypeScript vector and matrix math library
-* @author Matthias Ferch
-* @version 0.6
-*/
-/*
-* Copyright (c) 2012 Matthias Ferch
-*
-* Project homepage: https://github.com/vexator/TSM
-*
-* This software is provided 'as-is', without any express or implied
-* warranty. In no event will the authors be held liable for any damages
-* arising from the use of this software.
-*
-* Permission is granted to anyone to use this software for any purpose,
-* including commercial applications, and to alter it and redistribute it
-* freely, subject to the following restrictions:
-*
-* 1. The origin of this software must not be misrepresented; you must not
-* claim that you wrote the original software. If you use this software
-* in a product, an acknowledgment in the product documentation would be
-* appreciated but is not required.
-*
-* 2. Altered source versions must be plainly marked as such, and must not
-* be misrepresented as being the original software.
-*
-* 3. This notice may not be removed or altered from any source
-* distribution.
-*/
-///
-var TSM;
-(function (TSM) {
- var vec4 = (function () {
- function vec4(values) {
- if (typeof values === "undefined") { values = null; }
- this.values = new Float32Array(4);
- if (values) {
- this.xyzw = values;
- }
- }
- Object.defineProperty(vec4.prototype, "x", {
- get: function () {
- return this.values[0];
- },
- set: function (value) {
- this.values[0] = value;
- },
- enumerable: true,
- configurable: true
- });
-
- Object.defineProperty(vec4.prototype, "y", {
- get: function () {
- return this.values[1];
- },
- set: function (value) {
- this.values[1] = value;
- },
- enumerable: true,
- configurable: true
- });
-
- Object.defineProperty(vec4.prototype, "z", {
- get: function () {
- return this.values[2];
- },
- set: function (value) {
- this.values[2] = value;
- },
- enumerable: true,
- configurable: true
- });
-
- Object.defineProperty(vec4.prototype, "w", {
- get: function () {
- return this.values[3];
- },
- set: function (value) {
- this.values[3] = value;
- },
- enumerable: true,
- configurable: true
- });
-
- Object.defineProperty(vec4.prototype, "xy", {
- get: function () {
- return [
- this.values[0],
- this.values[1]
- ];
- },
- set: function (values) {
- this.values[0] = values[0];
- this.values[1] = values[1];
- },
- enumerable: true,
- configurable: true
- });
-
- Object.defineProperty(vec4.prototype, "xyz", {
- get: function () {
- return [
- this.values[0],
- this.values[1],
- this.values[2]
- ];
- },
- set: function (values) {
- this.values[0] = values[0];
- this.values[1] = values[1];
- this.values[2] = values[2];
- },
- enumerable: true,
- configurable: true
- });
-
- Object.defineProperty(vec4.prototype, "xyzw", {
- get: function () {
- return [
- this.values[0],
- this.values[1],
- this.values[2],
- this.values[3]
- ];
- },
- set: function (values) {
- this.values[0] = values[0];
- this.values[1] = values[1];
- this.values[2] = values[2];
- this.values[3] = values[3];
- },
- enumerable: true,
- configurable: true
- });
-
-
-
-
-
-
-
-
- Object.defineProperty(vec4.prototype, "r", {
- get: function () {
- return this.values[0];
- },
- set: function (value) {
- this.values[0] = value;
- },
- enumerable: true,
- configurable: true
- });
-
- Object.defineProperty(vec4.prototype, "g", {
- get: function () {
- return this.values[1];
- },
- set: function (value) {
- this.values[1] = value;
- },
- enumerable: true,
- configurable: true
- });
-
- Object.defineProperty(vec4.prototype, "b", {
- get: function () {
- return this.values[2];
- },
- set: function (value) {
- this.values[2] = value;
- },
- enumerable: true,
- configurable: true
- });
-
- Object.defineProperty(vec4.prototype, "a", {
- get: function () {
- return this.values[3];
- },
- set: function (value) {
- this.values[3] = value;
- },
- enumerable: true,
- configurable: true
- });
-
- Object.defineProperty(vec4.prototype, "rg", {
- get: function () {
- return [
- this.values[0],
- this.values[1]
- ];
- },
- set: function (values) {
- this.values[0] = values[0];
- this.values[1] = values[1];
- },
- enumerable: true,
- configurable: true
- });
-
- Object.defineProperty(vec4.prototype, "rgb", {
- get: function () {
- return [
- this.values[0],
- this.values[1],
- this.values[2]
- ];
- },
- set: function (values) {
- this.values[0] = values[0];
- this.values[1] = values[1];
- this.values[2] = values[2];
- },
- enumerable: true,
- configurable: true
- });
-
- Object.defineProperty(vec4.prototype, "rgba", {
- get: function () {
- return [
- this.values[0],
- this.values[1],
- this.values[2],
- this.values[3]
- ];
- },
- set: function (values) {
- this.values[0] = values[0];
- this.values[1] = values[1];
- this.values[2] = values[2];
- this.values[3] = values[3];
- },
- enumerable: true,
- configurable: true
- });
-
-
-
-
-
-
-
-
- vec4.prototype.at = function (index) {
- return this.values[index];
- };
-
- vec4.prototype.reset = function () {
- this.x = 0;
- this.y = 0;
- this.z = 0;
- this.w = 0;
- };
-
- vec4.prototype.copy = function (dest) {
- if (typeof dest === "undefined") { dest = null; }
- if (!dest)
- dest = new vec4();
-
- dest.x = this.x;
- dest.y = this.y;
- dest.z = this.z;
- dest.w = this.w;
-
- return dest;
- };
-
- vec4.prototype.negate = function (dest) {
- if (typeof dest === "undefined") { dest = null; }
- if (!dest)
- dest = this;
-
- dest.x = -this.x;
- dest.y = -this.y;
- dest.z = -this.z;
- dest.w = -this.w;
-
- return dest;
- };
-
- vec4.prototype.equals = function (vector, threshold) {
- if (typeof threshold === "undefined") { threshold = EPSILON; }
- if (Math.abs(this.x - vector.x) > threshold)
- return false;
-
- if (Math.abs(this.y - vector.y) > threshold)
- return false;
-
- if (Math.abs(this.z - vector.z) > threshold)
- return false;
-
- if (Math.abs(this.w - vector.w) > threshold)
- return false;
-
- return true;
- };
-
- vec4.prototype.length = function () {
- return Math.sqrt(this.squaredLength());
- };
-
- vec4.prototype.squaredLength = function () {
- var x = this.x, y = this.y, z = this.z, w = this.w;
-
- return (x * x + y * y + z * z + w * w);
- };
-
- vec4.prototype.add = function (vector) {
- this.x += vector.x;
- this.y += vector.y;
- this.z += vector.z;
- this.w += vector.w;
-
- return this;
- };
-
- vec4.prototype.subtract = function (vector) {
- this.x -= vector.x;
- this.y -= vector.y;
- this.z -= vector.z;
- this.w -= vector.w;
-
- return this;
- };
-
- vec4.prototype.multiply = function (vector) {
- this.x *= vector.x;
- this.y *= vector.y;
- this.z *= vector.z;
- this.w *= vector.w;
-
- return this;
- };
-
- vec4.prototype.divide = function (vector) {
- this.x /= vector.x;
- this.y /= vector.y;
- this.z /= vector.z;
- this.w /= vector.w;
-
- return this;
- };
-
- vec4.prototype.scale = function (value, dest) {
- if (typeof dest === "undefined") { dest = null; }
- if (!dest)
- dest = this;
-
- dest.x *= value;
- dest.y *= value;
- dest.z *= value;
- dest.w *= value;
-
- return dest;
- };
-
- vec4.prototype.normalize = function (dest) {
- if (typeof dest === "undefined") { dest = null; }
- if (!dest)
- dest = this;
-
- var length = this.length();
-
- if (length === 1) {
- return this;
- }
-
- if (length === 0) {
- dest.x *= 0;
- dest.y *= 0;
- dest.z *= 0;
- dest.w *= 0;
-
- return dest;
- }
-
- length = 1.0 / length;
-
- dest.x *= length;
- dest.y *= length;
- dest.z *= length;
- dest.w *= length;
-
- return dest;
- };
-
- vec4.prototype.multiplyMat4 = function (matrix, dest) {
- if (typeof dest === "undefined") { dest = null; }
- if (!dest)
- dest = this;
-
- return matrix.multiplyVec4(this, dest);
- };
-
- vec4.mix = function (vector, vector2, time, dest) {
- if (typeof dest === "undefined") { dest = null; }
- if (!dest)
- dest = new vec4();
-
- dest.x = vector.x + time * (vector2.x - vector.x);
- dest.y = vector.y + time * (vector2.y - vector.y);
- dest.z = vector.z + time * (vector2.z - vector.z);
- dest.w = vector.w + time * (vector2.w - vector.w);
-
- return dest;
- };
-
- vec4.sum = function (vector, vector2, dest) {
- if (typeof dest === "undefined") { dest = null; }
- if (!dest)
- dest = new vec4();
-
- dest.x = vector.x + vector2.x, dest.y = vector.y + vector2.y, dest.z = vector.z + vector2.z, dest.w = vector.w + vector2.w;
-
- return dest;
- };
-
- vec4.difference = function (vector, vector2, dest) {
- if (typeof dest === "undefined") { dest = null; }
- if (!dest)
- dest = new vec4();
-
- dest.x = vector.x - vector2.x, dest.y = vector.y - vector2.y, dest.z = vector.z - vector2.z, dest.w = vector.w - vector2.w;
-
- return dest;
- };
-
- vec4.product = function (vector, vector2, dest) {
- if (typeof dest === "undefined") { dest = null; }
- if (!dest)
- dest = new vec4();
-
- dest.x = vector.x * vector2.x, dest.y = vector.y * vector2.y, dest.z = vector.z * vector2.z, dest.w = vector.w * vector2.w;
-
- return dest;
- };
-
- vec4.quotient = function (vector, vector2, dest) {
- if (typeof dest === "undefined") { dest = null; }
- if (!dest)
- dest = new vec4();
-
- dest.x = vector.x / vector2.x, dest.y = vector.y / vector2.y, dest.z = vector.z / vector2.z, dest.w = vector.w / vector2.w;
-
- return dest;
- };
-
- vec4.zero = new vec4([0, 0, 0, 1]);
- return vec4;
- })();
- TSM.vec4 = vec4;
-})(TSM || (TSM = {}));
-/**
-* @fileoverview TSM - A TypeScript vector and matrix math library
-* @author Matthias Ferch
-* @version 0.6
-*/
-/*
-* Copyright (c) 2012 Matthias Ferch
-*
-* Project homepage: https://github.com/vexator/TSM
-*
-* This software is provided 'as-is', without any express or implied
-* warranty. In no event will the authors be held liable for any damages
-* arising from the use of this software.
-*
-* Permission is granted to anyone to use this software for any purpose,
-* including commercial applications, and to alter it and redistribute it
-* freely, subject to the following restrictions:
-*
-* 1. The origin of this software must not be misrepresented; you must not
-* claim that you wrote the original software. If you use this software
-* in a product, an acknowledgment in the product documentation would be
-* appreciated but is not required.
-*
-* 2. Altered source versions must be plainly marked as such, and must not
-* be misrepresented as being the original software.
-*
-* 3. This notice may not be removed or altered from any source
-* distribution.
-*/
-///
-var TSM;
-(function (TSM) {
- var mat2 = (function () {
- function mat2(values) {
- if (typeof values === "undefined") { values = null; }
- this.values = new Float32Array(4);
- if (values) {
- this.init(values);
- }
- }
- mat2.prototype.at = function (index) {
- return this.values[index];
- };
-
- mat2.prototype.init = function (values) {
- for (var i = 0; i < 4; i++) {
- this.values[i] = values[i];
- }
-
- return this;
- };
-
- mat2.prototype.reset = function () {
- for (var i = 0; i < 4; i++) {
- this.values[i] = 0;
- }
- };
-
- mat2.prototype.copy = function (dest) {
- if (typeof dest === "undefined") { dest = null; }
- if (!dest)
- dest = new mat2();
-
- for (var i = 0; i < 4; i++) {
- dest.values[i] = this.values[i];
- }
-
- return dest;
- };
-
- mat2.prototype.all = function () {
- var data = [];
- for (var i = 0; i < 4; i++) {
- data[i] = this.values[i];
- }
-
- return data;
- };
-
- mat2.prototype.row = function (index) {
- return [
- this.values[index * 2 + 0],
- this.values[index * 2 + 1]
- ];
- };
-
- mat2.prototype.col = function (index) {
- return [
- this.values[index],
- this.values[index + 2]
- ];
- };
-
- mat2.prototype.equals = function (matrix, threshold) {
- if (typeof threshold === "undefined") { threshold = EPSILON; }
- for (var i = 0; i < 4; i++) {
- if (Math.abs(this.values[i] - matrix.at(i)) > threshold)
- return false;
- }
-
- return true;
- };
-
- mat2.prototype.determinant = function () {
- return this.values[0] * this.values[3] - this.values[2] * this.values[1];
- };
-
- mat2.prototype.setIdentity = function () {
- this.values[0] = 1;
- this.values[1] = 0;
- this.values[2] = 0;
- this.values[3] = 1;
-
- return this;
- };
-
- mat2.prototype.transpose = function () {
- var temp = this.values[1];
-
- this.values[1] = this.values[2];
- this.values[2] = temp;
-
- return this;
- };
-
- mat2.prototype.inverse = function () {
- var det = this.determinant();
-
- if (!det)
- return null;
-
- det = 1.0 / det;
-
- this.values[0] = det * (this.values[3]);
- this.values[1] = det * (-this.values[1]);
- this.values[2] = det * (-this.values[2]);
- this.values[3] = det * (this.values[0]);
-
- return this;
- };
-
- mat2.prototype.multiply = function (matrix) {
- var a11 = this.values[0], a12 = this.values[1], a21 = this.values[2], a22 = this.values[3];
-
- this.values[0] = a11 * matrix.at(0) + a12 * matrix.at(2);
- this.values[1] = a11 * matrix.at(1) + a12 * matrix.at(3);
- this.values[2] = a21 * matrix.at(0) + a22 * matrix.at(2);
- this.values[3] = a21 * matrix.at(1) + a22 * matrix.at(3);
-
- return this;
- };
-
- mat2.prototype.rotate = function (angle) {
- var a11 = this.values[0], a12 = this.values[1], a21 = this.values[2], a22 = this.values[3];
-
- var sin = Math.sin(angle), cos = Math.cos(angle);
-
- this.values[0] = a11 * cos + a12 * sin;
- this.values[1] = a11 * -sin + a12 * cos;
- this.values[2] = a21 * cos + a22 * sin;
- this.values[3] = a21 * -sin + a22 * cos;
-
- return this;
- };
-
- mat2.prototype.multiplyVec2 = function (vector, result) {
- if (typeof result === "undefined") { result = null; }
- var x = vector.x, y = vector.y;
-
- if (result) {
- result.xy = [
- x * this.values[0] + y * this.values[1],
- x * this.values[2] + y * this.values[3]
- ];
-
- return result;
- } else {
- return new TSM.vec2([
- x * this.values[0] + y * this.values[1],
- x * this.values[2] + y * this.values[3]
- ]);
- }
- };
-
- mat2.prototype.scale = function (vector) {
- var a11 = this.values[0], a12 = this.values[1], a21 = this.values[2], a22 = this.values[3];
-
- var x = vector.x, y = vector.y;
-
- this.values[0] = a11 * x;
- this.values[1] = a12 * y;
- this.values[2] = a21 * x;
- this.values[3] = a22 * y;
-
- return this;
- };
-
- mat2.product = function (m1, m2, result) {
- if (typeof result === "undefined") { result = null; }
- var a11 = m1.at(0), a12 = m1.at(1), a21 = m1.at(2), a22 = m1.at(3);
-
- if (result) {
- result.init([
- a11 * m2.at(0) + a12 * m2.at(2),
- a11 * m2.at(1) + a12 * m2.at(3),
- a21 * m2.at(0) + a22 * m2.at(2),
- a21 * m2.at(1) + a22 * m2.at(3)
- ]);
-
- return result;
- } else {
- return new mat2([
- a11 * m2.at(0) + a12 * m2.at(2),
- a11 * m2.at(1) + a12 * m2.at(3),
- a21 * m2.at(0) + a22 * m2.at(2),
- a21 * m2.at(1) + a22 * m2.at(3)
- ]);
- }
- };
-
- mat2.identity = new mat2().setIdentity();
- return mat2;
- })();
- TSM.mat2 = mat2;
-})(TSM || (TSM = {}));
-/**
-* @fileoverview TSM - A TypeScript vector and matrix math library
-* @author Matthias Ferch
-* @version 0.6
-*/
-/*
-* Copyright (c) 2012 Matthias Ferch
-*
-* Project homepage: https://github.com/vexator/TSM
-*
-* This software is provided 'as-is', without any express or implied
-* warranty. In no event will the authors be held liable for any damages
-* arising from the use of this software.
-*
-* Permission is granted to anyone to use this software for any purpose,
-* including commercial applications, and to alter it and redistribute it
-* freely, subject to the following restrictions:
-*
-* 1. The origin of this software must not be misrepresented; you must not
-* claim that you wrote the original software. If you use this software
-* in a product, an acknowledgment in the product documentation would be
-* appreciated but is not required.
-*
-* 2. Altered source versions must be plainly marked as such, and must not
-* be misrepresented as being the original software.
-*
-* 3. This notice may not be removed or altered from any source
-* distribution.
-*/
-///
-var TSM;
-(function (TSM) {
- var mat3 = (function () {
- function mat3(values) {
- if (typeof values === "undefined") { values = null; }
- this.values = new Float32Array(9);
- if (values) {
- this.init(values);
- }
- }
- mat3.prototype.at = function (index) {
- return this.values[index];
- };
-
- mat3.prototype.init = function (values) {
- for (var i = 0; i < 9; i++) {
- this.values[i] = values[i];
- }
-
- return this;
- };
-
- mat3.prototype.reset = function () {
- for (var i = 0; i < 9; i++) {
- this.values[i] = 0;
- }
- };
-
- mat3.prototype.copy = function (dest) {
- if (typeof dest === "undefined") { dest = null; }
- if (!dest)
- dest = new mat3();
-
- for (var i = 0; i < 9; i++) {
- dest.values[i] = this.values[i];
- }
-
- return dest;
- };
-
- mat3.prototype.all = function () {
- var data = [];
- for (var i = 0; i < 9; i++) {
- data[i] = this.values[i];
- }
-
- return data;
- };
-
- mat3.prototype.row = function (index) {
- return [
- this.values[index * 3 + 0],
- this.values[index * 3 + 1],
- this.values[index * 3 + 2]
- ];
- };
-
- mat3.prototype.col = function (index) {
- return [
- this.values[index],
- this.values[index + 3],
- this.values[index + 6]
- ];
- };
-
- mat3.prototype.equals = function (matrix, threshold) {
- if (typeof threshold === "undefined") { threshold = EPSILON; }
- for (var i = 0; i < 9; i++) {
- if (Math.abs(this.values[i] - matrix.at(i)) > threshold)
- return false;
- }
-
- return true;
- };
-
- mat3.prototype.determinant = function () {
- var a00 = this.values[0], a01 = this.values[1], a02 = this.values[2], a10 = this.values[3], a11 = this.values[4], a12 = this.values[5], a20 = this.values[6], a21 = this.values[7], a22 = this.values[8];
-
- var det01 = a22 * a11 - a12 * a21, det11 = -a22 * a10 + a12 * a20, det21 = a21 * a10 - a11 * a20;
-
- return a00 * det01 + a01 * det11 + a02 * det21;
- };
-
- mat3.prototype.setIdentity = function () {
- this.values[0] = 1;
- this.values[1] = 0;
- this.values[2] = 0;
- this.values[3] = 0;
- this.values[4] = 1;
- this.values[5] = 0;
- this.values[6] = 0;
- this.values[7] = 0;
- this.values[8] = 1;
-
- return this;
- };
-
- mat3.prototype.transpose = function () {
- var temp01 = this.values[1], temp02 = this.values[2], temp12 = this.values[5];
-
- this.values[1] = this.values[3];
- this.values[2] = this.values[6];
- this.values[3] = temp01;
- this.values[5] = this.values[7];
- this.values[6] = temp02;
- this.values[7] = temp12;
-
- return this;
- };
-
- mat3.prototype.inverse = function () {
- var a00 = this.values[0], a01 = this.values[1], a02 = this.values[2], a10 = this.values[3], a11 = this.values[4], a12 = this.values[5], a20 = this.values[6], a21 = this.values[7], a22 = this.values[8];
-
- var det01 = a22 * a11 - a12 * a21, det11 = -a22 * a10 + a12 * a20, det21 = a21 * a10 - a11 * a20;
-
- var det = a00 * det01 + a01 * det11 + a02 * det21;
-
- if (!det)
- return null;
-
- det = 1.0 / det;
-
- this.values[0] = det01 * det;
- this.values[1] = (-a22 * a01 + a02 * a21) * det;
- this.values[2] = (a12 * a01 - a02 * a11) * det;
- this.values[3] = det11 * det;
- this.values[4] = (a22 * a00 - a02 * a20) * det;
- this.values[5] = (-a12 * a00 + a02 * a10) * det;
- this.values[6] = det21 * det;
- this.values[7] = (-a21 * a00 + a01 * a20) * det;
- this.values[8] = (a11 * a00 - a01 * a10) * det;
-
- return this;
- };
-
- mat3.prototype.multiply = function (matrix) {
- var a00 = this.values[0], a01 = this.values[1], a02 = this.values[2], a10 = this.values[3], a11 = this.values[4], a12 = this.values[5], a20 = this.values[6], a21 = this.values[7], a22 = this.values[8];
-
- var b00 = matrix.at(0), b01 = matrix.at(1), b02 = matrix.at(2), b10 = matrix.at(3), b11 = matrix.at(4), b12 = matrix.at(5), b20 = matrix.at(6), b21 = matrix.at(7), b22 = matrix.at(8);
-
- this.values[0] = b00 * a00 + b01 * a10 + b02 * a20;
- this.values[1] = b00 * a01 + b01 * a11 + b02 * a21;
- this.values[2] = b00 * a02 + b01 * a12 + b02 * a22;
-
- this.values[3] = b10 * a00 + b11 * a10 + b12 * a20;
- this.values[4] = b10 * a01 + b11 * a11 + b12 * a21;
- this.values[5] = b10 * a02 + b11 * a12 + b12 * a22;
-
- this.values[6] = b20 * a00 + b21 * a10 + b22 * a20;
- this.values[7] = b20 * a01 + b21 * a11 + b22 * a21;
- this.values[8] = b20 * a02 + b21 * a12 + b22 * a22;
-
- return this;
- };
-
- mat3.prototype.multiplyVec2 = function (vector, result) {
- if (typeof result === "undefined") { result = null; }
- var x = vector.x, y = vector.y;
-
- if (result) {
- result.xy = [
- x * this.values[0] + y * this.values[3] + this.values[6],
- x * this.values[1] + y * this.values[4] + this.values[7]
- ];
-
- return result;
- } else {
- return new TSM.vec2([
- x * this.values[0] + y * this.values[3] + this.values[6],
- x * this.values[1] + y * this.values[4] + this.values[7]
- ]);
- }
- };
-
- mat3.prototype.multiplyVec3 = function (vector, result) {
- if (typeof result === "undefined") { result = null; }
- var x = vector.x, y = vector.y, z = vector.z;
-
- if (result) {
- result.xyz = [
- x * this.values[0] + y * this.values[3] + z * this.values[6],
- x * this.values[1] + y * this.values[4] + z * this.values[7],
- x * this.values[2] + y * this.values[5] + z * this.values[8]
- ];
-
- return result;
- } else {
- return new TSM.vec3([
- x * this.values[0] + y * this.values[3] + z * this.values[6],
- x * this.values[1] + y * this.values[4] + z * this.values[7],
- x * this.values[2] + y * this.values[5] + z * this.values[8]
- ]);
- }
- };
-
- mat3.prototype.toMat4 = function (result) {
- if (typeof result === "undefined") { result = null; }
- if (result) {
- result.init([
- this.values[0],
- this.values[1],
- this.values[2],
- 0,
- this.values[3],
- this.values[4],
- this.values[5],
- 0,
- this.values[6],
- this.values[7],
- this.values[8],
- 0,
- 0,
- 0,
- 0,
- 1
- ]);
-
- return result;
- } else {
- return new TSM.mat4([
- this.values[0],
- this.values[1],
- this.values[2],
- 0,
- this.values[3],
- this.values[4],
- this.values[5],
- 0,
- this.values[6],
- this.values[7],
- this.values[8],
- 0,
- 0,
- 0,
- 0,
- 1
- ]);
- }
- };
-
- mat3.prototype.toQuat = function () {
- var m00 = this.values[0], m01 = this.values[1], m02 = this.values[2], m10 = this.values[3], m11 = this.values[4], m12 = this.values[5], m20 = this.values[6], m21 = this.values[7], m22 = this.values[8];
-
- var fourXSquaredMinus1 = m00 - m11 - m22;
- var fourYSquaredMinus1 = m11 - m00 - m22;
- var fourZSquaredMinus1 = m22 - m00 - m11;
- var fourWSquaredMinus1 = m00 + m11 + m22;
-
- var biggestIndex = 0;
-
- var fourBiggestSquaredMinus1 = fourWSquaredMinus1;
-
- if (fourXSquaredMinus1 > fourBiggestSquaredMinus1) {
- fourBiggestSquaredMinus1 = fourXSquaredMinus1;
- biggestIndex = 1;
- }
-
- if (fourYSquaredMinus1 > fourBiggestSquaredMinus1) {
- fourBiggestSquaredMinus1 = fourYSquaredMinus1;
- biggestIndex = 2;
- }
-
- if (fourZSquaredMinus1 > fourBiggestSquaredMinus1) {
- fourBiggestSquaredMinus1 = fourZSquaredMinus1;
- biggestIndex = 3;
- }
-
- var biggestVal = Math.sqrt(fourBiggestSquaredMinus1 + 1) * 0.5;
- var mult = 0.25 / biggestVal;
-
- var result = new TSM.quat();
-
- switch (biggestIndex) {
- case 0:
- result.w = biggestVal;
- result.x = (m12 - m21) * mult;
- result.y = (m20 - m02) * mult;
- result.z = (m01 - m10) * mult;
-
- break;
-
- case 1:
- result.w = (m12 - m21) * mult;
- result.x = biggestVal;
- result.y = (m01 + m10) * mult;
- result.z = (m20 + m02) * mult;
-
- break;
-
- case 2:
- result.w = (m20 - m02) * mult;
- result.x = (m01 + m10) * mult;
- result.y = biggestVal;
- result.z = (m12 + m21) * mult;
-
- break;
-
- case 3:
- result.w = (m01 - m10) * mult;
- result.x = (m20 + m02) * mult;
- result.y = (m12 + m21) * mult;
- result.z = biggestVal;
-
- break;
- }
-
- return result;
- };
-
- mat3.prototype.rotate = function (angle, axis) {
- var x = axis.x, y = axis.y, z = axis.z;
-
- var length = Math.sqrt(x * x + y * y + z * z);
-
- if (!length)
- return null;
-
- if (length !== 1) {
- length = 1 / length;
- x *= length;
- y *= length;
- z *= length;
- }
-
- var s = Math.sin(angle);
- var c = Math.cos(angle);
-
- var t = 1.0 - c;
-
- var a00 = this.values[0], a01 = this.values[1], a02 = this.values[2], a10 = this.values[4], a11 = this.values[5], a12 = this.values[6], a20 = this.values[8], a21 = this.values[9], a22 = this.values[10];
-
- var b00 = x * x * t + c, b01 = y * x * t + z * s, b02 = z * x * t - y * s, b10 = x * y * t - z * s, b11 = y * y * t + c, b12 = z * y * t + x * s, b20 = x * z * t + y * s, b21 = y * z * t - x * s, b22 = z * z * t + c;
-
- this.values[0] = a00 * b00 + a10 * b01 + a20 * b02;
- this.values[1] = a01 * b00 + a11 * b01 + a21 * b02;
- this.values[2] = a02 * b00 + a12 * b01 + a22 * b02;
-
- this.values[3] = a00 * b10 + a10 * b11 + a20 * b12;
- this.values[4] = a01 * b10 + a11 * b11 + a21 * b12;
- this.values[5] = a02 * b10 + a12 * b11 + a22 * b12;
-
- this.values[6] = a00 * b20 + a10 * b21 + a20 * b22;
- this.values[7] = a01 * b20 + a11 * b21 + a21 * b22;
- this.values[8] = a02 * b20 + a12 * b21 + a22 * b22;
-
- return this;
- };
-
- mat3.product = function (m1, m2, result) {
- if (typeof result === "undefined") { result = null; }
- var a00 = m1.at(0), a01 = m1.at(1), a02 = m1.at(2), a10 = m1.at(3), a11 = m1.at(4), a12 = m1.at(5), a20 = m1.at(6), a21 = m1.at(7), a22 = m1.at(8);
-
- var b00 = m2.at(0), b01 = m2.at(1), b02 = m2.at(2), b10 = m2.at(3), b11 = m2.at(4), b12 = m2.at(5), b20 = m2.at(6), b21 = m2.at(7), b22 = m2.at(8);
-
- if (result) {
- result.init([
- b00 * a00 + b01 * a10 + b02 * a20,
- b00 * a01 + b01 * a11 + b02 * a21,
- b00 * a02 + b01 * a12 + b02 * a22,
- b10 * a00 + b11 * a10 + b12 * a20,
- b10 * a01 + b11 * a11 + b12 * a21,
- b10 * a02 + b11 * a12 + b12 * a22,
- b20 * a00 + b21 * a10 + b22 * a20,
- b20 * a01 + b21 * a11 + b22 * a21,
- b20 * a02 + b21 * a12 + b22 * a22
- ]);
-
- return result;
- } else {
- return new mat3([
- b00 * a00 + b01 * a10 + b02 * a20,
- b00 * a01 + b01 * a11 + b02 * a21,
- b00 * a02 + b01 * a12 + b02 * a22,
- b10 * a00 + b11 * a10 + b12 * a20,
- b10 * a01 + b11 * a11 + b12 * a21,
- b10 * a02 + b11 * a12 + b12 * a22,
- b20 * a00 + b21 * a10 + b22 * a20,
- b20 * a01 + b21 * a11 + b22 * a21,
- b20 * a02 + b21 * a12 + b22 * a22
- ]);
- }
- };
-
- mat3.identity = new mat3().setIdentity();
- return mat3;
- })();
- TSM.mat3 = mat3;
-})(TSM || (TSM = {}));
-/**
-* @fileoverview TSM - A TypeScript vector and matrix math library
-* @author Matthias Ferch
-* @version 0.6
-*/
-/*
-* Copyright (c) 2012 Matthias Ferch
-*
-* Project homepage: https://github.com/vexator/TSM
-*
-* This software is provided 'as-is', without any express or implied
-* warranty. In no event will the authors be held liable for any damages
-* arising from the use of this software.
-*
-* Permission is granted to anyone to use this software for any purpose,
-* including commercial applications, and to alter it and redistribute it
-* freely, subject to the following restrictions:
-*
-* 1. The origin of this software must not be misrepresented; you must not
-* claim that you wrote the original software. If you use this software
-* in a product, an acknowledgment in the product documentation would be
-* appreciated but is not required.
-*
-* 2. Altered source versions must be plainly marked as such, and must not
-* be misrepresented as being the original software.
-*
-* 3. This notice may not be removed or altered from any source
-* distribution.
-*/
-///
-var TSM;
-(function (TSM) {
- var mat4 = (function () {
- function mat4(values) {
- if (typeof values === "undefined") { values = null; }
- this.values = new Float32Array(16);
- if (values) {
- this.init(values);
- }
- }
- mat4.prototype.at = function (index) {
- return this.values[index];
- };
-
- mat4.prototype.init = function (values) {
- for (var i = 0; i < 16; i++) {
- this.values[i] = values[i];
- }
-
- return this;
- };
-
- mat4.prototype.reset = function () {
- for (var i = 0; i < 16; i++) {
- this.values[i] = 0;
- }
- };
-
- mat4.prototype.copy = function (dest) {
- if (typeof dest === "undefined") { dest = null; }
- if (!dest)
- dest = new mat4();
-
- for (var i = 0; i < 16; i++) {
- dest.values[i] = this.values[i];
- }
-
- return dest;
- };
-
- mat4.prototype.all = function () {
- var data = [];
- for (var i = 0; i < 16; i++) {
- data[i] = this.values[i];
- }
-
- return data;
- };
-
- mat4.prototype.row = function (index) {
- return [
- this.values[index * 4 + 0],
- this.values[index * 4 + 1],
- this.values[index * 4 + 2],
- this.values[index * 4 + 3]
- ];
- };
-
- mat4.prototype.col = function (index) {
- return [
- this.values[index],
- this.values[index + 4],
- this.values[index + 8],
- this.values[index + 12]
- ];
- };
-
- mat4.prototype.equals = function (matrix, threshold) {
- if (typeof threshold === "undefined") { threshold = EPSILON; }
- for (var i = 0; i < 16; i++) {
- if (Math.abs(this.values[i] - matrix.at(i)) > threshold)
- return false;
- }
-
- return true;
- };
-
- mat4.prototype.determinant = function () {
- var a00 = this.values[0], a01 = this.values[1], a02 = this.values[2], a03 = this.values[3], a10 = this.values[4], a11 = this.values[5], a12 = this.values[6], a13 = this.values[7], a20 = this.values[8], a21 = this.values[9], a22 = this.values[10], a23 = this.values[11], a30 = this.values[12], a31 = this.values[13], a32 = this.values[14], a33 = this.values[15];
-
- var det00 = a00 * a11 - a01 * a10, det01 = a00 * a12 - a02 * a10, det02 = a00 * a13 - a03 * a10, det03 = a01 * a12 - a02 * a11, det04 = a01 * a13 - a03 * a11, det05 = a02 * a13 - a03 * a12, det06 = a20 * a31 - a21 * a30, det07 = a20 * a32 - a22 * a30, det08 = a20 * a33 - a23 * a30, det09 = a21 * a32 - a22 * a31, det10 = a21 * a33 - a23 * a31, det11 = a22 * a33 - a23 * a32;
-
- return (det00 * det11 - det01 * det10 + det02 * det09 + det03 * det08 - det04 * det07 + det05 * det06);
- };
-
- mat4.prototype.setIdentity = function () {
- this.values[0] = 1;
- this.values[1] = 0;
- this.values[2] = 0;
- this.values[3] = 0;
- this.values[4] = 0;
- this.values[5] = 1;
- this.values[6] = 0;
- this.values[7] = 0;
- this.values[8] = 0;
- this.values[9] = 0;
- this.values[10] = 1;
- this.values[11] = 0;
- this.values[12] = 0;
- this.values[13] = 0;
- this.values[14] = 0;
- this.values[15] = 1;
-
- return this;
- };
-
- mat4.prototype.transpose = function () {
- var temp01 = this.values[1], temp02 = this.values[2], temp03 = this.values[3], temp12 = this.values[6], temp13 = this.values[7], temp23 = this.values[11];
-
- this.values[1] = this.values[4];
- this.values[2] = this.values[8];
- this.values[3] = this.values[12];
- this.values[4] = temp01;
- this.values[6] = this.values[9];
- this.values[7] = this.values[13];
- this.values[8] = temp02;
- this.values[9] = temp12;
- this.values[11] = this.values[14];
- this.values[12] = temp03;
- this.values[13] = temp13;
- this.values[14] = temp23;
-
- return this;
- };
-
- mat4.prototype.inverse = function () {
- var a00 = this.values[0], a01 = this.values[1], a02 = this.values[2], a03 = this.values[3], a10 = this.values[4], a11 = this.values[5], a12 = this.values[6], a13 = this.values[7], a20 = this.values[8], a21 = this.values[9], a22 = this.values[10], a23 = this.values[11], a30 = this.values[12], a31 = this.values[13], a32 = this.values[14], a33 = this.values[15];
-
- var det00 = a00 * a11 - a01 * a10, det01 = a00 * a12 - a02 * a10, det02 = a00 * a13 - a03 * a10, det03 = a01 * a12 - a02 * a11, det04 = a01 * a13 - a03 * a11, det05 = a02 * a13 - a03 * a12, det06 = a20 * a31 - a21 * a30, det07 = a20 * a32 - a22 * a30, det08 = a20 * a33 - a23 * a30, det09 = a21 * a32 - a22 * a31, det10 = a21 * a33 - a23 * a31, det11 = a22 * a33 - a23 * a32;
-
- var det = (det00 * det11 - det01 * det10 + det02 * det09 + det03 * det08 - det04 * det07 + det05 * det06);
-
- if (!det)
- return null;
-
- det = 1.0 / det;
-
- this.values[0] = (a11 * det11 - a12 * det10 + a13 * det09) * det;
- this.values[1] = (-a01 * det11 + a02 * det10 - a03 * det09) * det;
- this.values[2] = (a31 * det05 - a32 * det04 + a33 * det03) * det;
- this.values[3] = (-a21 * det05 + a22 * det04 - a23 * det03) * det;
- this.values[4] = (-a10 * det11 + a12 * det08 - a13 * det07) * det;
- this.values[5] = (a00 * det11 - a02 * det08 + a03 * det07) * det;
- this.values[6] = (-a30 * det05 + a32 * det02 - a33 * det01) * det;
- this.values[7] = (a20 * det05 - a22 * det02 + a23 * det01) * det;
- this.values[8] = (a10 * det10 - a11 * det08 + a13 * det06) * det;
- this.values[9] = (-a00 * det10 + a01 * det08 - a03 * det06) * det;
- this.values[10] = (a30 * det04 - a31 * det02 + a33 * det00) * det;
- this.values[11] = (-a20 * det04 + a21 * det02 - a23 * det00) * det;
- this.values[12] = (-a10 * det09 + a11 * det07 - a12 * det06) * det;
- this.values[13] = (a00 * det09 - a01 * det07 + a02 * det06) * det;
- this.values[14] = (-a30 * det03 + a31 * det01 - a32 * det00) * det;
- this.values[15] = (a20 * det03 - a21 * det01 + a22 * det00) * det;
-
- return this;
- };
-
- mat4.prototype.multiply = function (matrix) {
- var a00 = this.values[0], a01 = this.values[1], a02 = this.values[2], a03 = this.values[3];
- var a10 = this.values[4], a11 = this.values[5], a12 = this.values[6], a13 = this.values[7];
- var a20 = this.values[8], a21 = this.values[9], a22 = this.values[10], a23 = this.values[11];
- var a30 = this.values[12], a31 = this.values[13], a32 = this.values[14], a33 = this.values[15];
-
- var b0 = matrix.at(0), b1 = matrix.at(1), b2 = matrix.at(2), b3 = matrix.at(3);
-
- this.values[0] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;
- this.values[1] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;
- this.values[2] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32;
- this.values[3] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;
-
- b0 = matrix.at(4);
- b1 = matrix.at(5);
- b2 = matrix.at(6);
- b3 = matrix.at(7);
-
- this.values[4] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;
- this.values[5] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;
- this.values[6] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32;
- this.values[7] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;
-
- b0 = matrix.at(8);
- b1 = matrix.at(9);
- b2 = matrix.at(10);
- b3 = matrix.at(11);
-
- this.values[8] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;
- this.values[9] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;
- this.values[10] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32;
- this.values[11] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;
-
- b0 = matrix.at(12);
- b1 = matrix.at(13);
- b2 = matrix.at(14);
- b3 = matrix.at(15);
-
- this.values[12] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;
- this.values[13] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;
- this.values[14] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32;
- this.values[15] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;
-
- return this;
- };
-
- mat4.prototype.multiplyVec3 = function (vector) {
- var x = vector.x, y = vector.y, z = vector.z;
-
- return new TSM.vec3([
- this.values[0] * x + this.values[4] * y + this.values[8] * z + this.values[12],
- this.values[1] * x + this.values[5] * y + this.values[9] * z + this.values[13],
- this.values[2] * x + this.values[6] * y + this.values[10] * z + this.values[14]
- ]);
- };
-
- mat4.prototype.multiplyVec4 = function (vector, dest) {
- if (typeof dest === "undefined") { dest = null; }
- if (!dest)
- dest = new TSM.vec4();
-
- var x = vector.x, y = vector.y, z = vector.z, w = vector.w;
-
- dest.x = this.values[0] * x + this.values[4] * y + this.values[8] * z + this.values[12] * w;
- dest.y = this.values[1] * x + this.values[5] * y + this.values[9] * z + this.values[13] * w;
- dest.z = this.values[2] * x + this.values[6] * y + this.values[10] * z + this.values[14] * w;
- dest.w = this.values[3] * x + this.values[7] * y + this.values[11] * z + this.values[15] * w;
-
- return dest;
- };
-
- mat4.prototype.toMat3 = function () {
- return new TSM.mat3([
- this.values[0],
- this.values[1],
- this.values[2],
- this.values[4],
- this.values[5],
- this.values[6],
- this.values[8],
- this.values[9],
- this.values[10]
- ]);
- };
-
- mat4.prototype.toInverseMat3 = function () {
- var a00 = this.values[0], a01 = this.values[1], a02 = this.values[2], a10 = this.values[4], a11 = this.values[5], a12 = this.values[6], a20 = this.values[8], a21 = this.values[9], a22 = this.values[10];
-
- var det01 = a22 * a11 - a12 * a21, det11 = -a22 * a10 + a12 * a20, det21 = a21 * a10 - a11 * a20;
-
- var det = a00 * det01 + a01 * det11 + a02 * det21;
-
- if (!det)
- return null;
-
- det = 1.0 / det;
-
- return new TSM.mat3([
- det01 * det,
- (-a22 * a01 + a02 * a21) * det,
- (a12 * a01 - a02 * a11) * det,
- det11 * det,
- (a22 * a00 - a02 * a20) * det,
- (-a12 * a00 + a02 * a10) * det,
- det21 * det,
- (-a21 * a00 + a01 * a20) * det,
- (a11 * a00 - a01 * a10) * det
- ]);
- };
-
- mat4.prototype.translate = function (vector) {
- var x = vector.x, y = vector.y, z = vector.z;
-
- this.values[12] += this.values[0] * x + this.values[4] * y + this.values[8] * z;
- this.values[13] += this.values[1] * x + this.values[5] * y + this.values[9] * z;
- this.values[14] += this.values[2] * x + this.values[6] * y + this.values[10] * z;
- this.values[15] += this.values[3] * x + this.values[7] * y + this.values[11] * z;
-
- return this;
- };
-
- mat4.prototype.scale = function (vector) {
- var x = vector.x, y = vector.y, z = vector.z;
-
- this.values[0] *= x;
- this.values[1] *= x;
- this.values[2] *= x;
- this.values[3] *= x;
-
- this.values[4] *= y;
- this.values[5] *= y;
- this.values[6] *= y;
- this.values[7] *= y;
-
- this.values[8] *= z;
- this.values[9] *= z;
- this.values[10] *= z;
- this.values[11] *= z;
-
- return this;
- };
-
- mat4.prototype.rotate = function (angle, axis) {
- var x = axis.x, y = axis.y, z = axis.z;
-
- var length = Math.sqrt(x * x + y * y + z * z);
-
- if (!length)
- return null;
-
- if (length !== 1) {
- length = 1 / length;
- x *= length;
- y *= length;
- z *= length;
- }
-
- var s = Math.sin(angle);
- var c = Math.cos(angle);
-
- var t = 1.0 - c;
-
- var a00 = this.values[0], a01 = this.values[1], a02 = this.values[2], a03 = this.values[3], a10 = this.values[4], a11 = this.values[5], a12 = this.values[6], a13 = this.values[7], a20 = this.values[8], a21 = this.values[9], a22 = this.values[10], a23 = this.values[11];
-
- var b00 = x * x * t + c, b01 = y * x * t + z * s, b02 = z * x * t - y * s, b10 = x * y * t - z * s, b11 = y * y * t + c, b12 = z * y * t + x * s, b20 = x * z * t + y * s, b21 = y * z * t - x * s, b22 = z * z * t + c;
-
- this.values[0] = a00 * b00 + a10 * b01 + a20 * b02;
- this.values[1] = a01 * b00 + a11 * b01 + a21 * b02;
- this.values[2] = a02 * b00 + a12 * b01 + a22 * b02;
- this.values[3] = a03 * b00 + a13 * b01 + a23 * b02;
-
- this.values[4] = a00 * b10 + a10 * b11 + a20 * b12;
- this.values[5] = a01 * b10 + a11 * b11 + a21 * b12;
- this.values[6] = a02 * b10 + a12 * b11 + a22 * b12;
- this.values[7] = a03 * b10 + a13 * b11 + a23 * b12;
-
- this.values[8] = a00 * b20 + a10 * b21 + a20 * b22;
- this.values[9] = a01 * b20 + a11 * b21 + a21 * b22;
- this.values[10] = a02 * b20 + a12 * b21 + a22 * b22;
- this.values[11] = a03 * b20 + a13 * b21 + a23 * b22;
-
- return this;
- };
-
- mat4.frustum = function (left, right, bottom, top, near, far) {
- var rl = (right - left), tb = (top - bottom), fn = (far - near);
-
- return new mat4([
- (near * 2) / rl,
- 0,
- 0,
- 0,
- 0,
- (near * 2) / tb,
- 0,
- 0,
- (right + left) / rl,
- (top + bottom) / tb,
- -(far + near) / fn,
- -1,
- 0,
- 0,
- -(far * near * 2) / fn,
- 0
- ]);
- };
-
- mat4.perspective = function (fov, aspect, near, far) {
- var top = near * Math.tan(fov * Math.PI / 360.0), right = top * aspect;
-
- return mat4.frustum(-right, right, -top, top, near, far);
- };
-
- mat4.orthographic = function (left, right, bottom, top, near, far) {
- var rl = (right - left), tb = (top - bottom), fn = (far - near);
-
- return new mat4([
- 2 / rl,
- 0,
- 0,
- 0,
- 0,
- 2 / tb,
- 0,
- 0,
- 0,
- 0,
- -2 / fn,
- 0,
- -(left + right) / rl,
- -(top + bottom) / tb,
- -(far + near) / fn,
- 1
- ]);
- };
-
- mat4.lookAt = function (position, target, up) {
- if (typeof up === "undefined") { up = TSM.vec3.up; }
- if (position.equals(target)) {
- return this.identity;
- }
-
- var z = TSM.vec3.difference(position, target).normalize();
-
- var x = TSM.vec3.cross(up, z).normalize();
- var y = TSM.vec3.cross(z, x).normalize();
-
- return new mat4([
- x.x,
- y.x,
- z.x,
- 0,
- x.y,
- y.y,
- z.y,
- 0,
- x.z,
- y.z,
- z.z,
- 0,
- -TSM.vec3.dot(x, position),
- -TSM.vec3.dot(y, position),
- -TSM.vec3.dot(z, position),
- 1
- ]);
- };
-
- mat4.product = function (m1, m2, result) {
- if (typeof result === "undefined") { result = null; }
- var a00 = m1.at(0), a01 = m1.at(1), a02 = m1.at(2), a03 = m1.at(3), a10 = m1.at(4), a11 = m1.at(5), a12 = m1.at(6), a13 = m1.at(7), a20 = m1.at(8), a21 = m1.at(9), a22 = m1.at(10), a23 = m1.at(11), a30 = m1.at(12), a31 = m1.at(13), a32 = m1.at(14), a33 = m1.at(15);
-
- var b00 = m2.at(0), b01 = m2.at(1), b02 = m2.at(2), b03 = m2.at(3), b10 = m2.at(4), b11 = m2.at(5), b12 = m2.at(6), b13 = m2.at(7), b20 = m2.at(8), b21 = m2.at(9), b22 = m2.at(10), b23 = m2.at(11), b30 = m2.at(12), b31 = m2.at(13), b32 = m2.at(14), b33 = m2.at(15);
-
- if (result) {
- result.init([
- b00 * a00 + b01 * a10 + b02 * a20 + b03 * a30,
- b00 * a01 + b01 * a11 + b02 * a21 + b03 * a31,
- b00 * a02 + b01 * a12 + b02 * a22 + b03 * a32,
- b00 * a03 + b01 * a13 + b02 * a23 + b03 * a33,
- b10 * a00 + b11 * a10 + b12 * a20 + b13 * a30,
- b10 * a01 + b11 * a11 + b12 * a21 + b13 * a31,
- b10 * a02 + b11 * a12 + b12 * a22 + b13 * a32,
- b10 * a03 + b11 * a13 + b12 * a23 + b13 * a33,
- b20 * a00 + b21 * a10 + b22 * a20 + b23 * a30,
- b20 * a01 + b21 * a11 + b22 * a21 + b23 * a31,
- b20 * a02 + b21 * a12 + b22 * a22 + b23 * a32,
- b20 * a03 + b21 * a13 + b22 * a23 + b23 * a33,
- b30 * a00 + b31 * a10 + b32 * a20 + b33 * a30,
- b30 * a01 + b31 * a11 + b32 * a21 + b33 * a31,
- b30 * a02 + b31 * a12 + b32 * a22 + b33 * a32,
- b30 * a03 + b31 * a13 + b32 * a23 + b33 * a33
- ]);
-
- return result;
- } else {
- return new mat4([
- b00 * a00 + b01 * a10 + b02 * a20 + b03 * a30,
- b00 * a01 + b01 * a11 + b02 * a21 + b03 * a31,
- b00 * a02 + b01 * a12 + b02 * a22 + b03 * a32,
- b00 * a03 + b01 * a13 + b02 * a23 + b03 * a33,
- b10 * a00 + b11 * a10 + b12 * a20 + b13 * a30,
- b10 * a01 + b11 * a11 + b12 * a21 + b13 * a31,
- b10 * a02 + b11 * a12 + b12 * a22 + b13 * a32,
- b10 * a03 + b11 * a13 + b12 * a23 + b13 * a33,
- b20 * a00 + b21 * a10 + b22 * a20 + b23 * a30,
- b20 * a01 + b21 * a11 + b22 * a21 + b23 * a31,
- b20 * a02 + b21 * a12 + b22 * a22 + b23 * a32,
- b20 * a03 + b21 * a13 + b22 * a23 + b23 * a33,
- b30 * a00 + b31 * a10 + b32 * a20 + b33 * a30,
- b30 * a01 + b31 * a11 + b32 * a21 + b33 * a31,
- b30 * a02 + b31 * a12 + b32 * a22 + b33 * a32,
- b30 * a03 + b31 * a13 + b32 * a23 + b33 * a33
- ]);
- }
- };
-
- mat4.identity = new mat4().setIdentity();
- return mat4;
- })();
- TSM.mat4 = mat4;
-})(TSM || (TSM = {}));
-/**
-* @fileoverview TSM - A TypeScript vector and matrix math library
-* @author Matthias Ferch
-* @version 0.6
-*/
-/*
-* Copyright (c) 2012 Matthias Ferch
-*
-* Project homepage: https://github.com/vexator/TSM
-*
-* This software is provided 'as-is', without any express or implied
-* warranty. In no event will the authors be held liable for any damages
-* arising from the use of this software.
-*
-* Permission is granted to anyone to use this software for any purpose,
-* including commercial applications, and to alter it and redistribute it
-* freely, subject to the following restrictions:
-*
-* 1. The origin of this software must not be misrepresented; you must not
-* claim that you wrote the original software. If you use this software
-* in a product, an acknowledgment in the product documentation would be
-* appreciated but is not required.
-*
-* 2. Altered source versions must be plainly marked as such, and must not
-* be misrepresented as being the original software.
-*
-* 3. This notice may not be removed or altered from any source
-* distribution.
-*/
-///
-var TSM;
-(function (TSM) {
- var quat = (function () {
- function quat(values) {
- if (typeof values === "undefined") { values = null; }
- this.values = new Float32Array(4);
- if (values) {
- this.xyzw = values;
- }
- }
- Object.defineProperty(quat.prototype, "x", {
- get: function () {
- return this.values[0];
- },
- set: function (value) {
- this.values[0] = value;
- },
- enumerable: true,
- configurable: true
- });
-
- Object.defineProperty(quat.prototype, "y", {
- get: function () {
- return this.values[1];
- },
- set: function (value) {
- this.values[1] = value;
- },
- enumerable: true,
- configurable: true
- });
-
- Object.defineProperty(quat.prototype, "z", {
- get: function () {
- return this.values[2];
- },
- set: function (value) {
- this.values[2] = value;
- },
- enumerable: true,
- configurable: true
- });
-
- Object.defineProperty(quat.prototype, "w", {
- get: function () {
- return this.values[3];
- },
- set: function (value) {
- this.values[3] = value;
- },
- enumerable: true,
- configurable: true
- });
-
- Object.defineProperty(quat.prototype, "xy", {
- get: function () {
- return [
- this.values[0],
- this.values[1]
- ];
- },
- set: function (values) {
- this.values[0] = values[0];
- this.values[1] = values[1];
- },
- enumerable: true,
- configurable: true
- });
-
- Object.defineProperty(quat.prototype, "xyz", {
- get: function () {
- return [
- this.values[0],
- this.values[1],
- this.values[2]
- ];
- },
- set: function (values) {
- this.values[0] = values[0];
- this.values[1] = values[1];
- this.values[2] = values[2];
- },
- enumerable: true,
- configurable: true
- });
-
- Object.defineProperty(quat.prototype, "xyzw", {
- get: function () {
- return [
- this.values[0],
- this.values[1],
- this.values[2],
- this.values[3]
- ];
- },
- set: function (values) {
- this.values[0] = values[0];
- this.values[1] = values[1];
- this.values[2] = values[2];
- this.values[3] = values[3];
- },
- enumerable: true,
- configurable: true
- });
-
-
-
-
-
-
-
-
- quat.prototype.at = function (index) {
- return this.values[index];
- };
-
- quat.prototype.reset = function () {
- for (var i = 0; i < 4; i++) {
- this.values[i] = 0;
- }
- };
-
- quat.prototype.copy = function (dest) {
- if (typeof dest === "undefined") { dest = null; }
- if (!dest)
- dest = new quat();
-
- for (var i = 0; i < 4; i++) {
- dest.values[i] = this.values[i];
- }
-
- return dest;
- };
-
- quat.prototype.roll = function () {
- var x = this.x, y = this.y, z = this.z, w = this.w;
-
- return Math.atan2(2.0 * (x * y + w * z), w * w + x * x - y * y - z * z);
- };
-
- quat.prototype.pitch = function () {
- var x = this.x, y = this.y, z = this.z, w = this.w;
-
- return Math.atan2(2.0 * (y * z + w * x), w * w - x * x - y * y + z * z);
- };
-
- quat.prototype.yaw = function () {
- return Math.asin(2.0 * (this.x * this.z - this.w * this.y));
- };
-
- quat.prototype.equals = function (vector, threshold) {
- if (typeof threshold === "undefined") { threshold = EPSILON; }
- for (var i = 0; i < 4; i++) {
- if (Math.abs(this.values[i] - vector.at(i)) > threshold)
- return false;
- }
-
- return true;
- };
-
- quat.prototype.setIdentity = function () {
- this.x = 0;
- this.y = 0;
- this.z = 0;
- this.w = 1;
-
- return this;
- };
-
- quat.prototype.calculateW = function () {
- var x = this.x, y = this.y, z = this.z;
-
- this.w = -(Math.sqrt(Math.abs(1.0 - x * x - y * y - z * z)));
-
- return this;
- };
-
- quat.dot = function (q1, q2) {
- return q1.x * q2.x + q1.y * q2.y + q1.z * q2.z + q1.w * q2.w;
- };
-
- quat.prototype.inverse = function () {
- var dot = quat.dot(this, this);
-
- if (!dot) {
- this.xyzw = [0, 0, 0, 0];
-
- return this;
- }
-
- var invDot = dot ? 1.0 / dot : 0;
-
- this.x *= -invDot;
- this.y *= -invDot;
- this.z *= -invDot;
- this.w *= invDot;
-
- return this;
- };
-
- quat.prototype.conjugate = function () {
- this.values[0] *= -1;
- this.values[1] *= -1;
- this.values[2] *= -1;
-
- return this;
- };
-
- quat.prototype.length = function () {
- var x = this.x, y = this.y, z = this.z, w = this.w;
-
- return Math.sqrt(x * x + y * y + z * z + w * w);
- };
-
- quat.prototype.normalize = function (dest) {
- if (typeof dest === "undefined") { dest = null; }
- if (!dest)
- dest = this;
-
- var x = this.x, y = this.y, z = this.z, w = this.w;
-
- var length = Math.sqrt(x * x + y * y + z * z + w * w);
-
- if (!length) {
- dest.x = 0;
- dest.y = 0;
- dest.z = 0;
- dest.w = 0;
-
- return dest;
- }
-
- length = 1 / length;
-
- dest.x = x * length;
- dest.y = y * length;
- dest.z = z * length;
- dest.w = w * length;
-
- return dest;
- };
-
- quat.prototype.add = function (other) {
- for (var i = 0; i < 4; i++) {
- this.values[i] += other.at(i);
- }
-
- return this;
- };
-
- quat.prototype.multiply = function (other) {
- var q1x = this.values[0], q1y = this.values[1], q1z = this.values[2], q1w = this.values[3];
-
- var q2x = other.x, q2y = other.y, q2z = other.z, q2w = other.w;
-
- this.x = q1x * q2w + q1w * q2x + q1y * q2z - q1z * q2y;
- this.y = q1y * q2w + q1w * q2y + q1z * q2x - q1x * q2z;
- this.z = q1z * q2w + q1w * q2z + q1x * q2y - q1y * q2x;
- this.w = q1w * q2w - q1x * q2x - q1y * q2y - q1z * q2z;
-
- return this;
- };
-
- quat.prototype.multiplyVec3 = function (vector, dest) {
- if (typeof dest === "undefined") { dest = null; }
- if (!dest)
- dest = new TSM.vec3();
-
- var x = vector.x, y = vector.y, z = vector.z;
-
- var qx = this.x, qy = this.y, qz = this.z, qw = this.w;
-
- var ix = qw * x + qy * z - qz * y, iy = qw * y + qz * x - qx * z, iz = qw * z + qx * y - qy * x, iw = -qx * x - qy * y - qz * z;
-
- dest.x = ix * qw + iw * -qx + iy * -qz - iz * -qy;
- dest.y = iy * qw + iw * -qy + iz * -qx - ix * -qz;
- dest.z = iz * qw + iw * -qz + ix * -qy - iy * -qx;
-
- return dest;
- };
-
- quat.prototype.toMat3 = function (dest) {
- if (typeof dest === "undefined") { dest = null; }
- if (!dest)
- dest = new TSM.mat3();
-
- var x = this.x, y = this.y, z = this.z, w = this.w;
-
- var x2 = x + x, y2 = y + y, z2 = z + z;
-
- var xx = x * x2, xy = x * y2, xz = x * z2, yy = y * y2, yz = y * z2, zz = z * z2, wx = w * x2, wy = w * y2, wz = w * z2;
-
- dest.init([
- 1 - (yy + zz),
- xy + wz,
- xz - wy,
- xy - wz,
- 1 - (xx + zz),
- yz + wx,
- xz + wy,
- yz - wx,
- 1 - (xx + yy)
- ]);
-
- return dest;
- };
-
- quat.prototype.toMat4 = function (dest) {
- if (typeof dest === "undefined") { dest = null; }
- if (!dest)
- dest = new TSM.mat4();
-
- var x = this.x, y = this.y, z = this.z, w = this.w, x2 = x + x, y2 = y + y, z2 = z + z, xx = x * x2, xy = x * y2, xz = x * z2, yy = y * y2, yz = y * z2, zz = z * z2, wx = w * x2, wy = w * y2, wz = w * z2;
-
- dest.init([
- 1 - (yy + zz),
- xy + wz,
- xz - wy,
- 0,
- xy - wz,
- 1 - (xx + zz),
- yz + wx,
- 0,
- xz + wy,
- yz - wx,
- 1 - (xx + yy),
- 0,
- 0,
- 0,
- 0,
- 1
- ]);
-
- return dest;
- };
-
- quat.sum = function (q1, q2, dest) {
- if (typeof dest === "undefined") { dest = null; }
- if (!dest)
- dest = new quat();
-
- dest.x = q1.x + q2.x;
- dest.y = q1.y + q2.y;
- dest.z = q1.z + q2.z;
- dest.w = q1.w + q2.w;
-
- return dest;
- };
-
- quat.product = function (q1, q2, dest) {
- if (typeof dest === "undefined") { dest = null; }
- if (!dest)
- dest = new quat();
-
- var q1x = q1.x, q1y = q1.y, q1z = q1.z, q1w = q1.w, q2x = q2.x, q2y = q2.y, q2z = q2.z, q2w = q2.w;
-
- dest.x = q1x * q2w + q1w * q2x + q1y * q2z - q1z * q2y;
- dest.y = q1y * q2w + q1w * q2y + q1z * q2x - q1x * q2z;
- dest.z = q1z * q2w + q1w * q2z + q1x * q2y - q1y * q2x;
- dest.w = q1w * q2w - q1x * q2x - q1y * q2y - q1z * q2z;
-
- return dest;
- };
-
- quat.cross = function (q1, q2, dest) {
- if (typeof dest === "undefined") { dest = null; }
- if (!dest)
- dest = new quat();
-
- var q1x = q1.x, q1y = q1.y, q1z = q1.z, q1w = q1.w, q2x = q2.x, q2y = q2.y, q2z = q2.z, q2w = q2.w;
-
- dest.x = q1w * q2z + q1z * q2w + q1x * q2y - q1y * q2x;
- dest.y = q1w * q2w - q1x * q2x - q1y * q2y - q1z * q2z;
- dest.z = q1w * q2x + q1x * q2w + q1y * q2z - q1z * q2y;
- dest.w = q1w * q2y + q1y * q2w + q1z * q2x - q1x * q2z;
-
- return dest;
- };
-
- quat.shortMix = function (q1, q2, time, dest) {
- if (typeof dest === "undefined") { dest = null; }
- if (!dest)
- dest = new quat();
-
- if (time <= 0.0) {
- dest.xyzw = q1.xyzw;
-
- return dest;
- } else if (time >= 1.0) {
- dest.xyzw = q2.xyzw;
-
- return dest;
- }
-
- var cos = quat.dot(q1, q2), q2a = q2.copy();
-
- if (cos < 0.0) {
- q2a.inverse();
- cos = -cos;
- }
-
- var k0, k1;
-
- if (cos > 0.9999) {
- k0 = 1 - time;
- k1 = 0 + time;
- } else {
- var sin = Math.sqrt(1 - cos * cos);
- var angle = Math.atan2(sin, cos);
-
- var oneOverSin = 1 / sin;
-
- k0 = Math.sin((1 - time) * angle) * oneOverSin;
- k1 = Math.sin((0 + time) * angle) * oneOverSin;
- }
-
- dest.x = k0 * q1.x + k1 * q2a.x;
- dest.y = k0 * q1.y + k1 * q2a.y;
- dest.z = k0 * q1.z + k1 * q2a.z;
- dest.w = k0 * q1.w + k1 * q2a.w;
-
- return dest;
- };
-
- quat.mix = function (q1, q2, time, dest) {
- if (typeof dest === "undefined") { dest = null; }
- if (!dest)
- dest = new quat();
-
- var cosHalfTheta = q1.x * q2.x + q1.y * q2.y + q1.z * q2.z + q1.w * q2.w;
-
- if (Math.abs(cosHalfTheta) >= 1.0) {
- dest.xyzw = q1.xyzw;
-
- return dest;
- }
-
- var halfTheta = Math.acos(cosHalfTheta), sinHalfTheta = Math.sqrt(1.0 - cosHalfTheta * cosHalfTheta);
-
- if (Math.abs(sinHalfTheta) < 0.001) {
- dest.x = q1.x * 0.5 + q2.x * 0.5;
- dest.y = q1.y * 0.5 + q2.y * 0.5;
- dest.z = q1.z * 0.5 + q2.z * 0.5;
- dest.w = q1.w * 0.5 + q2.w * 0.5;
-
- return dest;
- }
-
- var ratioA = Math.sin((1 - time) * halfTheta) / sinHalfTheta, ratioB = Math.sin(time * halfTheta) / sinHalfTheta;
-
- dest.x = q1.x * ratioA + q2.x * ratioB;
- dest.y = q1.y * ratioA + q2.y * ratioB;
- dest.z = q1.z * ratioA + q2.z * ratioB;
- dest.w = q1.w * ratioA + q2.w * ratioB;
-
- return dest;
- };
-
- quat.fromAxis = function (axis, angle, dest) {
- if (typeof dest === "undefined") { dest = null; }
- if (!dest)
- dest = new quat();
-
- angle *= 0.5;
- var sin = Math.sin(angle);
-
- dest.x = axis.x * sin;
- dest.y = axis.y * sin;
- dest.z = axis.z * sin;
- dest.w = Math.cos(angle);
-
- return dest;
- };
-
- quat.identity = new quat().setIdentity();
- return quat;
- })();
- TSM.quat = quat;
-})(TSM || (TSM = {}));
-//# sourceMappingURL=tsm-0.7.js.map
-
-var SpriteGL;
-(function (SpriteGL) {
- var Shader = (function () {
- function Shader(gl) {
- this.gl = null;
- this.gl = gl;
- this.glProgram = this.MakeProgram(gl);
- this.VertexPosAttribute = gl.getAttribLocation(this.glProgram, "aVertexPosition");
- this.TexCoordAttribute = gl.getAttribLocation(this.glProgram, "aTexCoord");
- this.TexSampleUniform = gl.getUniformLocation(this.glProgram, "sampler2d");
- this.MatUniform = gl.getUniformLocation(this.glProgram, "uProjectionView");
- this.CameraPosUniform = gl.getUniformLocation(this.glProgram, "uCameraPos");
- }
- Shader.prototype.UseProgram = function () {
- this.gl.useProgram(this.glProgram);
- this.gl.uniform1i(this.TexSampleUniform, 0);
- };
- Shader.prototype.UpdatePosition = function (x, y) {
- this.gl.uniform2f(this.CameraPosUniform, x, y);
- };
- Shader.prototype.MakeProgram = function (gl) {
- var vertexShader = this.CompileShader(gl, Shader.defaultVertexShaderSrc, gl.VERTEX_SHADER);
- var fragmentShader = this.CompileShader(gl, Shader.defaultFragmentShaderSrc, gl.FRAGMENT_SHADER);
- var glProgram = gl.createProgram();
- gl.attachShader(glProgram, vertexShader);
- gl.attachShader(glProgram, fragmentShader);
- gl.linkProgram(glProgram);
- return glProgram;
- };
- Shader.prototype.CompileShader = function (gl, src, type) {
- var Shader = gl.createShader(type);
- gl.shaderSource(Shader, src);
- gl.compileShader(Shader);
- if (!gl.getShaderParameter(Shader, gl.COMPILE_STATUS)) {
- alert(gl.getShaderInfoLog(Shader));
- }
- return Shader;
- };
- Shader.prototype.updateMatrix = function (mat) {
- this.gl.uniformMatrix4fv(this.MatUniform, false, mat.all());
- };
- Shader.defaultVertexShaderSrc = [
- "attribute vec3 aVertexPosition;",
- "attribute vec2 aTexCoord;",
- "uniform mat4 uProjectionView;",
- "uniform vec2 uCameraPos;",
- "varying vec2 vtexCoord;",
- "void main(void) {",
- " vtexCoord = aTexCoord;",
- " gl_Position = vec4(aVertexPosition.x - uCameraPos.x, aVertexPosition.y - uCameraPos.y, aVertexPosition.z, 1.0) * uProjectionView;",
- "}"
- ].join("\n");
- Shader.defaultFragmentShaderSrc = [
- "precision mediump float;",
- "uniform sampler2D sampler2d;",
- "varying vec2 vtexCoord;",
- "void main(void) {",
- " gl_FragColor = texture2D(sampler2d, vec2(vtexCoord.s,vtexCoord.t));",
- " if(gl_FragColor.a < 0.5) discard;",
- "}"
- ].join("\n");
- return Shader;
- })();
- SpriteGL.Shader = Shader;
-})(SpriteGL || (SpriteGL = {}));
-
-var SpriteGL;
-(function (SpriteGL) {
- var SpriteRenderer = (function () {
- function SpriteRenderer(webglContext, Image, Filtering) {
- if (Filtering === void 0) { Filtering = SpriteRenderer.TextureFilteringLinear; }
- this.gl = webglContext;
- this.vbo = new SpriteGL.VBO(this.gl);
- this.Shader = new SpriteGL.Shader(this.gl);
- this.Text = new TextDrawer(this.gl);
- this.Shader.UseProgram();
- this.CreateTexture(Image, Filtering);
- this.vbo.SetupForDraw(this.Shader.VertexPosAttribute, this.Shader.TexCoordAttribute, Image.width);
- this.gl.clearColor(0.0, 0.0, 0.0, 1.0);
- this.gl.blendFunc(this.gl.SRC_ALPHA, this.gl.ONE_MINUS_SRC_ALPHA);
- this.gl.enable(this.gl.BLEND);
- this.SetHight(0.0);
- this.gl.enable(this.gl.DEPTH_TEST);
- this.gl.depthFunc(this.gl.LEQUAL);
- }
- SpriteRenderer.prototype.RenderAll = function () {
- this.gl.clear(this.gl.COLOR_BUFFER_BIT);
- this.gl.bindTexture(this.gl.TEXTURE_2D, this.texture);
- this.vbo.RenderAllSpr();
- this.gl.bindTexture(this.gl.TEXTURE_2D, this.Text.texture);
- this.vbo.RenderAllTxt();
- };
- SpriteRenderer.prototype.UpdateViewPort = function (width, height) {
- this.gl.viewport(0, 0, width, height);
- var projmatrix = TSM.mat4.orthographic(-width / 2, width / 2, height / 2, -height / 2, 0.1, 2.0);
- var cameramatrix = TSM.mat4.lookAt(new TSM.vec3([0.0, 0.0, 1.0]), new TSM.vec3([0.0, 0.0, 0.0]), new TSM.vec3([0.0, 1.0, 0.0]));
- this.Shader.updateMatrix(projmatrix.multiply(cameramatrix));
- };
- SpriteRenderer.prototype.DrawSpr = function (AtlasX, AtlasY, AtlasWidth, AtlasHeigh, ScreenX, ScreenY, ScreenWidth, ScreenHeight) {
- this.vbo.DrawSpr(AtlasX, AtlasY, AtlasWidth, AtlasHeigh, ScreenX, ScreenY, ScreenWidth, ScreenHeight);
- };
- SpriteRenderer.prototype.SetHight = function (hight) {
- this.vbo.SetupHeight(hight);
- };
- SpriteRenderer.prototype.PrepareTxt = function (str, color, fontSize, outLine) {
- if (outLine === void 0) { outLine = false; }
- return this.Text.PrepareTxt(str, color, fontSize, outLine);
- };
- SpriteRenderer.prototype.DisposeTxt = function (txtObj) {
- this.Text.DisposeTxt(txtObj);
- };
- SpriteRenderer.prototype.DrawTxt = function (txtObj, PosX, PosY) {
- this.vbo.DrawTxt(txtObj.Pos.x, txtObj.Pos.y, txtObj.Size.Width, txtObj.Size.Height, PosX, PosY, txtObj.Size.Width, txtObj.Size.Height);
- };
- SpriteRenderer.prototype.UpdateCamera = function (x, y) {
- this.Shader.UpdatePosition(x, y);
- };
- SpriteRenderer.prototype.CreateTexture = function (image, filtering) {
- this.texture = this.gl.createTexture();
- this.gl.bindTexture(this.gl.TEXTURE_2D, this.texture);
- this.gl.texImage2D(this.gl.TEXTURE_2D, 0, this.gl.RGBA, this.gl.RGBA, this.gl.UNSIGNED_BYTE, image);
- if (filtering == SpriteRenderer.TextureFilteringLinear) {
- this.gl.texParameteri(this.gl.TEXTURE_2D, this.gl.TEXTURE_MAG_FILTER, this.gl.LINEAR);
- this.gl.texParameteri(this.gl.TEXTURE_2D, this.gl.TEXTURE_MIN_FILTER, this.gl.LINEAR);
- }
- else {
- this.gl.texParameteri(this.gl.TEXTURE_2D, this.gl.TEXTURE_MAG_FILTER, this.gl.NEAREST);
- this.gl.texParameteri(this.gl.TEXTURE_2D, this.gl.TEXTURE_MIN_FILTER, this.gl.NEAREST);
- }
- };
- SpriteRenderer.fromCanvas = function (canvas, Image, Filtering) {
- if (Filtering === void 0) { Filtering = SpriteRenderer.TextureFilteringLinear; }
- try {
- var ctx = canvas.getContext("webgl") || canvas.getContext("experimental-webgl");
- }
- catch (e) {
- console.log("Error with WebGL context initialization");
- return null;
- }
- var newRenderer = new SpriteRenderer(ctx, Image, Filtering);
- newRenderer.UpdateViewPort(canvas.width, canvas.height);
- return newRenderer;
- };
- SpriteRenderer.TextureFilteringLinear = 0;
- SpriteRenderer.TextureFilteringNearest = 1;
- return SpriteRenderer;
- })();
- SpriteGL.SpriteRenderer = SpriteRenderer;
-})(SpriteGL || (SpriteGL = {}));
-
-var TextDrawer = (function () {
- function TextDrawer(gl) {
- this.TextureSize = { Width: 1024, Height: 1024 };
- this.txtsList = new Array();
- this.gl = gl;
- this.canvas = document.createElement("canvas");
- this.canvas.width = 1024;
- this.canvas.height = 1024;
- this.canvas.style.backgroundColor = "black";
- this.ctx = this.canvas.getContext("2d");
- this.ctx.textBaseline = "top";
- this.texture = this.gl.createTexture();
- this.gl.bindTexture(this.gl.TEXTURE_2D, this.texture);
- this.gl.texImage2D(this.gl.TEXTURE_2D, 0, this.gl.RGBA, this.gl.RGBA, this.gl.UNSIGNED_BYTE, this.canvas);
- this.gl.texParameteri(this.gl.TEXTURE_2D, this.gl.TEXTURE_MAG_FILTER, this.gl.LINEAR);
- this.gl.texParameteri(this.gl.TEXTURE_2D, this.gl.TEXTURE_MIN_FILTER, this.gl.LINEAR);
- }
- TextDrawer.prototype.PrepareTxt = function (str, color, fontSize, outline) {
- this.ctx.font = "bold " + fontSize + "px Tahoma";
- var currTxtWidth = this.ctx.measureText(str).width;
- var currStartY = 0;
- var highestPosYIndex = 0;
- for (var i = 0; i < this.txtsList.length; i++) {
- if (this.txtsList[i].Pos.y >= this.txtsList[highestPosYIndex].Pos.y) {
- highestPosYIndex = i;
- currStartY = this.txtsList[highestPosYIndex].Pos.y + this.txtsList[highestPosYIndex].Size.Height * 1.2;
- }
- }
- var test = {
- str: str,
- Pos: { x: 0, y: currStartY },
- Size: {
- Width: currTxtWidth + Math.sqrt(fontSize) * 1.7,
- Height: fontSize + Math.sqrt(fontSize) * 2
- },
- Color: color,
- FontSize: fontSize,
- OutLine: outline
- };
- this.txtsList.push(test);
- this.BakeTexture();
- return test;
- };
- TextDrawer.prototype.DisposeTxt = function (txtObj) {
- var index = this.txtsList.indexOf(txtObj);
- if (index > -1 && index) {
- this.txtsList.splice(index, 1);
- }
- this.UpdatePositon();
- this.BakeTexture();
- };
- TextDrawer.prototype.UpdatePositon = function () {
- this.txtsList.sort(function (a, b) {
- return a.Pos.y - b.Pos.y;
- });
- for (var i = 0; i < this.txtsList.length; i++) {
- var newPosY = 0;
- for (var j = 0; j < i; j++) {
- newPosY += this.txtsList[j].Size.Height * 1.2;
- }
- this.txtsList[i].Pos.y = newPosY;
- }
- };
- TextDrawer.prototype.BakeTexture = function () {
- this.ctx.clearRect(0, 0, this.canvas.width, this.canvas.height);
- this.ctx.miterLimit = 1;
- this.ctx.lineJoin = "round";
- for (var i = 0; i < this.txtsList.length; i++) {
- this.ctx.fillStyle = this.txtsList[i].Color;
- this.ctx.font = "bold " + this.txtsList[i].FontSize + "px Tahoma";
- if (this.txtsList[i].OutLine) {
- this.ctx.lineWidth = Math.sqrt(this.txtsList[i].FontSize) * 1.5;
- this.ctx.strokeStyle = "black";
- this.ctx.strokeText(this.txtsList[i].str, 5, this.txtsList[i].Pos.y, 1024);
- }
- this.ctx.fillText(this.txtsList[i].str, 5, this.txtsList[i].Pos.y, 1024);
- }
- this.gl.bindTexture(this.gl.TEXTURE_2D, this.texture);
- this.gl.texSubImage2D(this.gl.TEXTURE_2D, 0, 0, 0, this.gl.RGBA, this.gl.UNSIGNED_BYTE, this.canvas);
- };
- return TextDrawer;
-})();
-
-var SpriteGL;
-(function (SpriteGL) {
- var VBO = (function () {
- function VBO(gl) {
- this.sprVerts = [];
- this.txtVerts = [];
- this.AtlasSize = 1;
- this.gl = null;
- this.gl = gl;
- this.verticlesBuffer = gl.createBuffer();
- gl.bindBuffer(gl.ARRAY_BUFFER, this.verticlesBuffer);
- }
- VBO.prototype.SetupHeight = function (hight) {
- this.hight = hight;
- };
- VBO.prototype.SetupForDraw = function (vertexPositionAttr, textureCoordAttr, AtlasSize) {
- this.gl.enableVertexAttribArray(vertexPositionAttr);
- this.gl.vertexAttribPointer(vertexPositionAttr, 3, this.gl.FLOAT, false, 20, 0);
- this.gl.enableVertexAttribArray(textureCoordAttr);
- this.gl.vertexAttribPointer(textureCoordAttr, 2, this.gl.FLOAT, false, 20, 12);
- this.gl.bufferData(this.gl.ARRAY_BUFFER, new Float32Array(15 * 10000), this.gl.STREAM_DRAW);
- this.AtlasSize = AtlasSize;
- };
- VBO.prototype.RenderAllSpr = function () {
- this.gl.bufferSubData(this.gl.ARRAY_BUFFER, 0, new Float32Array(this.sprVerts));
- this.gl.drawArrays(this.gl.TRIANGLES, 0, this.sprVerts.length / 5);
- this.sprVerts = [];
- };
- VBO.prototype.RenderAllTxt = function () {
- this.gl.bufferSubData(this.gl.ARRAY_BUFFER, 0, new Float32Array(this.txtVerts));
- this.gl.drawArrays(this.gl.TRIANGLES, 0, this.txtVerts.length / 5);
- this.txtVerts = [];
- };
- VBO.prototype.DrawSpr = function (AtlasX, AtlasY, AtlasWidth, AtlasHeigh, ScreenX, ScreenY, ScreenWidth, ScreenHeight) {
- for (var i = 0; i < VBO.defaultVerts.length; i += 2) {
- this.sprVerts.push(VBO.defaultVerts[i] * ScreenWidth + ScreenX | 0);
- this.sprVerts.push(VBO.defaultVerts[i + 1] * ScreenHeight + ScreenY | 0);
- this.sprVerts.push(this.hight);
- this.sprVerts.push(VBO.defaultVerts[i] * (AtlasWidth / this.AtlasSize) + (AtlasX / this.AtlasSize));
- this.sprVerts.push(VBO.defaultVerts[i + 1] * (AtlasHeigh / this.AtlasSize) + (AtlasY / this.AtlasSize));
- }
- };
- VBO.prototype.DrawTxt = function (AtlasX, AtlasY, AtlasWidth, AtlasHeigh, ScreenX, ScreenY, ScreenWidth, ScreenHeight) {
- for (var i = 0; i < VBO.defaultVerts.length; i += 2) {
- this.txtVerts.push(VBO.defaultVerts[i] * ScreenWidth + ScreenX | 0);
- this.txtVerts.push(VBO.defaultVerts[i + 1] * ScreenHeight + ScreenY | 0);
- this.txtVerts.push(this.hight);
- this.txtVerts.push(VBO.defaultVerts[i] * (AtlasWidth / 1024) + (AtlasX / 1024));
- this.txtVerts.push(VBO.defaultVerts[i + 1] * (AtlasHeigh / 1024) + (AtlasY / 1024));
- }
- };
- VBO.defaultVerts = [
- 0.0,
- 1.0,
- 1.0,
- 0.0,
- 0.0,
- 0.0,
- 0.0,
- 1.0,
- 1.0,
- 1.0,
- 1.0,
- 0.0
- ];
- return VBO;
- })();
- SpriteGL.VBO = VBO;
-})(SpriteGL || (SpriteGL = {}));
diff --git a/Example/app.ts b/demo/app.ts
similarity index 55%
rename from Example/app.ts
rename to demo/app.ts
index 04c57d0..19da394 100644
--- a/Example/app.ts
+++ b/demo/app.ts
@@ -1,13 +1,15 @@
-window.onload = function () {
- var canvas = document.getElementById("RenderElement");
+var SpriteGL = require("../");
+
+window.onload = function () {
+ var canvas = document.getElementById("RenderElement");
var img = new Image();
- img.src = "atlas.png";
- img.onload = function () {
- var Renderer = SpriteGL.SpriteRenderer.fromCanvas(canvas, img, SpriteGL.SpriteRenderer.TextureFilteringNearest);
+ img.src = require("./atlas.png");
+ img.onload = function () {
+ var Renderer = SpriteGL.SpriteRenderer.fromCanvas(canvas, img, SpriteGL.SpriteRenderer.TextureFilteringNearest);
var time = 0;
var txt = Renderer.PrepareTxt("8", "White", 25, true);
- var txt2 = Renderer.PrepareTxt("test", "Red", 13, true);
- var txt3 = Renderer.PrepareTxt("te5235t", "Red", 13, true);
+ var txt2 = Renderer.PrepareTxt("test", "Red", 13, true);
+ var txt3 = Renderer.PrepareTxt("te5235t", "Red", 13, true);
var Loop = () => {
time += 0.002;
var count = 100;
@@ -17,20 +19,19 @@
var rotx = x * Math.cos(time) - y * Math.sin(time);
var roty = y * Math.cos(time) + x * Math.sin(time);
// Renderer.DrawSpr(0, 0, 32, 32, rotx, roty, 32, 32);
- //Renderer.DrawSpr(0, 0, 32, 32, -roty, rotx, 32, 32);
- Renderer.SetHight(Math.random()/100);
+ // Renderer.DrawSpr(0, 0, 32, 32, -roty, rotx, 32, 32);
+ Renderer.SetHight(Math.random() / 100);
Renderer.DrawTxt(txt, rotx, roty);
Renderer.DrawTxt(txt2, -roty, rotx);
-
}
Renderer.DrawTxt(txt, 0, 0);
Renderer.DrawTxt(txt, 0, 100);
Renderer.DrawTxt(txt, 100, 0);
Renderer.DrawSpr(0, 0, 32, 32, -100, 0, 32, 32);
Renderer.UpdateCamera(time * 5, 0);
- Renderer.RenderAll();
- Renderer.DisposeTxt(txt2);
- txt2 = Renderer.PrepareTxt(time.toString(), "Red", 13, true);
+ Renderer.RenderAll();
+ Renderer.DisposeTxt(txt2);
+ txt2 = Renderer.PrepareTxt(time.toString(), "Red", 13, true);
requestAnimationFrame(Loop);
}
Loop();
diff --git a/Example/atlas.png b/demo/atlas.png
similarity index 100%
rename from Example/atlas.png
rename to demo/atlas.png
diff --git a/demo/index.html b/demo/index.html
new file mode 100644
index 0000000..b9c23ee
--- /dev/null
+++ b/demo/index.html
@@ -0,0 +1,18 @@
+
+
+
+
+
+ SpriteJS Example
+
+
+
+ SpriteJS Example
+
+
+
+
+
+
diff --git a/dist/SpriteGL.cjs.js b/dist/SpriteGL.cjs.js
new file mode 100644
index 0000000..015475c
--- /dev/null
+++ b/dist/SpriteGL.cjs.js
@@ -0,0 +1,290 @@
+/*!
+ * SpriteGL v0.0.0
+ * (c) 2015-present
+ * Released under the ISC License.
+ */
+'use strict';
+
+Object.defineProperty(exports, '__esModule', { value: true });
+
+var TSM = require('tsm');
+
+var Shader = /** @class */ (function () {
+ function Shader(gl) {
+ this.gl = null;
+ this.gl = gl;
+ this.glProgram = this.MakeProgram(gl);
+ this.VertexPosAttribute = gl.getAttribLocation(this.glProgram, "aVertexPosition");
+ this.TexCoordAttribute = gl.getAttribLocation(this.glProgram, "aTexCoord");
+ this.TexSampleUniform = gl.getUniformLocation(this.glProgram, "sampler2d");
+ this.MatUniform = gl.getUniformLocation(this.glProgram, "uProjectionView");
+ this.CameraPosUniform = gl.getUniformLocation(this.glProgram, "uCameraPos");
+ }
+ Shader.prototype.UseProgram = function () {
+ this.gl.useProgram(this.glProgram);
+ this.gl.uniform1i(this.TexSampleUniform, 0);
+ };
+ Shader.prototype.UpdatePosition = function (x, y) {
+ this.gl.uniform2f(this.CameraPosUniform, x, y);
+ };
+ Shader.prototype.MakeProgram = function (gl) {
+ var vertexShader = this.CompileShader(gl, Shader.defaultVertexShaderSrc, gl.VERTEX_SHADER);
+ var fragmentShader = this.CompileShader(gl, Shader.defaultFragmentShaderSrc, gl.FRAGMENT_SHADER);
+ var glProgram = gl.createProgram();
+ gl.attachShader(glProgram, vertexShader);
+ gl.attachShader(glProgram, fragmentShader);
+ gl.linkProgram(glProgram);
+ return glProgram;
+ };
+ Shader.prototype.CompileShader = function (gl, src, type) {
+ var Shader = gl.createShader(type);
+ gl.shaderSource(Shader, src);
+ gl.compileShader(Shader);
+ if (!gl.getShaderParameter(Shader, gl.COMPILE_STATUS)) {
+ alert(gl.getShaderInfoLog(Shader));
+ }
+ return Shader;
+ };
+ Shader.prototype.updateMatrix = function (mat) {
+ this.gl.uniformMatrix4fv(this.MatUniform, false, mat.all());
+ };
+ Shader.defaultVertexShaderSrc = "\n\t\tattribute vec3 aVertexPosition;\n\t\tattribute vec2 aTexCoord;\n\t\tuniform mat4 uProjectionView;\n\t\tuniform vec2 uCameraPos;\n\t\tvarying vec2 vtexCoord;\n\t\tvoid main(void) {\n\t\t\tvtexCoord = aTexCoord;\n\t\t\tgl_Position = vec4(aVertexPosition.x - uCameraPos.x, aVertexPosition.y - uCameraPos.y, aVertexPosition.z, 1.0) * uProjectionView;\n\t\t}\n\t";
+ Shader.defaultFragmentShaderSrc = "\n\t\tprecision mediump float;\n\t\tuniform sampler2D sampler2d;\n\t\tvarying vec2 vtexCoord;\n\t\tvoid main(void) {\n\t\t\tgl_FragColor = texture2D(sampler2d, vec2(vtexCoord.s,vtexCoord.t));\n\t\t\tif(gl_FragColor.a < 0.5) discard;\n\t\t}\n\t";
+ return Shader;
+}());
+
+var VBO = /** @class */ (function () {
+ function VBO(gl) {
+ this.sprVerts = [];
+ this.txtVerts = [];
+ this.AtlasSize = 1;
+ this.gl = null;
+ this.gl = gl;
+ this.verticlesBuffer = gl.createBuffer();
+ gl.bindBuffer(gl.ARRAY_BUFFER, this.verticlesBuffer);
+ }
+ VBO.prototype.SetupHeight = function (hight) {
+ this.hight = hight;
+ };
+ VBO.prototype.SetupForDraw = function (vertexPositionAttr, textureCoordAttr, AtlasSize) {
+ this.gl.enableVertexAttribArray(vertexPositionAttr);
+ this.gl.vertexAttribPointer(vertexPositionAttr, 3, this.gl.FLOAT, false, 20, 0);
+ this.gl.enableVertexAttribArray(textureCoordAttr);
+ this.gl.vertexAttribPointer(textureCoordAttr, 2, this.gl.FLOAT, false, 20, 12);
+ this.gl.bufferData(this.gl.ARRAY_BUFFER, new Float32Array(15 * 10000), this.gl.STREAM_DRAW);
+ this.AtlasSize = AtlasSize;
+ };
+ VBO.prototype.RenderAllSpr = function () {
+ this.gl.bufferSubData(this.gl.ARRAY_BUFFER, 0, new Float32Array(this.sprVerts));
+ this.gl.drawArrays(this.gl.TRIANGLES, 0, this.sprVerts.length / 5);
+ this.sprVerts = [];
+ };
+ VBO.prototype.RenderAllTxt = function () {
+ this.gl.bufferSubData(this.gl.ARRAY_BUFFER, 0, new Float32Array(this.txtVerts));
+ this.gl.drawArrays(this.gl.TRIANGLES, 0, this.txtVerts.length / 5);
+ this.txtVerts = [];
+ };
+ VBO.prototype.DrawSpr = function (AtlasX, AtlasY, AtlasWidth, AtlasHeigh, ScreenX, ScreenY, ScreenWidth, ScreenHeight) {
+ for (var i = 0; i < VBO.defaultVerts.length; i += 2) {
+ //Pos
+ this.sprVerts.push(VBO.defaultVerts[i] * ScreenWidth + ScreenX | 0);
+ this.sprVerts.push(VBO.defaultVerts[i + 1] * ScreenHeight + ScreenY | 0);
+ this.sprVerts.push(this.hight);
+ //Tex
+ this.sprVerts.push(VBO.defaultVerts[i] * (AtlasWidth / this.AtlasSize) + (AtlasX / this.AtlasSize));
+ this.sprVerts.push(VBO.defaultVerts[i + 1] * (AtlasHeigh / this.AtlasSize) + (AtlasY / this.AtlasSize));
+ }
+ };
+ VBO.prototype.DrawTxt = function (AtlasX, AtlasY, AtlasWidth, AtlasHeigh, ScreenX, ScreenY, ScreenWidth, ScreenHeight) {
+ for (var i = 0; i < VBO.defaultVerts.length; i += 2) {
+ //Pos
+ this.txtVerts.push(VBO.defaultVerts[i] * ScreenWidth + ScreenX | 0);
+ this.txtVerts.push(VBO.defaultVerts[i + 1] * ScreenHeight + ScreenY | 0);
+ this.txtVerts.push(this.hight);
+ //Tex
+ this.txtVerts.push(VBO.defaultVerts[i] * (AtlasWidth / 1024) + (AtlasX / 1024));
+ this.txtVerts.push(VBO.defaultVerts[i + 1] * (AtlasHeigh / 1024) + (AtlasY / 1024));
+ }
+ };
+ VBO.defaultVerts = [
+ //Left
+ 0.0, 1.0,
+ 1.0, 0.0,
+ 0.0, 0.0,
+ //Right
+ 0.0, 1.0,
+ 1.0, 1.0,
+ 1.0, 0.0 // 2
+ ];
+ return VBO;
+}());
+
+var TextDrawer = /** @class */ (function () {
+ function TextDrawer(gl) {
+ this.TextureSize = { Width: 1024, Height: 1024 };
+ this.txtsList = new Array();
+ this.gl = gl;
+ this.canvas = document.createElement("canvas");
+ this.canvas.width = 1024;
+ this.canvas.height = 1024;
+ this.canvas.style.backgroundColor = "black";
+ this.ctx = this.canvas.getContext("2d");
+ this.ctx.textBaseline = "top";
+ this.texture = this.gl.createTexture();
+ this.gl.bindTexture(this.gl.TEXTURE_2D, this.texture);
+ this.gl.texImage2D(this.gl.TEXTURE_2D, 0, this.gl.RGBA, this.gl.RGBA, this.gl.UNSIGNED_BYTE, this.canvas);
+ this.gl.texParameteri(this.gl.TEXTURE_2D, this.gl.TEXTURE_MAG_FILTER, this.gl.LINEAR);
+ this.gl.texParameteri(this.gl.TEXTURE_2D, this.gl.TEXTURE_MIN_FILTER, this.gl.LINEAR);
+ }
+ TextDrawer.prototype.PrepareTxt = function (str, color, fontSize, outline) {
+ this.ctx.font = "bold " + fontSize + "px Tahoma";
+ var currTxtWidth = this.ctx.measureText(str).width;
+ var currStartY = 0;
+ var highestPosYIndex = 0;
+ for (var i = 0; i < this.txtsList.length; i++) {
+ if (this.txtsList[i].Pos.y >= this.txtsList[highestPosYIndex].Pos.y) {
+ highestPosYIndex = i;
+ currStartY = this.txtsList[highestPosYIndex].Pos.y + this.txtsList[highestPosYIndex].Size.Height * 1.2;
+ }
+ }
+ var test = {
+ str: str,
+ Pos: { x: 0, y: currStartY },
+ Size: {
+ Width: currTxtWidth + Math.sqrt(fontSize) * 1.7,
+ Height: fontSize + Math.sqrt(fontSize) * 2
+ },
+ Color: color,
+ OutLine: outline,
+ FontSize: fontSize
+ };
+ this.txtsList.push(test);
+ this.BakeTexture();
+ return test;
+ };
+ TextDrawer.prototype.DisposeTxt = function (txtObj) {
+ var index = this.txtsList.indexOf(txtObj);
+ if (index > -1 && index) {
+ this.txtsList.splice(index, 1);
+ }
+ this.UpdatePositon();
+ this.BakeTexture();
+ };
+ TextDrawer.prototype.UpdatePositon = function () {
+ this.txtsList.sort(function (a, b) { return a.Pos.y - b.Pos.y; });
+ for (var i = 0; i < this.txtsList.length; i++) {
+ var newPosY = 0;
+ for (var j = 0; j < i; j++) {
+ newPosY += this.txtsList[j].Size.Height * 1.2;
+ }
+ this.txtsList[i].Pos.y = newPosY;
+ }
+ };
+ TextDrawer.prototype.BakeTexture = function () {
+ this.ctx.clearRect(0, 0, this.canvas.width, this.canvas.height);
+ this.ctx.miterLimit = 1;
+ this.ctx.lineJoin = "round";
+ for (var i = 0; i < this.txtsList.length; i++) {
+ this.ctx.fillStyle = this.txtsList[i].Color;
+ this.ctx.font = "bold " + this.txtsList[i].FontSize + "px Tahoma";
+ if (this.txtsList[i].OutLine) {
+ this.ctx.lineWidth = Math.sqrt(this.txtsList[i].FontSize) * 1.5;
+ this.ctx.strokeStyle = "black";
+ this.ctx.strokeText(this.txtsList[i].str, 5, this.txtsList[i].Pos.y, 1024);
+ }
+ this.ctx.fillText(this.txtsList[i].str, 5, this.txtsList[i].Pos.y, 1024);
+ }
+ this.gl.bindTexture(this.gl.TEXTURE_2D, this.texture);
+ this.gl.texSubImage2D(this.gl.TEXTURE_2D, 0, 0, 0, this.gl.RGBA, this.gl.UNSIGNED_BYTE, this.canvas);
+ };
+ return TextDrawer;
+}());
+
+var SpriteRenderer = /** @class */ (function () {
+ function SpriteRenderer(webglContext, Image, Filtering) {
+ if (Filtering === void 0) { Filtering = SpriteRenderer.TextureFilteringLinear; }
+ this.gl = webglContext;
+ this.vbo = new VBO(this.gl);
+ this.Shader = new Shader(this.gl);
+ this.Text = new TextDrawer(this.gl);
+ this.Shader.UseProgram();
+ this.CreateTexture(Image, Filtering);
+ this.vbo.SetupForDraw(this.Shader.VertexPosAttribute, this.Shader.TexCoordAttribute, Image.width);
+ this.gl.clearColor(0.0, 0.0, 0.0, 1.0);
+ this.gl.blendFunc(this.gl.SRC_ALPHA, this.gl.ONE_MINUS_SRC_ALPHA);
+ this.gl.enable(this.gl.BLEND);
+ this.SetHight(0.0);
+ this.gl.enable(this.gl.DEPTH_TEST);
+ this.gl.depthFunc(this.gl.LEQUAL);
+ }
+ SpriteRenderer.prototype.RenderAll = function () {
+ this.gl.clear(this.gl.COLOR_BUFFER_BIT);
+ this.gl.bindTexture(this.gl.TEXTURE_2D, this.texture);
+ this.vbo.RenderAllSpr();
+ this.gl.bindTexture(this.gl.TEXTURE_2D, this.Text.texture);
+ this.vbo.RenderAllTxt();
+ };
+ SpriteRenderer.prototype.UpdateViewPort = function (width, height) {
+ this.gl.viewport(0, 0, width, height);
+ var projmatrix = TSM.mat4.orthographic(-width / 2, width / 2, height / 2, -height / 2, 0.1, 2.0);
+ var cameramatrix = TSM.mat4.lookAt(new TSM.vec3([0.0, 0.0, 1.0]), new TSM.vec3([0.0, 0.0, 0.0]), new TSM.vec3([0.0, 1.0, 0.0]));
+ this.Shader.updateMatrix(projmatrix.multiply(cameramatrix));
+ };
+ SpriteRenderer.prototype.DrawSpr = function (AtlasX, AtlasY, AtlasWidth, AtlasHeigh, ScreenX, ScreenY, ScreenWidth, ScreenHeight) {
+ this.vbo.DrawSpr(AtlasX, AtlasY, AtlasWidth, AtlasHeigh, ScreenX, ScreenY, ScreenWidth, ScreenHeight);
+ };
+ SpriteRenderer.prototype.SetHight = function (hight) {
+ this.vbo.SetupHeight(hight);
+ };
+ SpriteRenderer.prototype.PrepareTxt = function (str, color, fontSize, outLine) {
+ if (outLine === void 0) { outLine = false; }
+ return this.Text.PrepareTxt(str, color, fontSize, outLine);
+ };
+ SpriteRenderer.prototype.DisposeTxt = function (txtObj) {
+ this.Text.DisposeTxt(txtObj);
+ };
+ SpriteRenderer.prototype.DrawTxt = function (txtObj, PosX, PosY) {
+ this.vbo.DrawTxt(txtObj.Pos.x, txtObj.Pos.y, txtObj.Size.Width, txtObj.Size.Height, PosX, PosY, txtObj.Size.Width, txtObj.Size.Height);
+ };
+ SpriteRenderer.prototype.UpdateCamera = function (x, y) {
+ this.Shader.UpdatePosition(x, y);
+ };
+ SpriteRenderer.prototype.CreateTexture = function (image, filtering) {
+ this.texture = this.gl.createTexture();
+ this.gl.bindTexture(this.gl.TEXTURE_2D, this.texture);
+ this.gl.texImage2D(this.gl.TEXTURE_2D, 0, this.gl.RGBA, this.gl.RGBA, this.gl.UNSIGNED_BYTE, image);
+ if (filtering == SpriteRenderer.TextureFilteringLinear) {
+ this.gl.texParameteri(this.gl.TEXTURE_2D, this.gl.TEXTURE_MAG_FILTER, this.gl.LINEAR);
+ this.gl.texParameteri(this.gl.TEXTURE_2D, this.gl.TEXTURE_MIN_FILTER, this.gl.LINEAR);
+ }
+ else {
+ this.gl.texParameteri(this.gl.TEXTURE_2D, this.gl.TEXTURE_MAG_FILTER, this.gl.NEAREST);
+ this.gl.texParameteri(this.gl.TEXTURE_2D, this.gl.TEXTURE_MIN_FILTER, this.gl.NEAREST);
+ }
+ };
+ SpriteRenderer.fromCanvas = function (canvas, Image, Filtering) {
+ if (Filtering === void 0) { Filtering = SpriteRenderer.TextureFilteringLinear; }
+ try {
+ var ctx = canvas.getContext("webgl") || canvas.getContext("experimental-webgl");
+ }
+ catch (e) {
+ console.log("Error with WebGL context initialization");
+ return null;
+ }
+ var newRenderer = new SpriteRenderer(ctx, Image, Filtering);
+ newRenderer.UpdateViewPort(canvas.width, canvas.height);
+ return newRenderer;
+ };
+ SpriteRenderer.TextureFilteringLinear = 0;
+ SpriteRenderer.TextureFilteringNearest = 1;
+ return SpriteRenderer;
+}());
+
+var SpriteGL = { Shader: Shader, SpriteRenderer: SpriteRenderer, TextDrawer: TextDrawer, VBO: VBO };
+
+exports.Shader = Shader;
+exports.SpriteGL = SpriteGL;
+exports.SpriteRenderer = SpriteRenderer;
+exports.TextDrawer = TextDrawer;
+exports.VBO = VBO;
+exports.default = SpriteGL;
diff --git a/dist/SpriteGL.es.js b/dist/SpriteGL.es.js
new file mode 100644
index 0000000..a41a9b7
--- /dev/null
+++ b/dist/SpriteGL.es.js
@@ -0,0 +1,282 @@
+/*!
+ * SpriteGL v0.0.0
+ * (c) 2015-present
+ * Released under the ISC License.
+ */
+import { mat4, vec3 } from 'tsm';
+
+var Shader = /** @class */ (function () {
+ function Shader(gl) {
+ this.gl = null;
+ this.gl = gl;
+ this.glProgram = this.MakeProgram(gl);
+ this.VertexPosAttribute = gl.getAttribLocation(this.glProgram, "aVertexPosition");
+ this.TexCoordAttribute = gl.getAttribLocation(this.glProgram, "aTexCoord");
+ this.TexSampleUniform = gl.getUniformLocation(this.glProgram, "sampler2d");
+ this.MatUniform = gl.getUniformLocation(this.glProgram, "uProjectionView");
+ this.CameraPosUniform = gl.getUniformLocation(this.glProgram, "uCameraPos");
+ }
+ Shader.prototype.UseProgram = function () {
+ this.gl.useProgram(this.glProgram);
+ this.gl.uniform1i(this.TexSampleUniform, 0);
+ };
+ Shader.prototype.UpdatePosition = function (x, y) {
+ this.gl.uniform2f(this.CameraPosUniform, x, y);
+ };
+ Shader.prototype.MakeProgram = function (gl) {
+ var vertexShader = this.CompileShader(gl, Shader.defaultVertexShaderSrc, gl.VERTEX_SHADER);
+ var fragmentShader = this.CompileShader(gl, Shader.defaultFragmentShaderSrc, gl.FRAGMENT_SHADER);
+ var glProgram = gl.createProgram();
+ gl.attachShader(glProgram, vertexShader);
+ gl.attachShader(glProgram, fragmentShader);
+ gl.linkProgram(glProgram);
+ return glProgram;
+ };
+ Shader.prototype.CompileShader = function (gl, src, type) {
+ var Shader = gl.createShader(type);
+ gl.shaderSource(Shader, src);
+ gl.compileShader(Shader);
+ if (!gl.getShaderParameter(Shader, gl.COMPILE_STATUS)) {
+ alert(gl.getShaderInfoLog(Shader));
+ }
+ return Shader;
+ };
+ Shader.prototype.updateMatrix = function (mat) {
+ this.gl.uniformMatrix4fv(this.MatUniform, false, mat.all());
+ };
+ Shader.defaultVertexShaderSrc = "\n\t\tattribute vec3 aVertexPosition;\n\t\tattribute vec2 aTexCoord;\n\t\tuniform mat4 uProjectionView;\n\t\tuniform vec2 uCameraPos;\n\t\tvarying vec2 vtexCoord;\n\t\tvoid main(void) {\n\t\t\tvtexCoord = aTexCoord;\n\t\t\tgl_Position = vec4(aVertexPosition.x - uCameraPos.x, aVertexPosition.y - uCameraPos.y, aVertexPosition.z, 1.0) * uProjectionView;\n\t\t}\n\t";
+ Shader.defaultFragmentShaderSrc = "\n\t\tprecision mediump float;\n\t\tuniform sampler2D sampler2d;\n\t\tvarying vec2 vtexCoord;\n\t\tvoid main(void) {\n\t\t\tgl_FragColor = texture2D(sampler2d, vec2(vtexCoord.s,vtexCoord.t));\n\t\t\tif(gl_FragColor.a < 0.5) discard;\n\t\t}\n\t";
+ return Shader;
+}());
+
+var VBO = /** @class */ (function () {
+ function VBO(gl) {
+ this.sprVerts = [];
+ this.txtVerts = [];
+ this.AtlasSize = 1;
+ this.gl = null;
+ this.gl = gl;
+ this.verticlesBuffer = gl.createBuffer();
+ gl.bindBuffer(gl.ARRAY_BUFFER, this.verticlesBuffer);
+ }
+ VBO.prototype.SetupHeight = function (hight) {
+ this.hight = hight;
+ };
+ VBO.prototype.SetupForDraw = function (vertexPositionAttr, textureCoordAttr, AtlasSize) {
+ this.gl.enableVertexAttribArray(vertexPositionAttr);
+ this.gl.vertexAttribPointer(vertexPositionAttr, 3, this.gl.FLOAT, false, 20, 0);
+ this.gl.enableVertexAttribArray(textureCoordAttr);
+ this.gl.vertexAttribPointer(textureCoordAttr, 2, this.gl.FLOAT, false, 20, 12);
+ this.gl.bufferData(this.gl.ARRAY_BUFFER, new Float32Array(15 * 10000), this.gl.STREAM_DRAW);
+ this.AtlasSize = AtlasSize;
+ };
+ VBO.prototype.RenderAllSpr = function () {
+ this.gl.bufferSubData(this.gl.ARRAY_BUFFER, 0, new Float32Array(this.sprVerts));
+ this.gl.drawArrays(this.gl.TRIANGLES, 0, this.sprVerts.length / 5);
+ this.sprVerts = [];
+ };
+ VBO.prototype.RenderAllTxt = function () {
+ this.gl.bufferSubData(this.gl.ARRAY_BUFFER, 0, new Float32Array(this.txtVerts));
+ this.gl.drawArrays(this.gl.TRIANGLES, 0, this.txtVerts.length / 5);
+ this.txtVerts = [];
+ };
+ VBO.prototype.DrawSpr = function (AtlasX, AtlasY, AtlasWidth, AtlasHeigh, ScreenX, ScreenY, ScreenWidth, ScreenHeight) {
+ for (var i = 0; i < VBO.defaultVerts.length; i += 2) {
+ //Pos
+ this.sprVerts.push(VBO.defaultVerts[i] * ScreenWidth + ScreenX | 0);
+ this.sprVerts.push(VBO.defaultVerts[i + 1] * ScreenHeight + ScreenY | 0);
+ this.sprVerts.push(this.hight);
+ //Tex
+ this.sprVerts.push(VBO.defaultVerts[i] * (AtlasWidth / this.AtlasSize) + (AtlasX / this.AtlasSize));
+ this.sprVerts.push(VBO.defaultVerts[i + 1] * (AtlasHeigh / this.AtlasSize) + (AtlasY / this.AtlasSize));
+ }
+ };
+ VBO.prototype.DrawTxt = function (AtlasX, AtlasY, AtlasWidth, AtlasHeigh, ScreenX, ScreenY, ScreenWidth, ScreenHeight) {
+ for (var i = 0; i < VBO.defaultVerts.length; i += 2) {
+ //Pos
+ this.txtVerts.push(VBO.defaultVerts[i] * ScreenWidth + ScreenX | 0);
+ this.txtVerts.push(VBO.defaultVerts[i + 1] * ScreenHeight + ScreenY | 0);
+ this.txtVerts.push(this.hight);
+ //Tex
+ this.txtVerts.push(VBO.defaultVerts[i] * (AtlasWidth / 1024) + (AtlasX / 1024));
+ this.txtVerts.push(VBO.defaultVerts[i + 1] * (AtlasHeigh / 1024) + (AtlasY / 1024));
+ }
+ };
+ VBO.defaultVerts = [
+ //Left
+ 0.0, 1.0,
+ 1.0, 0.0,
+ 0.0, 0.0,
+ //Right
+ 0.0, 1.0,
+ 1.0, 1.0,
+ 1.0, 0.0 // 2
+ ];
+ return VBO;
+}());
+
+var TextDrawer = /** @class */ (function () {
+ function TextDrawer(gl) {
+ this.TextureSize = { Width: 1024, Height: 1024 };
+ this.txtsList = new Array();
+ this.gl = gl;
+ this.canvas = document.createElement("canvas");
+ this.canvas.width = 1024;
+ this.canvas.height = 1024;
+ this.canvas.style.backgroundColor = "black";
+ this.ctx = this.canvas.getContext("2d");
+ this.ctx.textBaseline = "top";
+ this.texture = this.gl.createTexture();
+ this.gl.bindTexture(this.gl.TEXTURE_2D, this.texture);
+ this.gl.texImage2D(this.gl.TEXTURE_2D, 0, this.gl.RGBA, this.gl.RGBA, this.gl.UNSIGNED_BYTE, this.canvas);
+ this.gl.texParameteri(this.gl.TEXTURE_2D, this.gl.TEXTURE_MAG_FILTER, this.gl.LINEAR);
+ this.gl.texParameteri(this.gl.TEXTURE_2D, this.gl.TEXTURE_MIN_FILTER, this.gl.LINEAR);
+ }
+ TextDrawer.prototype.PrepareTxt = function (str, color, fontSize, outline) {
+ this.ctx.font = "bold " + fontSize + "px Tahoma";
+ var currTxtWidth = this.ctx.measureText(str).width;
+ var currStartY = 0;
+ var highestPosYIndex = 0;
+ for (var i = 0; i < this.txtsList.length; i++) {
+ if (this.txtsList[i].Pos.y >= this.txtsList[highestPosYIndex].Pos.y) {
+ highestPosYIndex = i;
+ currStartY = this.txtsList[highestPosYIndex].Pos.y + this.txtsList[highestPosYIndex].Size.Height * 1.2;
+ }
+ }
+ var test = {
+ str: str,
+ Pos: { x: 0, y: currStartY },
+ Size: {
+ Width: currTxtWidth + Math.sqrt(fontSize) * 1.7,
+ Height: fontSize + Math.sqrt(fontSize) * 2
+ },
+ Color: color,
+ OutLine: outline,
+ FontSize: fontSize
+ };
+ this.txtsList.push(test);
+ this.BakeTexture();
+ return test;
+ };
+ TextDrawer.prototype.DisposeTxt = function (txtObj) {
+ var index = this.txtsList.indexOf(txtObj);
+ if (index > -1 && index) {
+ this.txtsList.splice(index, 1);
+ }
+ this.UpdatePositon();
+ this.BakeTexture();
+ };
+ TextDrawer.prototype.UpdatePositon = function () {
+ this.txtsList.sort(function (a, b) { return a.Pos.y - b.Pos.y; });
+ for (var i = 0; i < this.txtsList.length; i++) {
+ var newPosY = 0;
+ for (var j = 0; j < i; j++) {
+ newPosY += this.txtsList[j].Size.Height * 1.2;
+ }
+ this.txtsList[i].Pos.y = newPosY;
+ }
+ };
+ TextDrawer.prototype.BakeTexture = function () {
+ this.ctx.clearRect(0, 0, this.canvas.width, this.canvas.height);
+ this.ctx.miterLimit = 1;
+ this.ctx.lineJoin = "round";
+ for (var i = 0; i < this.txtsList.length; i++) {
+ this.ctx.fillStyle = this.txtsList[i].Color;
+ this.ctx.font = "bold " + this.txtsList[i].FontSize + "px Tahoma";
+ if (this.txtsList[i].OutLine) {
+ this.ctx.lineWidth = Math.sqrt(this.txtsList[i].FontSize) * 1.5;
+ this.ctx.strokeStyle = "black";
+ this.ctx.strokeText(this.txtsList[i].str, 5, this.txtsList[i].Pos.y, 1024);
+ }
+ this.ctx.fillText(this.txtsList[i].str, 5, this.txtsList[i].Pos.y, 1024);
+ }
+ this.gl.bindTexture(this.gl.TEXTURE_2D, this.texture);
+ this.gl.texSubImage2D(this.gl.TEXTURE_2D, 0, 0, 0, this.gl.RGBA, this.gl.UNSIGNED_BYTE, this.canvas);
+ };
+ return TextDrawer;
+}());
+
+var SpriteRenderer = /** @class */ (function () {
+ function SpriteRenderer(webglContext, Image, Filtering) {
+ if (Filtering === void 0) { Filtering = SpriteRenderer.TextureFilteringLinear; }
+ this.gl = webglContext;
+ this.vbo = new VBO(this.gl);
+ this.Shader = new Shader(this.gl);
+ this.Text = new TextDrawer(this.gl);
+ this.Shader.UseProgram();
+ this.CreateTexture(Image, Filtering);
+ this.vbo.SetupForDraw(this.Shader.VertexPosAttribute, this.Shader.TexCoordAttribute, Image.width);
+ this.gl.clearColor(0.0, 0.0, 0.0, 1.0);
+ this.gl.blendFunc(this.gl.SRC_ALPHA, this.gl.ONE_MINUS_SRC_ALPHA);
+ this.gl.enable(this.gl.BLEND);
+ this.SetHight(0.0);
+ this.gl.enable(this.gl.DEPTH_TEST);
+ this.gl.depthFunc(this.gl.LEQUAL);
+ }
+ SpriteRenderer.prototype.RenderAll = function () {
+ this.gl.clear(this.gl.COLOR_BUFFER_BIT);
+ this.gl.bindTexture(this.gl.TEXTURE_2D, this.texture);
+ this.vbo.RenderAllSpr();
+ this.gl.bindTexture(this.gl.TEXTURE_2D, this.Text.texture);
+ this.vbo.RenderAllTxt();
+ };
+ SpriteRenderer.prototype.UpdateViewPort = function (width, height) {
+ this.gl.viewport(0, 0, width, height);
+ var projmatrix = mat4.orthographic(-width / 2, width / 2, height / 2, -height / 2, 0.1, 2.0);
+ var cameramatrix = mat4.lookAt(new vec3([0.0, 0.0, 1.0]), new vec3([0.0, 0.0, 0.0]), new vec3([0.0, 1.0, 0.0]));
+ this.Shader.updateMatrix(projmatrix.multiply(cameramatrix));
+ };
+ SpriteRenderer.prototype.DrawSpr = function (AtlasX, AtlasY, AtlasWidth, AtlasHeigh, ScreenX, ScreenY, ScreenWidth, ScreenHeight) {
+ this.vbo.DrawSpr(AtlasX, AtlasY, AtlasWidth, AtlasHeigh, ScreenX, ScreenY, ScreenWidth, ScreenHeight);
+ };
+ SpriteRenderer.prototype.SetHight = function (hight) {
+ this.vbo.SetupHeight(hight);
+ };
+ SpriteRenderer.prototype.PrepareTxt = function (str, color, fontSize, outLine) {
+ if (outLine === void 0) { outLine = false; }
+ return this.Text.PrepareTxt(str, color, fontSize, outLine);
+ };
+ SpriteRenderer.prototype.DisposeTxt = function (txtObj) {
+ this.Text.DisposeTxt(txtObj);
+ };
+ SpriteRenderer.prototype.DrawTxt = function (txtObj, PosX, PosY) {
+ this.vbo.DrawTxt(txtObj.Pos.x, txtObj.Pos.y, txtObj.Size.Width, txtObj.Size.Height, PosX, PosY, txtObj.Size.Width, txtObj.Size.Height);
+ };
+ SpriteRenderer.prototype.UpdateCamera = function (x, y) {
+ this.Shader.UpdatePosition(x, y);
+ };
+ SpriteRenderer.prototype.CreateTexture = function (image, filtering) {
+ this.texture = this.gl.createTexture();
+ this.gl.bindTexture(this.gl.TEXTURE_2D, this.texture);
+ this.gl.texImage2D(this.gl.TEXTURE_2D, 0, this.gl.RGBA, this.gl.RGBA, this.gl.UNSIGNED_BYTE, image);
+ if (filtering == SpriteRenderer.TextureFilteringLinear) {
+ this.gl.texParameteri(this.gl.TEXTURE_2D, this.gl.TEXTURE_MAG_FILTER, this.gl.LINEAR);
+ this.gl.texParameteri(this.gl.TEXTURE_2D, this.gl.TEXTURE_MIN_FILTER, this.gl.LINEAR);
+ }
+ else {
+ this.gl.texParameteri(this.gl.TEXTURE_2D, this.gl.TEXTURE_MAG_FILTER, this.gl.NEAREST);
+ this.gl.texParameteri(this.gl.TEXTURE_2D, this.gl.TEXTURE_MIN_FILTER, this.gl.NEAREST);
+ }
+ };
+ SpriteRenderer.fromCanvas = function (canvas, Image, Filtering) {
+ if (Filtering === void 0) { Filtering = SpriteRenderer.TextureFilteringLinear; }
+ try {
+ var ctx = canvas.getContext("webgl") || canvas.getContext("experimental-webgl");
+ }
+ catch (e) {
+ console.log("Error with WebGL context initialization");
+ return null;
+ }
+ var newRenderer = new SpriteRenderer(ctx, Image, Filtering);
+ newRenderer.UpdateViewPort(canvas.width, canvas.height);
+ return newRenderer;
+ };
+ SpriteRenderer.TextureFilteringLinear = 0;
+ SpriteRenderer.TextureFilteringNearest = 1;
+ return SpriteRenderer;
+}());
+
+var SpriteGL = { Shader: Shader, SpriteRenderer: SpriteRenderer, TextDrawer: TextDrawer, VBO: VBO };
+
+export default SpriteGL;
+export { Shader, SpriteGL, SpriteRenderer, TextDrawer, VBO };
diff --git a/dist/SpriteGL.js b/dist/SpriteGL.js
new file mode 100644
index 0000000..40b8ff4
--- /dev/null
+++ b/dist/SpriteGL.js
@@ -0,0 +1,2763 @@
+/*!
+ * SpriteGL v0.0.0
+ * (c) 2015-present
+ * Released under the ISC License.
+ */
+(function (global, factory) {
+ typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :
+ typeof define === 'function' && define.amd ? define(['exports'], factory) :
+ (factory((global.spriteGl = {})));
+}(this, (function (exports) { 'use strict';
+
+ var Shader = /** @class */ (function () {
+ function Shader(gl) {
+ this.gl = null;
+ this.gl = gl;
+ this.glProgram = this.MakeProgram(gl);
+ this.VertexPosAttribute = gl.getAttribLocation(this.glProgram, "aVertexPosition");
+ this.TexCoordAttribute = gl.getAttribLocation(this.glProgram, "aTexCoord");
+ this.TexSampleUniform = gl.getUniformLocation(this.glProgram, "sampler2d");
+ this.MatUniform = gl.getUniformLocation(this.glProgram, "uProjectionView");
+ this.CameraPosUniform = gl.getUniformLocation(this.glProgram, "uCameraPos");
+ }
+ Shader.prototype.UseProgram = function () {
+ this.gl.useProgram(this.glProgram);
+ this.gl.uniform1i(this.TexSampleUniform, 0);
+ };
+ Shader.prototype.UpdatePosition = function (x, y) {
+ this.gl.uniform2f(this.CameraPosUniform, x, y);
+ };
+ Shader.prototype.MakeProgram = function (gl) {
+ var vertexShader = this.CompileShader(gl, Shader.defaultVertexShaderSrc, gl.VERTEX_SHADER);
+ var fragmentShader = this.CompileShader(gl, Shader.defaultFragmentShaderSrc, gl.FRAGMENT_SHADER);
+ var glProgram = gl.createProgram();
+ gl.attachShader(glProgram, vertexShader);
+ gl.attachShader(glProgram, fragmentShader);
+ gl.linkProgram(glProgram);
+ return glProgram;
+ };
+ Shader.prototype.CompileShader = function (gl, src, type) {
+ var Shader = gl.createShader(type);
+ gl.shaderSource(Shader, src);
+ gl.compileShader(Shader);
+ if (!gl.getShaderParameter(Shader, gl.COMPILE_STATUS)) {
+ alert(gl.getShaderInfoLog(Shader));
+ }
+ return Shader;
+ };
+ Shader.prototype.updateMatrix = function (mat) {
+ this.gl.uniformMatrix4fv(this.MatUniform, false, mat.all());
+ };
+ Shader.defaultVertexShaderSrc = "\n\t\tattribute vec3 aVertexPosition;\n\t\tattribute vec2 aTexCoord;\n\t\tuniform mat4 uProjectionView;\n\t\tuniform vec2 uCameraPos;\n\t\tvarying vec2 vtexCoord;\n\t\tvoid main(void) {\n\t\t\tvtexCoord = aTexCoord;\n\t\t\tgl_Position = vec4(aVertexPosition.x - uCameraPos.x, aVertexPosition.y - uCameraPos.y, aVertexPosition.z, 1.0) * uProjectionView;\n\t\t}\n\t";
+ Shader.defaultFragmentShaderSrc = "\n\t\tprecision mediump float;\n\t\tuniform sampler2D sampler2d;\n\t\tvarying vec2 vtexCoord;\n\t\tvoid main(void) {\n\t\t\tgl_FragColor = texture2D(sampler2d, vec2(vtexCoord.s,vtexCoord.t));\n\t\t\tif(gl_FragColor.a < 0.5) discard;\n\t\t}\n\t";
+ return Shader;
+ }());
+
+ /*!
+ * Copyright (c) 2012, 2018 Matthias Ferch
+ *
+ * Project homepage: https://github.com/matthiasferch/tsm
+ *
+ * This software is provided 'as-is', without any express or implied
+ * warranty. In no event will the authors be held liable for any damages
+ * arising from the use of this software.
+ *
+ * Permission is granted to anyone to use this software for any purpose,
+ * including commercial applications, and to alter it and redistribute it
+ * freely, subject to the following restrictions:
+ *
+ * 1. The origin of this software must not be misrepresented; you must not
+ * claim that you wrote the original software. If you use this software
+ * in a product, an acknowledgment in the product documentation would be
+ * appreciated but is not required.
+ *
+ * 2. Altered source versions must be plainly marked as such, and must not
+ * be misrepresented as being the original software.
+ *
+ * 3. This notice may not be removed or altered from any source
+ * distribution.
+ */
+
+ var epsilon = 0.00001;
+
+ var vec4 = /** @class */ (function () {
+ function vec4(values) {
+ this.values = new Float32Array(4);
+ if (values !== undefined) {
+ this.xyzw = values;
+ }
+ }
+ Object.defineProperty(vec4.prototype, "x", {
+ get: function () {
+ return this.values[0];
+ },
+ set: function (value) {
+ this.values[0] = value;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Object.defineProperty(vec4.prototype, "y", {
+ get: function () {
+ return this.values[1];
+ },
+ set: function (value) {
+ this.values[1] = value;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Object.defineProperty(vec4.prototype, "z", {
+ get: function () {
+ return this.values[2];
+ },
+ set: function (value) {
+ this.values[2] = value;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Object.defineProperty(vec4.prototype, "w", {
+ get: function () {
+ return this.values[3];
+ },
+ set: function (value) {
+ this.values[3] = value;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Object.defineProperty(vec4.prototype, "xy", {
+ get: function () {
+ return [
+ this.values[0],
+ this.values[1],
+ ];
+ },
+ set: function (values) {
+ this.values[0] = values[0];
+ this.values[1] = values[1];
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Object.defineProperty(vec4.prototype, "xyz", {
+ get: function () {
+ return [
+ this.values[0],
+ this.values[1],
+ this.values[2],
+ ];
+ },
+ set: function (values) {
+ this.values[0] = values[0];
+ this.values[1] = values[1];
+ this.values[2] = values[2];
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Object.defineProperty(vec4.prototype, "xyzw", {
+ get: function () {
+ return [
+ this.values[0],
+ this.values[1],
+ this.values[2],
+ this.values[3],
+ ];
+ },
+ set: function (values) {
+ this.values[0] = values[0];
+ this.values[1] = values[1];
+ this.values[2] = values[2];
+ this.values[3] = values[3];
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Object.defineProperty(vec4.prototype, "r", {
+ get: function () {
+ return this.values[0];
+ },
+ set: function (value) {
+ this.values[0] = value;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Object.defineProperty(vec4.prototype, "g", {
+ get: function () {
+ return this.values[1];
+ },
+ set: function (value) {
+ this.values[1] = value;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Object.defineProperty(vec4.prototype, "b", {
+ get: function () {
+ return this.values[2];
+ },
+ set: function (value) {
+ this.values[2] = value;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Object.defineProperty(vec4.prototype, "a", {
+ get: function () {
+ return this.values[3];
+ },
+ set: function (value) {
+ this.values[3] = value;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Object.defineProperty(vec4.prototype, "rg", {
+ get: function () {
+ return [
+ this.values[0],
+ this.values[1],
+ ];
+ },
+ set: function (values) {
+ this.values[0] = values[0];
+ this.values[1] = values[1];
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Object.defineProperty(vec4.prototype, "rgb", {
+ get: function () {
+ return [
+ this.values[0],
+ this.values[1],
+ this.values[2],
+ ];
+ },
+ set: function (values) {
+ this.values[0] = values[0];
+ this.values[1] = values[1];
+ this.values[2] = values[2];
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Object.defineProperty(vec4.prototype, "rgba", {
+ get: function () {
+ return [
+ this.values[0],
+ this.values[1],
+ this.values[2],
+ this.values[3],
+ ];
+ },
+ set: function (values) {
+ this.values[0] = values[0];
+ this.values[1] = values[1];
+ this.values[2] = values[2];
+ this.values[3] = values[3];
+ },
+ enumerable: true,
+ configurable: true
+ });
+ vec4.prototype.at = function (index) {
+ return this.values[index];
+ };
+ vec4.prototype.reset = function () {
+ this.x = 0;
+ this.y = 0;
+ this.z = 0;
+ this.w = 0;
+ };
+ vec4.prototype.copy = function (dest) {
+ if (!dest) {
+ dest = new vec4();
+ }
+ dest.x = this.x;
+ dest.y = this.y;
+ dest.z = this.z;
+ dest.w = this.w;
+ return dest;
+ };
+ vec4.prototype.negate = function (dest) {
+ if (!dest) {
+ dest = this;
+ }
+ dest.x = -this.x;
+ dest.y = -this.y;
+ dest.z = -this.z;
+ dest.w = -this.w;
+ return dest;
+ };
+ vec4.prototype.equals = function (vector, threshold) {
+ if (threshold === void 0) { threshold = epsilon; }
+ if (Math.abs(this.x - vector.x) > threshold) {
+ return false;
+ }
+ if (Math.abs(this.y - vector.y) > threshold) {
+ return false;
+ }
+ if (Math.abs(this.z - vector.z) > threshold) {
+ return false;
+ }
+ if (Math.abs(this.w - vector.w) > threshold) {
+ return false;
+ }
+ return true;
+ };
+ vec4.prototype.length = function () {
+ return Math.sqrt(this.squaredLength());
+ };
+ vec4.prototype.squaredLength = function () {
+ var x = this.x;
+ var y = this.y;
+ var z = this.z;
+ var w = this.w;
+ return (x * x + y * y + z * z + w * w);
+ };
+ vec4.prototype.add = function (vector) {
+ this.x += vector.x;
+ this.y += vector.y;
+ this.z += vector.z;
+ this.w += vector.w;
+ return this;
+ };
+ vec4.prototype.subtract = function (vector) {
+ this.x -= vector.x;
+ this.y -= vector.y;
+ this.z -= vector.z;
+ this.w -= vector.w;
+ return this;
+ };
+ vec4.prototype.multiply = function (vector) {
+ this.x *= vector.x;
+ this.y *= vector.y;
+ this.z *= vector.z;
+ this.w *= vector.w;
+ return this;
+ };
+ vec4.prototype.divide = function (vector) {
+ this.x /= vector.x;
+ this.y /= vector.y;
+ this.z /= vector.z;
+ this.w /= vector.w;
+ return this;
+ };
+ vec4.prototype.scale = function (value, dest) {
+ if (!dest) {
+ dest = this;
+ }
+ dest.x *= value;
+ dest.y *= value;
+ dest.z *= value;
+ dest.w *= value;
+ return dest;
+ };
+ vec4.prototype.normalize = function (dest) {
+ if (!dest) {
+ dest = this;
+ }
+ var length = this.length();
+ if (length === 1) {
+ return this;
+ }
+ if (length === 0) {
+ dest.x *= 0;
+ dest.y *= 0;
+ dest.z *= 0;
+ dest.w *= 0;
+ return dest;
+ }
+ length = 1.0 / length;
+ dest.x *= length;
+ dest.y *= length;
+ dest.z *= length;
+ dest.w *= length;
+ return dest;
+ };
+ vec4.prototype.multiplyMat4 = function (matrix, dest) {
+ if (!dest) {
+ dest = this;
+ }
+ return matrix.multiplyVec4(this, dest);
+ };
+ vec4.mix = function (vector, vector2, time, dest) {
+ if (!dest) {
+ dest = new vec4();
+ }
+ dest.x = vector.x + time * (vector2.x - vector.x);
+ dest.y = vector.y + time * (vector2.y - vector.y);
+ dest.z = vector.z + time * (vector2.z - vector.z);
+ dest.w = vector.w + time * (vector2.w - vector.w);
+ return dest;
+ };
+ vec4.sum = function (vector, vector2, dest) {
+ if (!dest) {
+ dest = new vec4();
+ }
+ dest.x = vector.x + vector2.x;
+ dest.y = vector.y + vector2.y;
+ dest.z = vector.z + vector2.z;
+ dest.w = vector.w + vector2.w;
+ return dest;
+ };
+ vec4.difference = function (vector, vector2, dest) {
+ if (!dest) {
+ dest = new vec4();
+ }
+ dest.x = vector.x - vector2.x;
+ dest.y = vector.y - vector2.y;
+ dest.z = vector.z - vector2.z;
+ dest.w = vector.w - vector2.w;
+ return dest;
+ };
+ vec4.product = function (vector, vector2, dest) {
+ if (!dest) {
+ dest = new vec4();
+ }
+ dest.x = vector.x * vector2.x;
+ dest.y = vector.y * vector2.y;
+ dest.z = vector.z * vector2.z;
+ dest.w = vector.w * vector2.w;
+ return dest;
+ };
+ vec4.quotient = function (vector, vector2, dest) {
+ if (!dest) {
+ dest = new vec4();
+ }
+ dest.x = vector.x / vector2.x;
+ dest.y = vector.y / vector2.y;
+ dest.z = vector.z / vector2.z;
+ dest.w = vector.w / vector2.w;
+ return dest;
+ };
+ vec4.zero = new vec4([0, 0, 0, 1]);
+ vec4.one = new vec4([1, 1, 1, 1]);
+ return vec4;
+ }());
+
+ var mat4 = /** @class */ (function () {
+ function mat4(values) {
+ this.values = new Float32Array(16);
+ if (values !== undefined) {
+ this.init(values);
+ }
+ }
+ mat4.prototype.at = function (index) {
+ return this.values[index];
+ };
+ mat4.prototype.init = function (values) {
+ for (var i = 0; i < 16; i++) {
+ this.values[i] = values[i];
+ }
+ return this;
+ };
+ mat4.prototype.reset = function () {
+ for (var i = 0; i < 16; i++) {
+ this.values[i] = 0;
+ }
+ };
+ mat4.prototype.copy = function (dest) {
+ if (!dest) {
+ dest = new mat4();
+ }
+ for (var i = 0; i < 16; i++) {
+ dest.values[i] = this.values[i];
+ }
+ return dest;
+ };
+ mat4.prototype.all = function () {
+ var data = [];
+ for (var i = 0; i < 16; i++) {
+ data[i] = this.values[i];
+ }
+ return data;
+ };
+ mat4.prototype.row = function (index) {
+ return [
+ this.values[index * 4 + 0],
+ this.values[index * 4 + 1],
+ this.values[index * 4 + 2],
+ this.values[index * 4 + 3],
+ ];
+ };
+ mat4.prototype.col = function (index) {
+ return [
+ this.values[index],
+ this.values[index + 4],
+ this.values[index + 8],
+ this.values[index + 12],
+ ];
+ };
+ mat4.prototype.equals = function (matrix, threshold) {
+ if (threshold === void 0) { threshold = epsilon; }
+ for (var i = 0; i < 16; i++) {
+ if (Math.abs(this.values[i] - matrix.at(i)) > threshold) {
+ return false;
+ }
+ }
+ return true;
+ };
+ mat4.prototype.determinant = function () {
+ var a00 = this.values[0];
+ var a01 = this.values[1];
+ var a02 = this.values[2];
+ var a03 = this.values[3];
+ var a10 = this.values[4];
+ var a11 = this.values[5];
+ var a12 = this.values[6];
+ var a13 = this.values[7];
+ var a20 = this.values[8];
+ var a21 = this.values[9];
+ var a22 = this.values[10];
+ var a23 = this.values[11];
+ var a30 = this.values[12];
+ var a31 = this.values[13];
+ var a32 = this.values[14];
+ var a33 = this.values[15];
+ var det00 = a00 * a11 - a01 * a10;
+ var det01 = a00 * a12 - a02 * a10;
+ var det02 = a00 * a13 - a03 * a10;
+ var det03 = a01 * a12 - a02 * a11;
+ var det04 = a01 * a13 - a03 * a11;
+ var det05 = a02 * a13 - a03 * a12;
+ var det06 = a20 * a31 - a21 * a30;
+ var det07 = a20 * a32 - a22 * a30;
+ var det08 = a20 * a33 - a23 * a30;
+ var det09 = a21 * a32 - a22 * a31;
+ var det10 = a21 * a33 - a23 * a31;
+ var det11 = a22 * a33 - a23 * a32;
+ return (det00 * det11 - det01 * det10 + det02 * det09 + det03 * det08 - det04 * det07 + det05 * det06);
+ };
+ mat4.prototype.setIdentity = function () {
+ this.values[0] = 1;
+ this.values[1] = 0;
+ this.values[2] = 0;
+ this.values[3] = 0;
+ this.values[4] = 0;
+ this.values[5] = 1;
+ this.values[6] = 0;
+ this.values[7] = 0;
+ this.values[8] = 0;
+ this.values[9] = 0;
+ this.values[10] = 1;
+ this.values[11] = 0;
+ this.values[12] = 0;
+ this.values[13] = 0;
+ this.values[14] = 0;
+ this.values[15] = 1;
+ return this;
+ };
+ mat4.prototype.transpose = function () {
+ var temp01 = this.values[1];
+ var temp02 = this.values[2];
+ var temp03 = this.values[3];
+ var temp12 = this.values[6];
+ var temp13 = this.values[7];
+ var temp23 = this.values[11];
+ this.values[1] = this.values[4];
+ this.values[2] = this.values[8];
+ this.values[3] = this.values[12];
+ this.values[4] = temp01;
+ this.values[6] = this.values[9];
+ this.values[7] = this.values[13];
+ this.values[8] = temp02;
+ this.values[9] = temp12;
+ this.values[11] = this.values[14];
+ this.values[12] = temp03;
+ this.values[13] = temp13;
+ this.values[14] = temp23;
+ return this;
+ };
+ mat4.prototype.inverse = function () {
+ var a00 = this.values[0];
+ var a01 = this.values[1];
+ var a02 = this.values[2];
+ var a03 = this.values[3];
+ var a10 = this.values[4];
+ var a11 = this.values[5];
+ var a12 = this.values[6];
+ var a13 = this.values[7];
+ var a20 = this.values[8];
+ var a21 = this.values[9];
+ var a22 = this.values[10];
+ var a23 = this.values[11];
+ var a30 = this.values[12];
+ var a31 = this.values[13];
+ var a32 = this.values[14];
+ var a33 = this.values[15];
+ var det00 = a00 * a11 - a01 * a10;
+ var det01 = a00 * a12 - a02 * a10;
+ var det02 = a00 * a13 - a03 * a10;
+ var det03 = a01 * a12 - a02 * a11;
+ var det04 = a01 * a13 - a03 * a11;
+ var det05 = a02 * a13 - a03 * a12;
+ var det06 = a20 * a31 - a21 * a30;
+ var det07 = a20 * a32 - a22 * a30;
+ var det08 = a20 * a33 - a23 * a30;
+ var det09 = a21 * a32 - a22 * a31;
+ var det10 = a21 * a33 - a23 * a31;
+ var det11 = a22 * a33 - a23 * a32;
+ var det = (det00 * det11 - det01 * det10 + det02 * det09 + det03 * det08 - det04 * det07 + det05 * det06);
+ if (!det) {
+ return null;
+ }
+ det = 1.0 / det;
+ this.values[0] = (a11 * det11 - a12 * det10 + a13 * det09) * det;
+ this.values[1] = (-a01 * det11 + a02 * det10 - a03 * det09) * det;
+ this.values[2] = (a31 * det05 - a32 * det04 + a33 * det03) * det;
+ this.values[3] = (-a21 * det05 + a22 * det04 - a23 * det03) * det;
+ this.values[4] = (-a10 * det11 + a12 * det08 - a13 * det07) * det;
+ this.values[5] = (a00 * det11 - a02 * det08 + a03 * det07) * det;
+ this.values[6] = (-a30 * det05 + a32 * det02 - a33 * det01) * det;
+ this.values[7] = (a20 * det05 - a22 * det02 + a23 * det01) * det;
+ this.values[8] = (a10 * det10 - a11 * det08 + a13 * det06) * det;
+ this.values[9] = (-a00 * det10 + a01 * det08 - a03 * det06) * det;
+ this.values[10] = (a30 * det04 - a31 * det02 + a33 * det00) * det;
+ this.values[11] = (-a20 * det04 + a21 * det02 - a23 * det00) * det;
+ this.values[12] = (-a10 * det09 + a11 * det07 - a12 * det06) * det;
+ this.values[13] = (a00 * det09 - a01 * det07 + a02 * det06) * det;
+ this.values[14] = (-a30 * det03 + a31 * det01 - a32 * det00) * det;
+ this.values[15] = (a20 * det03 - a21 * det01 + a22 * det00) * det;
+ return this;
+ };
+ mat4.prototype.multiply = function (matrix) {
+ var a00 = this.values[0];
+ var a01 = this.values[1];
+ var a02 = this.values[2];
+ var a03 = this.values[3];
+ var a10 = this.values[4];
+ var a11 = this.values[5];
+ var a12 = this.values[6];
+ var a13 = this.values[7];
+ var a20 = this.values[8];
+ var a21 = this.values[9];
+ var a22 = this.values[10];
+ var a23 = this.values[11];
+ var a30 = this.values[12];
+ var a31 = this.values[13];
+ var a32 = this.values[14];
+ var a33 = this.values[15];
+ var b0 = matrix.at(0);
+ var b1 = matrix.at(1);
+ var b2 = matrix.at(2);
+ var b3 = matrix.at(3);
+ this.values[0] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;
+ this.values[1] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;
+ this.values[2] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32;
+ this.values[3] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;
+ b0 = matrix.at(4);
+ b1 = matrix.at(5);
+ b2 = matrix.at(6);
+ b3 = matrix.at(7);
+ this.values[4] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;
+ this.values[5] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;
+ this.values[6] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32;
+ this.values[7] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;
+ b0 = matrix.at(8);
+ b1 = matrix.at(9);
+ b2 = matrix.at(10);
+ b3 = matrix.at(11);
+ this.values[8] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;
+ this.values[9] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;
+ this.values[10] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32;
+ this.values[11] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;
+ b0 = matrix.at(12);
+ b1 = matrix.at(13);
+ b2 = matrix.at(14);
+ b3 = matrix.at(15);
+ this.values[12] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;
+ this.values[13] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;
+ this.values[14] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32;
+ this.values[15] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;
+ return this;
+ };
+ mat4.prototype.multiplyVec3 = function (vector) {
+ var x = vector.x;
+ var y = vector.y;
+ var z = vector.z;
+ return new vec3([
+ this.values[0] * x + this.values[4] * y + this.values[8] * z + this.values[12],
+ this.values[1] * x + this.values[5] * y + this.values[9] * z + this.values[13],
+ this.values[2] * x + this.values[6] * y + this.values[10] * z + this.values[14],
+ ]);
+ };
+ mat4.prototype.multiplyVec4 = function (vector, dest) {
+ if (!dest) {
+ dest = new vec4();
+ }
+ var x = vector.x;
+ var y = vector.y;
+ var z = vector.z;
+ var w = vector.w;
+ dest.x = this.values[0] * x + this.values[4] * y + this.values[8] * z + this.values[12] * w;
+ dest.y = this.values[1] * x + this.values[5] * y + this.values[9] * z + this.values[13] * w;
+ dest.z = this.values[2] * x + this.values[6] * y + this.values[10] * z + this.values[14] * w;
+ dest.w = this.values[3] * x + this.values[7] * y + this.values[11] * z + this.values[15] * w;
+ return dest;
+ };
+ mat4.prototype.toMat3 = function () {
+ return new mat3([
+ this.values[0],
+ this.values[1],
+ this.values[2],
+ this.values[4],
+ this.values[5],
+ this.values[6],
+ this.values[8],
+ this.values[9],
+ this.values[10],
+ ]);
+ };
+ mat4.prototype.toInverseMat3 = function () {
+ var a00 = this.values[0];
+ var a01 = this.values[1];
+ var a02 = this.values[2];
+ var a10 = this.values[4];
+ var a11 = this.values[5];
+ var a12 = this.values[6];
+ var a20 = this.values[8];
+ var a21 = this.values[9];
+ var a22 = this.values[10];
+ var det01 = a22 * a11 - a12 * a21;
+ var det11 = -a22 * a10 + a12 * a20;
+ var det21 = a21 * a10 - a11 * a20;
+ var det = a00 * det01 + a01 * det11 + a02 * det21;
+ if (!det) {
+ return null;
+ }
+ det = 1.0 / det;
+ return new mat3([
+ det01 * det,
+ (-a22 * a01 + a02 * a21) * det,
+ (a12 * a01 - a02 * a11) * det,
+ det11 * det,
+ (a22 * a00 - a02 * a20) * det,
+ (-a12 * a00 + a02 * a10) * det,
+ det21 * det,
+ (-a21 * a00 + a01 * a20) * det,
+ (a11 * a00 - a01 * a10) * det,
+ ]);
+ };
+ mat4.prototype.translate = function (vector) {
+ var x = vector.x;
+ var y = vector.y;
+ var z = vector.z;
+ this.values[12] += this.values[0] * x + this.values[4] * y + this.values[8] * z;
+ this.values[13] += this.values[1] * x + this.values[5] * y + this.values[9] * z;
+ this.values[14] += this.values[2] * x + this.values[6] * y + this.values[10] * z;
+ this.values[15] += this.values[3] * x + this.values[7] * y + this.values[11] * z;
+ return this;
+ };
+ mat4.prototype.scale = function (vector) {
+ var x = vector.x;
+ var y = vector.y;
+ var z = vector.z;
+ this.values[0] *= x;
+ this.values[1] *= x;
+ this.values[2] *= x;
+ this.values[3] *= x;
+ this.values[4] *= y;
+ this.values[5] *= y;
+ this.values[6] *= y;
+ this.values[7] *= y;
+ this.values[8] *= z;
+ this.values[9] *= z;
+ this.values[10] *= z;
+ this.values[11] *= z;
+ return this;
+ };
+ mat4.prototype.rotate = function (angle, axis) {
+ var x = axis.x;
+ var y = axis.y;
+ var z = axis.z;
+ var length = Math.sqrt(x * x + y * y + z * z);
+ if (!length) {
+ return null;
+ }
+ if (length !== 1) {
+ length = 1 / length;
+ x *= length;
+ y *= length;
+ z *= length;
+ }
+ var s = Math.sin(angle);
+ var c = Math.cos(angle);
+ var t = 1.0 - c;
+ var a00 = this.values[0];
+ var a01 = this.values[1];
+ var a02 = this.values[2];
+ var a03 = this.values[3];
+ var a10 = this.values[4];
+ var a11 = this.values[5];
+ var a12 = this.values[6];
+ var a13 = this.values[7];
+ var a20 = this.values[8];
+ var a21 = this.values[9];
+ var a22 = this.values[10];
+ var a23 = this.values[11];
+ var b00 = x * x * t + c;
+ var b01 = y * x * t + z * s;
+ var b02 = z * x * t - y * s;
+ var b10 = x * y * t - z * s;
+ var b11 = y * y * t + c;
+ var b12 = z * y * t + x * s;
+ var b20 = x * z * t + y * s;
+ var b21 = y * z * t - x * s;
+ var b22 = z * z * t + c;
+ this.values[0] = a00 * b00 + a10 * b01 + a20 * b02;
+ this.values[1] = a01 * b00 + a11 * b01 + a21 * b02;
+ this.values[2] = a02 * b00 + a12 * b01 + a22 * b02;
+ this.values[3] = a03 * b00 + a13 * b01 + a23 * b02;
+ this.values[4] = a00 * b10 + a10 * b11 + a20 * b12;
+ this.values[5] = a01 * b10 + a11 * b11 + a21 * b12;
+ this.values[6] = a02 * b10 + a12 * b11 + a22 * b12;
+ this.values[7] = a03 * b10 + a13 * b11 + a23 * b12;
+ this.values[8] = a00 * b20 + a10 * b21 + a20 * b22;
+ this.values[9] = a01 * b20 + a11 * b21 + a21 * b22;
+ this.values[10] = a02 * b20 + a12 * b21 + a22 * b22;
+ this.values[11] = a03 * b20 + a13 * b21 + a23 * b22;
+ return this;
+ };
+ mat4.frustum = function (left, right, bottom, top, near, far) {
+ var rl = (right - left);
+ var tb = (top - bottom);
+ var fn = (far - near);
+ return new mat4([
+ (near * 2) / rl,
+ 0,
+ 0,
+ 0,
+ 0,
+ (near * 2) / tb,
+ 0,
+ 0,
+ (right + left) / rl,
+ (top + bottom) / tb,
+ -(far + near) / fn,
+ -1,
+ 0,
+ 0,
+ -(far * near * 2) / fn,
+ 0,
+ ]);
+ };
+ mat4.perspective = function (fov, aspect, near, far) {
+ var top = near * Math.tan(fov * Math.PI / 360.0);
+ var right = top * aspect;
+ return mat4.frustum(-right, right, -top, top, near, far);
+ };
+ mat4.orthographic = function (left, right, bottom, top, near, far) {
+ var rl = (right - left);
+ var tb = (top - bottom);
+ var fn = (far - near);
+ return new mat4([
+ 2 / rl,
+ 0,
+ 0,
+ 0,
+ 0,
+ 2 / tb,
+ 0,
+ 0,
+ 0,
+ 0,
+ -2 / fn,
+ 0,
+ -(left + right) / rl,
+ -(top + bottom) / tb,
+ -(far + near) / fn,
+ 1,
+ ]);
+ };
+ mat4.lookAt = function (position, target, up) {
+ if (up === void 0) { up = vec3.up; }
+ if (position.equals(target)) {
+ return this.identity;
+ }
+ var z = vec3.difference(position, target).normalize();
+ var x = vec3.cross(up, z).normalize();
+ var y = vec3.cross(z, x).normalize();
+ return new mat4([
+ x.x,
+ y.x,
+ z.x,
+ 0,
+ x.y,
+ y.y,
+ z.y,
+ 0,
+ x.z,
+ y.z,
+ z.z,
+ 0,
+ -vec3.dot(x, position),
+ -vec3.dot(y, position),
+ -vec3.dot(z, position),
+ 1,
+ ]);
+ };
+ mat4.product = function (m1, m2, result) {
+ var a00 = m1.at(0);
+ var a01 = m1.at(1);
+ var a02 = m1.at(2);
+ var a03 = m1.at(3);
+ var a10 = m1.at(4);
+ var a11 = m1.at(5);
+ var a12 = m1.at(6);
+ var a13 = m1.at(7);
+ var a20 = m1.at(8);
+ var a21 = m1.at(9);
+ var a22 = m1.at(10);
+ var a23 = m1.at(11);
+ var a30 = m1.at(12);
+ var a31 = m1.at(13);
+ var a32 = m1.at(14);
+ var a33 = m1.at(15);
+ var b00 = m2.at(0);
+ var b01 = m2.at(1);
+ var b02 = m2.at(2);
+ var b03 = m2.at(3);
+ var b10 = m2.at(4);
+ var b11 = m2.at(5);
+ var b12 = m2.at(6);
+ var b13 = m2.at(7);
+ var b20 = m2.at(8);
+ var b21 = m2.at(9);
+ var b22 = m2.at(10);
+ var b23 = m2.at(11);
+ var b30 = m2.at(12);
+ var b31 = m2.at(13);
+ var b32 = m2.at(14);
+ var b33 = m2.at(15);
+ if (result) {
+ result.init([
+ b00 * a00 + b01 * a10 + b02 * a20 + b03 * a30,
+ b00 * a01 + b01 * a11 + b02 * a21 + b03 * a31,
+ b00 * a02 + b01 * a12 + b02 * a22 + b03 * a32,
+ b00 * a03 + b01 * a13 + b02 * a23 + b03 * a33,
+ b10 * a00 + b11 * a10 + b12 * a20 + b13 * a30,
+ b10 * a01 + b11 * a11 + b12 * a21 + b13 * a31,
+ b10 * a02 + b11 * a12 + b12 * a22 + b13 * a32,
+ b10 * a03 + b11 * a13 + b12 * a23 + b13 * a33,
+ b20 * a00 + b21 * a10 + b22 * a20 + b23 * a30,
+ b20 * a01 + b21 * a11 + b22 * a21 + b23 * a31,
+ b20 * a02 + b21 * a12 + b22 * a22 + b23 * a32,
+ b20 * a03 + b21 * a13 + b22 * a23 + b23 * a33,
+ b30 * a00 + b31 * a10 + b32 * a20 + b33 * a30,
+ b30 * a01 + b31 * a11 + b32 * a21 + b33 * a31,
+ b30 * a02 + b31 * a12 + b32 * a22 + b33 * a32,
+ b30 * a03 + b31 * a13 + b32 * a23 + b33 * a33,
+ ]);
+ return result;
+ }
+ else {
+ return new mat4([
+ b00 * a00 + b01 * a10 + b02 * a20 + b03 * a30,
+ b00 * a01 + b01 * a11 + b02 * a21 + b03 * a31,
+ b00 * a02 + b01 * a12 + b02 * a22 + b03 * a32,
+ b00 * a03 + b01 * a13 + b02 * a23 + b03 * a33,
+ b10 * a00 + b11 * a10 + b12 * a20 + b13 * a30,
+ b10 * a01 + b11 * a11 + b12 * a21 + b13 * a31,
+ b10 * a02 + b11 * a12 + b12 * a22 + b13 * a32,
+ b10 * a03 + b11 * a13 + b12 * a23 + b13 * a33,
+ b20 * a00 + b21 * a10 + b22 * a20 + b23 * a30,
+ b20 * a01 + b21 * a11 + b22 * a21 + b23 * a31,
+ b20 * a02 + b21 * a12 + b22 * a22 + b23 * a32,
+ b20 * a03 + b21 * a13 + b22 * a23 + b23 * a33,
+ b30 * a00 + b31 * a10 + b32 * a20 + b33 * a30,
+ b30 * a01 + b31 * a11 + b32 * a21 + b33 * a31,
+ b30 * a02 + b31 * a12 + b32 * a22 + b33 * a32,
+ b30 * a03 + b31 * a13 + b32 * a23 + b33 * a33,
+ ]);
+ }
+ };
+ mat4.identity = new mat4().setIdentity();
+ return mat4;
+ }());
+
+ var mat3 = /** @class */ (function () {
+ function mat3(values) {
+ this.values = new Float32Array(9);
+ if (values !== undefined) {
+ this.init(values);
+ }
+ }
+ mat3.prototype.at = function (index) {
+ return this.values[index];
+ };
+ mat3.prototype.init = function (values) {
+ for (var i = 0; i < 9; i++) {
+ this.values[i] = values[i];
+ }
+ return this;
+ };
+ mat3.prototype.reset = function () {
+ for (var i = 0; i < 9; i++) {
+ this.values[i] = 0;
+ }
+ };
+ mat3.prototype.copy = function (dest) {
+ if (!dest) {
+ dest = new mat3();
+ }
+ for (var i = 0; i < 9; i++) {
+ dest.values[i] = this.values[i];
+ }
+ return dest;
+ };
+ mat3.prototype.all = function () {
+ var data = [];
+ for (var i = 0; i < 9; i++) {
+ data[i] = this.values[i];
+ }
+ return data;
+ };
+ mat3.prototype.row = function (index) {
+ return [
+ this.values[index * 3 + 0],
+ this.values[index * 3 + 1],
+ this.values[index * 3 + 2],
+ ];
+ };
+ mat3.prototype.col = function (index) {
+ return [
+ this.values[index],
+ this.values[index + 3],
+ this.values[index + 6],
+ ];
+ };
+ mat3.prototype.equals = function (matrix, threshold) {
+ if (threshold === void 0) { threshold = epsilon; }
+ for (var i = 0; i < 9; i++) {
+ if (Math.abs(this.values[i] - matrix.at(i)) > threshold) {
+ return false;
+ }
+ }
+ return true;
+ };
+ mat3.prototype.determinant = function () {
+ var a00 = this.values[0];
+ var a01 = this.values[1];
+ var a02 = this.values[2];
+ var a10 = this.values[3];
+ var a11 = this.values[4];
+ var a12 = this.values[5];
+ var a20 = this.values[6];
+ var a21 = this.values[7];
+ var a22 = this.values[8];
+ var det01 = a22 * a11 - a12 * a21;
+ var det11 = -a22 * a10 + a12 * a20;
+ var det21 = a21 * a10 - a11 * a20;
+ return a00 * det01 + a01 * det11 + a02 * det21;
+ };
+ mat3.prototype.setIdentity = function () {
+ this.values[0] = 1;
+ this.values[1] = 0;
+ this.values[2] = 0;
+ this.values[3] = 0;
+ this.values[4] = 1;
+ this.values[5] = 0;
+ this.values[6] = 0;
+ this.values[7] = 0;
+ this.values[8] = 1;
+ return this;
+ };
+ mat3.prototype.transpose = function () {
+ var temp01 = this.values[1];
+ var temp02 = this.values[2];
+ var temp12 = this.values[5];
+ this.values[1] = this.values[3];
+ this.values[2] = this.values[6];
+ this.values[3] = temp01;
+ this.values[5] = this.values[7];
+ this.values[6] = temp02;
+ this.values[7] = temp12;
+ return this;
+ };
+ mat3.prototype.inverse = function () {
+ var a00 = this.values[0];
+ var a01 = this.values[1];
+ var a02 = this.values[2];
+ var a10 = this.values[3];
+ var a11 = this.values[4];
+ var a12 = this.values[5];
+ var a20 = this.values[6];
+ var a21 = this.values[7];
+ var a22 = this.values[8];
+ var det01 = a22 * a11 - a12 * a21;
+ var det11 = -a22 * a10 + a12 * a20;
+ var det21 = a21 * a10 - a11 * a20;
+ var det = a00 * det01 + a01 * det11 + a02 * det21;
+ if (!det) {
+ return null;
+ }
+ det = 1.0 / det;
+ this.values[0] = det01 * det;
+ this.values[1] = (-a22 * a01 + a02 * a21) * det;
+ this.values[2] = (a12 * a01 - a02 * a11) * det;
+ this.values[3] = det11 * det;
+ this.values[4] = (a22 * a00 - a02 * a20) * det;
+ this.values[5] = (-a12 * a00 + a02 * a10) * det;
+ this.values[6] = det21 * det;
+ this.values[7] = (-a21 * a00 + a01 * a20) * det;
+ this.values[8] = (a11 * a00 - a01 * a10) * det;
+ return this;
+ };
+ mat3.prototype.multiply = function (matrix) {
+ var a00 = this.values[0];
+ var a01 = this.values[1];
+ var a02 = this.values[2];
+ var a10 = this.values[3];
+ var a11 = this.values[4];
+ var a12 = this.values[5];
+ var a20 = this.values[6];
+ var a21 = this.values[7];
+ var a22 = this.values[8];
+ var b00 = matrix.at(0);
+ var b01 = matrix.at(1);
+ var b02 = matrix.at(2);
+ var b10 = matrix.at(3);
+ var b11 = matrix.at(4);
+ var b12 = matrix.at(5);
+ var b20 = matrix.at(6);
+ var b21 = matrix.at(7);
+ var b22 = matrix.at(8);
+ this.values[0] = b00 * a00 + b01 * a10 + b02 * a20;
+ this.values[1] = b00 * a01 + b01 * a11 + b02 * a21;
+ this.values[2] = b00 * a02 + b01 * a12 + b02 * a22;
+ this.values[3] = b10 * a00 + b11 * a10 + b12 * a20;
+ this.values[4] = b10 * a01 + b11 * a11 + b12 * a21;
+ this.values[5] = b10 * a02 + b11 * a12 + b12 * a22;
+ this.values[6] = b20 * a00 + b21 * a10 + b22 * a20;
+ this.values[7] = b20 * a01 + b21 * a11 + b22 * a21;
+ this.values[8] = b20 * a02 + b21 * a12 + b22 * a22;
+ return this;
+ };
+ mat3.prototype.multiplyVec2 = function (vector, result) {
+ var x = vector.x;
+ var y = vector.y;
+ if (result) {
+ result.xy = [
+ x * this.values[0] + y * this.values[3] + this.values[6],
+ x * this.values[1] + y * this.values[4] + this.values[7],
+ ];
+ return result;
+ }
+ else {
+ return new vec2([
+ x * this.values[0] + y * this.values[3] + this.values[6],
+ x * this.values[1] + y * this.values[4] + this.values[7],
+ ]);
+ }
+ };
+ mat3.prototype.multiplyVec3 = function (vector, result) {
+ var x = vector.x;
+ var y = vector.y;
+ var z = vector.z;
+ if (result) {
+ result.xyz = [
+ x * this.values[0] + y * this.values[3] + z * this.values[6],
+ x * this.values[1] + y * this.values[4] + z * this.values[7],
+ x * this.values[2] + y * this.values[5] + z * this.values[8],
+ ];
+ return result;
+ }
+ else {
+ return new vec3([
+ x * this.values[0] + y * this.values[3] + z * this.values[6],
+ x * this.values[1] + y * this.values[4] + z * this.values[7],
+ x * this.values[2] + y * this.values[5] + z * this.values[8],
+ ]);
+ }
+ };
+ mat3.prototype.toMat4 = function (result) {
+ if (result) {
+ result.init([
+ this.values[0],
+ this.values[1],
+ this.values[2],
+ 0,
+ this.values[3],
+ this.values[4],
+ this.values[5],
+ 0,
+ this.values[6],
+ this.values[7],
+ this.values[8],
+ 0,
+ 0,
+ 0,
+ 0,
+ 1,
+ ]);
+ return result;
+ }
+ else {
+ return new mat4([
+ this.values[0],
+ this.values[1],
+ this.values[2],
+ 0,
+ this.values[3],
+ this.values[4],
+ this.values[5],
+ 0,
+ this.values[6],
+ this.values[7],
+ this.values[8],
+ 0,
+ 0,
+ 0,
+ 0,
+ 1,
+ ]);
+ }
+ };
+ mat3.prototype.toQuat = function () {
+ var m00 = this.values[0];
+ var m01 = this.values[1];
+ var m02 = this.values[2];
+ var m10 = this.values[3];
+ var m11 = this.values[4];
+ var m12 = this.values[5];
+ var m20 = this.values[6];
+ var m21 = this.values[7];
+ var m22 = this.values[8];
+ var fourXSquaredMinus1 = m00 - m11 - m22;
+ var fourYSquaredMinus1 = m11 - m00 - m22;
+ var fourZSquaredMinus1 = m22 - m00 - m11;
+ var fourWSquaredMinus1 = m00 + m11 + m22;
+ var biggestIndex = 0;
+ var fourBiggestSquaredMinus1 = fourWSquaredMinus1;
+ if (fourXSquaredMinus1 > fourBiggestSquaredMinus1) {
+ fourBiggestSquaredMinus1 = fourXSquaredMinus1;
+ biggestIndex = 1;
+ }
+ if (fourYSquaredMinus1 > fourBiggestSquaredMinus1) {
+ fourBiggestSquaredMinus1 = fourYSquaredMinus1;
+ biggestIndex = 2;
+ }
+ if (fourZSquaredMinus1 > fourBiggestSquaredMinus1) {
+ fourBiggestSquaredMinus1 = fourZSquaredMinus1;
+ biggestIndex = 3;
+ }
+ var biggestVal = Math.sqrt(fourBiggestSquaredMinus1 + 1) * 0.5;
+ var mult = 0.25 / biggestVal;
+ var result = new quat();
+ switch (biggestIndex) {
+ case 0:
+ result.w = biggestVal;
+ result.x = (m12 - m21) * mult;
+ result.y = (m20 - m02) * mult;
+ result.z = (m01 - m10) * mult;
+ break;
+ case 1:
+ result.w = (m12 - m21) * mult;
+ result.x = biggestVal;
+ result.y = (m01 + m10) * mult;
+ result.z = (m20 + m02) * mult;
+ break;
+ case 2:
+ result.w = (m20 - m02) * mult;
+ result.x = (m01 + m10) * mult;
+ result.y = biggestVal;
+ result.z = (m12 + m21) * mult;
+ break;
+ case 3:
+ result.w = (m01 - m10) * mult;
+ result.x = (m20 + m02) * mult;
+ result.y = (m12 + m21) * mult;
+ result.z = biggestVal;
+ break;
+ }
+ return result;
+ };
+ mat3.prototype.rotate = function (angle, axis) {
+ var x = axis.x;
+ var y = axis.y;
+ var z = axis.z;
+ var length = Math.sqrt(x * x + y * y + z * z);
+ if (!length) {
+ return null;
+ }
+ if (length !== 1) {
+ length = 1 / length;
+ x *= length;
+ y *= length;
+ z *= length;
+ }
+ var s = Math.sin(angle);
+ var c = Math.cos(angle);
+ var t = 1.0 - c;
+ var a00 = this.values[0];
+ var a01 = this.values[1];
+ var a02 = this.values[2];
+ var a10 = this.values[4];
+ var a11 = this.values[5];
+ var a12 = this.values[6];
+ var a20 = this.values[8];
+ var a21 = this.values[9];
+ var a22 = this.values[10];
+ var b00 = x * x * t + c;
+ var b01 = y * x * t + z * s;
+ var b02 = z * x * t - y * s;
+ var b10 = x * y * t - z * s;
+ var b11 = y * y * t + c;
+ var b12 = z * y * t + x * s;
+ var b20 = x * z * t + y * s;
+ var b21 = y * z * t - x * s;
+ var b22 = z * z * t + c;
+ this.values[0] = a00 * b00 + a10 * b01 + a20 * b02;
+ this.values[1] = a01 * b00 + a11 * b01 + a21 * b02;
+ this.values[2] = a02 * b00 + a12 * b01 + a22 * b02;
+ this.values[3] = a00 * b10 + a10 * b11 + a20 * b12;
+ this.values[4] = a01 * b10 + a11 * b11 + a21 * b12;
+ this.values[5] = a02 * b10 + a12 * b11 + a22 * b12;
+ this.values[6] = a00 * b20 + a10 * b21 + a20 * b22;
+ this.values[7] = a01 * b20 + a11 * b21 + a21 * b22;
+ this.values[8] = a02 * b20 + a12 * b21 + a22 * b22;
+ return this;
+ };
+ mat3.product = function (m1, m2, result) {
+ var a00 = m1.at(0);
+ var a01 = m1.at(1);
+ var a02 = m1.at(2);
+ var a10 = m1.at(3);
+ var a11 = m1.at(4);
+ var a12 = m1.at(5);
+ var a20 = m1.at(6);
+ var a21 = m1.at(7);
+ var a22 = m1.at(8);
+ var b00 = m2.at(0);
+ var b01 = m2.at(1);
+ var b02 = m2.at(2);
+ var b10 = m2.at(3);
+ var b11 = m2.at(4);
+ var b12 = m2.at(5);
+ var b20 = m2.at(6);
+ var b21 = m2.at(7);
+ var b22 = m2.at(8);
+ if (result) {
+ result.init([
+ b00 * a00 + b01 * a10 + b02 * a20,
+ b00 * a01 + b01 * a11 + b02 * a21,
+ b00 * a02 + b01 * a12 + b02 * a22,
+ b10 * a00 + b11 * a10 + b12 * a20,
+ b10 * a01 + b11 * a11 + b12 * a21,
+ b10 * a02 + b11 * a12 + b12 * a22,
+ b20 * a00 + b21 * a10 + b22 * a20,
+ b20 * a01 + b21 * a11 + b22 * a21,
+ b20 * a02 + b21 * a12 + b22 * a22,
+ ]);
+ return result;
+ }
+ else {
+ return new mat3([
+ b00 * a00 + b01 * a10 + b02 * a20,
+ b00 * a01 + b01 * a11 + b02 * a21,
+ b00 * a02 + b01 * a12 + b02 * a22,
+ b10 * a00 + b11 * a10 + b12 * a20,
+ b10 * a01 + b11 * a11 + b12 * a21,
+ b10 * a02 + b11 * a12 + b12 * a22,
+ b20 * a00 + b21 * a10 + b22 * a20,
+ b20 * a01 + b21 * a11 + b22 * a21,
+ b20 * a02 + b21 * a12 + b22 * a22,
+ ]);
+ }
+ };
+ mat3.identity = new mat3().setIdentity();
+ return mat3;
+ }());
+
+ var quat = /** @class */ (function () {
+ function quat(values) {
+ this.values = new Float32Array(4);
+ if (values !== undefined) {
+ this.xyzw = values;
+ }
+ }
+ Object.defineProperty(quat.prototype, "x", {
+ get: function () {
+ return this.values[0];
+ },
+ set: function (value) {
+ this.values[0] = value;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Object.defineProperty(quat.prototype, "y", {
+ get: function () {
+ return this.values[1];
+ },
+ set: function (value) {
+ this.values[1] = value;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Object.defineProperty(quat.prototype, "z", {
+ get: function () {
+ return this.values[2];
+ },
+ set: function (value) {
+ this.values[2] = value;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Object.defineProperty(quat.prototype, "w", {
+ get: function () {
+ return this.values[3];
+ },
+ set: function (value) {
+ this.values[3] = value;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Object.defineProperty(quat.prototype, "xy", {
+ get: function () {
+ return [
+ this.values[0],
+ this.values[1],
+ ];
+ },
+ set: function (values) {
+ this.values[0] = values[0];
+ this.values[1] = values[1];
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Object.defineProperty(quat.prototype, "xyz", {
+ get: function () {
+ return [
+ this.values[0],
+ this.values[1],
+ this.values[2],
+ ];
+ },
+ set: function (values) {
+ this.values[0] = values[0];
+ this.values[1] = values[1];
+ this.values[2] = values[2];
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Object.defineProperty(quat.prototype, "xyzw", {
+ get: function () {
+ return [
+ this.values[0],
+ this.values[1],
+ this.values[2],
+ this.values[3],
+ ];
+ },
+ set: function (values) {
+ this.values[0] = values[0];
+ this.values[1] = values[1];
+ this.values[2] = values[2];
+ this.values[3] = values[3];
+ },
+ enumerable: true,
+ configurable: true
+ });
+ quat.prototype.at = function (index) {
+ return this.values[index];
+ };
+ quat.prototype.reset = function () {
+ for (var i = 0; i < 4; i++) {
+ this.values[i] = 0;
+ }
+ };
+ quat.prototype.copy = function (dest) {
+ if (!dest) {
+ dest = new quat();
+ }
+ for (var i = 0; i < 4; i++) {
+ dest.values[i] = this.values[i];
+ }
+ return dest;
+ };
+ quat.prototype.roll = function () {
+ var x = this.x;
+ var y = this.y;
+ var z = this.z;
+ var w = this.w;
+ return Math.atan2(2.0 * (x * y + w * z), w * w + x * x - y * y - z * z);
+ };
+ quat.prototype.pitch = function () {
+ var x = this.x;
+ var y = this.y;
+ var z = this.z;
+ var w = this.w;
+ return Math.atan2(2.0 * (y * z + w * x), w * w - x * x - y * y + z * z);
+ };
+ quat.prototype.yaw = function () {
+ return Math.asin(2.0 * (this.x * this.z - this.w * this.y));
+ };
+ quat.prototype.equals = function (vector, threshold) {
+ if (threshold === void 0) { threshold = epsilon; }
+ for (var i = 0; i < 4; i++) {
+ if (Math.abs(this.values[i] - vector.at(i)) > threshold) {
+ return false;
+ }
+ }
+ return true;
+ };
+ quat.prototype.setIdentity = function () {
+ this.x = 0;
+ this.y = 0;
+ this.z = 0;
+ this.w = 1;
+ return this;
+ };
+ quat.prototype.calculateW = function () {
+ var x = this.x;
+ var y = this.y;
+ var z = this.z;
+ this.w = -(Math.sqrt(Math.abs(1.0 - x * x - y * y - z * z)));
+ return this;
+ };
+ quat.prototype.inverse = function () {
+ var dot = quat.dot(this, this);
+ if (!dot) {
+ this.xyzw = [0, 0, 0, 0];
+ return this;
+ }
+ var invDot = dot ? 1.0 / dot : 0;
+ this.x *= -invDot;
+ this.y *= -invDot;
+ this.z *= -invDot;
+ this.w *= invDot;
+ return this;
+ };
+ quat.prototype.conjugate = function () {
+ this.values[0] *= -1;
+ this.values[1] *= -1;
+ this.values[2] *= -1;
+ return this;
+ };
+ quat.prototype.length = function () {
+ var x = this.x;
+ var y = this.y;
+ var z = this.z;
+ var w = this.w;
+ return Math.sqrt(x * x + y * y + z * z + w * w);
+ };
+ quat.prototype.normalize = function (dest) {
+ if (!dest) {
+ dest = this;
+ }
+ var x = this.x;
+ var y = this.y;
+ var z = this.z;
+ var w = this.w;
+ var length = Math.sqrt(x * x + y * y + z * z + w * w);
+ if (!length) {
+ dest.x = 0;
+ dest.y = 0;
+ dest.z = 0;
+ dest.w = 0;
+ return dest;
+ }
+ length = 1 / length;
+ dest.x = x * length;
+ dest.y = y * length;
+ dest.z = z * length;
+ dest.w = w * length;
+ return dest;
+ };
+ quat.prototype.add = function (other) {
+ for (var i = 0; i < 4; i++) {
+ this.values[i] += other.at(i);
+ }
+ return this;
+ };
+ quat.prototype.multiply = function (other) {
+ var q1x = this.values[0];
+ var q1y = this.values[1];
+ var q1z = this.values[2];
+ var q1w = this.values[3];
+ var q2x = other.x;
+ var q2y = other.y;
+ var q2z = other.z;
+ var q2w = other.w;
+ this.x = q1x * q2w + q1w * q2x + q1y * q2z - q1z * q2y;
+ this.y = q1y * q2w + q1w * q2y + q1z * q2x - q1x * q2z;
+ this.z = q1z * q2w + q1w * q2z + q1x * q2y - q1y * q2x;
+ this.w = q1w * q2w - q1x * q2x - q1y * q2y - q1z * q2z;
+ return this;
+ };
+ quat.prototype.multiplyVec3 = function (vector, dest) {
+ if (!dest) {
+ dest = new vec3();
+ }
+ var x = vector.x;
+ var y = vector.y;
+ var z = vector.z;
+ var qx = this.x;
+ var qy = this.y;
+ var qz = this.z;
+ var qw = this.w;
+ var ix = qw * x + qy * z - qz * y;
+ var iy = qw * y + qz * x - qx * z;
+ var iz = qw * z + qx * y - qy * x;
+ var iw = -qx * x - qy * y - qz * z;
+ dest.x = ix * qw + iw * -qx + iy * -qz - iz * -qy;
+ dest.y = iy * qw + iw * -qy + iz * -qx - ix * -qz;
+ dest.z = iz * qw + iw * -qz + ix * -qy - iy * -qx;
+ return dest;
+ };
+ quat.prototype.toMat3 = function (dest) {
+ if (!dest) {
+ dest = new mat3();
+ }
+ var x = this.x;
+ var y = this.y;
+ var z = this.z;
+ var w = this.w;
+ var x2 = x + x;
+ var y2 = y + y;
+ var z2 = z + z;
+ var xx = x * x2;
+ var xy = x * y2;
+ var xz = x * z2;
+ var yy = y * y2;
+ var yz = y * z2;
+ var zz = z * z2;
+ var wx = w * x2;
+ var wy = w * y2;
+ var wz = w * z2;
+ dest.init([
+ 1 - (yy + zz),
+ xy + wz,
+ xz - wy,
+ xy - wz,
+ 1 - (xx + zz),
+ yz + wx,
+ xz + wy,
+ yz - wx,
+ 1 - (xx + yy),
+ ]);
+ return dest;
+ };
+ quat.prototype.toMat4 = function (dest) {
+ if (!dest) {
+ dest = new mat4();
+ }
+ var x = this.x;
+ var y = this.y;
+ var z = this.z;
+ var w = this.w;
+ var x2 = x + x;
+ var y2 = y + y;
+ var z2 = z + z;
+ var xx = x * x2;
+ var xy = x * y2;
+ var xz = x * z2;
+ var yy = y * y2;
+ var yz = y * z2;
+ var zz = z * z2;
+ var wx = w * x2;
+ var wy = w * y2;
+ var wz = w * z2;
+ dest.init([
+ 1 - (yy + zz),
+ xy + wz,
+ xz - wy,
+ 0,
+ xy - wz,
+ 1 - (xx + zz),
+ yz + wx,
+ 0,
+ xz + wy,
+ yz - wx,
+ 1 - (xx + yy),
+ 0,
+ 0,
+ 0,
+ 0,
+ 1,
+ ]);
+ return dest;
+ };
+ quat.dot = function (q1, q2) {
+ return q1.x * q2.x + q1.y * q2.y + q1.z * q2.z + q1.w * q2.w;
+ };
+ quat.sum = function (q1, q2, dest) {
+ if (!dest) {
+ dest = new quat();
+ }
+ dest.x = q1.x + q2.x;
+ dest.y = q1.y + q2.y;
+ dest.z = q1.z + q2.z;
+ dest.w = q1.w + q2.w;
+ return dest;
+ };
+ quat.product = function (q1, q2, dest) {
+ if (!dest) {
+ dest = new quat();
+ }
+ var q1x = q1.x;
+ var q1y = q1.y;
+ var q1z = q1.z;
+ var q1w = q1.w;
+ var q2x = q2.x;
+ var q2y = q2.y;
+ var q2z = q2.z;
+ var q2w = q2.w;
+ dest.x = q1x * q2w + q1w * q2x + q1y * q2z - q1z * q2y;
+ dest.y = q1y * q2w + q1w * q2y + q1z * q2x - q1x * q2z;
+ dest.z = q1z * q2w + q1w * q2z + q1x * q2y - q1y * q2x;
+ dest.w = q1w * q2w - q1x * q2x - q1y * q2y - q1z * q2z;
+ return dest;
+ };
+ quat.cross = function (q1, q2, dest) {
+ if (!dest) {
+ dest = new quat();
+ }
+ var q1x = q1.x;
+ var q1y = q1.y;
+ var q1z = q1.z;
+ var q1w = q1.w;
+ var q2x = q2.x;
+ var q2y = q2.y;
+ var q2z = q2.z;
+ var q2w = q2.w;
+ dest.x = q1w * q2z + q1z * q2w + q1x * q2y - q1y * q2x;
+ dest.y = q1w * q2w - q1x * q2x - q1y * q2y - q1z * q2z;
+ dest.z = q1w * q2x + q1x * q2w + q1y * q2z - q1z * q2y;
+ dest.w = q1w * q2y + q1y * q2w + q1z * q2x - q1x * q2z;
+ return dest;
+ };
+ quat.shortMix = function (q1, q2, time, dest) {
+ if (!dest) {
+ dest = new quat();
+ }
+ if (time <= 0.0) {
+ dest.xyzw = q1.xyzw;
+ return dest;
+ }
+ else if (time >= 1.0) {
+ dest.xyzw = q2.xyzw;
+ return dest;
+ }
+ var cos = quat.dot(q1, q2);
+ var q2a = q2.copy();
+ if (cos < 0.0) {
+ q2a.inverse();
+ cos = -cos;
+ }
+ var k0;
+ var k1;
+ if (cos > 0.9999) {
+ k0 = 1 - time;
+ k1 = 0 + time;
+ }
+ else {
+ var sin = Math.sqrt(1 - cos * cos);
+ var angle = Math.atan2(sin, cos);
+ var oneOverSin = 1 / sin;
+ k0 = Math.sin((1 - time) * angle) * oneOverSin;
+ k1 = Math.sin((0 + time) * angle) * oneOverSin;
+ }
+ dest.x = k0 * q1.x + k1 * q2a.x;
+ dest.y = k0 * q1.y + k1 * q2a.y;
+ dest.z = k0 * q1.z + k1 * q2a.z;
+ dest.w = k0 * q1.w + k1 * q2a.w;
+ return dest;
+ };
+ quat.mix = function (q1, q2, time, dest) {
+ if (!dest) {
+ dest = new quat();
+ }
+ var cosHalfTheta = q1.x * q2.x + q1.y * q2.y + q1.z * q2.z + q1.w * q2.w;
+ if (Math.abs(cosHalfTheta) >= 1.0) {
+ dest.xyzw = q1.xyzw;
+ return dest;
+ }
+ var halfTheta = Math.acos(cosHalfTheta);
+ var sinHalfTheta = Math.sqrt(1.0 - cosHalfTheta * cosHalfTheta);
+ if (Math.abs(sinHalfTheta) < 0.001) {
+ dest.x = q1.x * 0.5 + q2.x * 0.5;
+ dest.y = q1.y * 0.5 + q2.y * 0.5;
+ dest.z = q1.z * 0.5 + q2.z * 0.5;
+ dest.w = q1.w * 0.5 + q2.w * 0.5;
+ return dest;
+ }
+ var ratioA = Math.sin((1 - time) * halfTheta) / sinHalfTheta;
+ var ratioB = Math.sin(time * halfTheta) / sinHalfTheta;
+ dest.x = q1.x * ratioA + q2.x * ratioB;
+ dest.y = q1.y * ratioA + q2.y * ratioB;
+ dest.z = q1.z * ratioA + q2.z * ratioB;
+ dest.w = q1.w * ratioA + q2.w * ratioB;
+ return dest;
+ };
+ quat.fromAxisAngle = function (axis, angle, dest) {
+ if (!dest) {
+ dest = new quat();
+ }
+ angle *= 0.5;
+ var sin = Math.sin(angle);
+ dest.x = axis.x * sin;
+ dest.y = axis.y * sin;
+ dest.z = axis.z * sin;
+ dest.w = Math.cos(angle);
+ return dest;
+ };
+ quat.identity = new quat().setIdentity();
+ return quat;
+ }());
+
+ var vec3 = /** @class */ (function () {
+ function vec3(values) {
+ this.values = new Float32Array(3);
+ if (values !== undefined) {
+ this.xyz = values;
+ }
+ }
+ Object.defineProperty(vec3.prototype, "x", {
+ get: function () {
+ return this.values[0];
+ },
+ set: function (value) {
+ this.values[0] = value;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Object.defineProperty(vec3.prototype, "y", {
+ get: function () {
+ return this.values[1];
+ },
+ set: function (value) {
+ this.values[1] = value;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Object.defineProperty(vec3.prototype, "z", {
+ get: function () {
+ return this.values[2];
+ },
+ set: function (value) {
+ this.values[2] = value;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Object.defineProperty(vec3.prototype, "xy", {
+ get: function () {
+ return [
+ this.values[0],
+ this.values[1],
+ ];
+ },
+ set: function (values) {
+ this.values[0] = values[0];
+ this.values[1] = values[1];
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Object.defineProperty(vec3.prototype, "xyz", {
+ get: function () {
+ return [
+ this.values[0],
+ this.values[1],
+ this.values[2],
+ ];
+ },
+ set: function (values) {
+ this.values[0] = values[0];
+ this.values[1] = values[1];
+ this.values[2] = values[2];
+ },
+ enumerable: true,
+ configurable: true
+ });
+ vec3.prototype.at = function (index) {
+ return this.values[index];
+ };
+ vec3.prototype.reset = function () {
+ this.x = 0;
+ this.y = 0;
+ this.z = 0;
+ };
+ vec3.prototype.copy = function (dest) {
+ if (!dest) {
+ dest = new vec3();
+ }
+ dest.x = this.x;
+ dest.y = this.y;
+ dest.z = this.z;
+ return dest;
+ };
+ vec3.prototype.negate = function (dest) {
+ if (!dest) {
+ dest = this;
+ }
+ dest.x = -this.x;
+ dest.y = -this.y;
+ dest.z = -this.z;
+ return dest;
+ };
+ vec3.prototype.equals = function (vector, threshold) {
+ if (threshold === void 0) { threshold = epsilon; }
+ if (Math.abs(this.x - vector.x) > threshold) {
+ return false;
+ }
+ if (Math.abs(this.y - vector.y) > threshold) {
+ return false;
+ }
+ if (Math.abs(this.z - vector.z) > threshold) {
+ return false;
+ }
+ return true;
+ };
+ vec3.prototype.length = function () {
+ return Math.sqrt(this.squaredLength());
+ };
+ vec3.prototype.squaredLength = function () {
+ var x = this.x;
+ var y = this.y;
+ var z = this.z;
+ return (x * x + y * y + z * z);
+ };
+ vec3.prototype.add = function (vector) {
+ this.x += vector.x;
+ this.y += vector.y;
+ this.z += vector.z;
+ return this;
+ };
+ vec3.prototype.subtract = function (vector) {
+ this.x -= vector.x;
+ this.y -= vector.y;
+ this.z -= vector.z;
+ return this;
+ };
+ vec3.prototype.multiply = function (vector) {
+ this.x *= vector.x;
+ this.y *= vector.y;
+ this.z *= vector.z;
+ return this;
+ };
+ vec3.prototype.divide = function (vector) {
+ this.x /= vector.x;
+ this.y /= vector.y;
+ this.z /= vector.z;
+ return this;
+ };
+ vec3.prototype.scale = function (value, dest) {
+ if (!dest) {
+ dest = this;
+ }
+ dest.x *= value;
+ dest.y *= value;
+ dest.z *= value;
+ return dest;
+ };
+ vec3.prototype.normalize = function (dest) {
+ if (!dest) {
+ dest = this;
+ }
+ var length = this.length();
+ if (length === 1) {
+ return this;
+ }
+ if (length === 0) {
+ dest.x = 0;
+ dest.y = 0;
+ dest.z = 0;
+ return dest;
+ }
+ length = 1.0 / length;
+ dest.x *= length;
+ dest.y *= length;
+ dest.z *= length;
+ return dest;
+ };
+ vec3.prototype.multiplyByMat3 = function (matrix, dest) {
+ if (!dest) {
+ dest = this;
+ }
+ return matrix.multiplyVec3(this, dest);
+ };
+ vec3.prototype.multiplyByQuat = function (quaternion, dest) {
+ if (!dest) {
+ dest = this;
+ }
+ return quaternion.multiplyVec3(this, dest);
+ };
+ vec3.prototype.toQuat = function (dest) {
+ if (!dest) {
+ dest = new quat();
+ }
+ var c = new vec3();
+ var s = new vec3();
+ c.x = Math.cos(this.x * 0.5);
+ s.x = Math.sin(this.x * 0.5);
+ c.y = Math.cos(this.y * 0.5);
+ s.y = Math.sin(this.y * 0.5);
+ c.z = Math.cos(this.z * 0.5);
+ s.z = Math.sin(this.z * 0.5);
+ dest.x = s.x * c.y * c.z - c.x * s.y * s.z;
+ dest.y = c.x * s.y * c.z + s.x * c.y * s.z;
+ dest.z = c.x * c.y * s.z - s.x * s.y * c.z;
+ dest.w = c.x * c.y * c.z + s.x * s.y * s.z;
+ return dest;
+ };
+ vec3.cross = function (vector, vector2, dest) {
+ if (!dest) {
+ dest = new vec3();
+ }
+ var x = vector.x;
+ var y = vector.y;
+ var z = vector.z;
+ var x2 = vector2.x;
+ var y2 = vector2.y;
+ var z2 = vector2.z;
+ dest.x = y * z2 - z * y2;
+ dest.y = z * x2 - x * z2;
+ dest.z = x * y2 - y * x2;
+ return dest;
+ };
+ vec3.dot = function (vector, vector2) {
+ var x = vector.x;
+ var y = vector.y;
+ var z = vector.z;
+ var x2 = vector2.x;
+ var y2 = vector2.y;
+ var z2 = vector2.z;
+ return (x * x2 + y * y2 + z * z2);
+ };
+ vec3.distance = function (vector, vector2) {
+ var x = vector2.x - vector.x;
+ var y = vector2.y - vector.y;
+ var z = vector2.z - vector.z;
+ return Math.sqrt(this.squaredDistance(vector, vector2));
+ };
+ vec3.squaredDistance = function (vector, vector2) {
+ var x = vector2.x - vector.x;
+ var y = vector2.y - vector.y;
+ var z = vector2.z - vector.z;
+ return (x * x + y * y + z * z);
+ };
+ vec3.direction = function (vector, vector2, dest) {
+ if (!dest) {
+ dest = new vec3();
+ }
+ var x = vector.x - vector2.x;
+ var y = vector.y - vector2.y;
+ var z = vector.z - vector2.z;
+ var length = Math.sqrt(x * x + y * y + z * z);
+ if (length === 0) {
+ dest.x = 0;
+ dest.y = 0;
+ dest.z = 0;
+ return dest;
+ }
+ length = 1 / length;
+ dest.x = x * length;
+ dest.y = y * length;
+ dest.z = z * length;
+ return dest;
+ };
+ vec3.mix = function (vector, vector2, time, dest) {
+ if (!dest) {
+ dest = new vec3();
+ }
+ dest.x = vector.x + time * (vector2.x - vector.x);
+ dest.y = vector.y + time * (vector2.y - vector.y);
+ dest.z = vector.z + time * (vector2.z - vector.z);
+ return dest;
+ };
+ vec3.sum = function (vector, vector2, dest) {
+ if (!dest) {
+ dest = new vec3();
+ }
+ dest.x = vector.x + vector2.x;
+ dest.y = vector.y + vector2.y;
+ dest.z = vector.z + vector2.z;
+ return dest;
+ };
+ vec3.difference = function (vector, vector2, dest) {
+ if (!dest) {
+ dest = new vec3();
+ }
+ dest.x = vector.x - vector2.x;
+ dest.y = vector.y - vector2.y;
+ dest.z = vector.z - vector2.z;
+ return dest;
+ };
+ vec3.product = function (vector, vector2, dest) {
+ if (!dest) {
+ dest = new vec3();
+ }
+ dest.x = vector.x * vector2.x;
+ dest.y = vector.y * vector2.y;
+ dest.z = vector.z * vector2.z;
+ return dest;
+ };
+ vec3.quotient = function (vector, vector2, dest) {
+ if (!dest) {
+ dest = new vec3();
+ }
+ dest.x = vector.x / vector2.x;
+ dest.y = vector.y / vector2.y;
+ dest.z = vector.z / vector2.z;
+ return dest;
+ };
+ vec3.zero = new vec3([0, 0, 0]);
+ vec3.one = new vec3([1, 1, 1]);
+ vec3.up = new vec3([0, 1, 0]);
+ vec3.right = new vec3([1, 0, 0]);
+ vec3.forward = new vec3([0, 0, 1]);
+ return vec3;
+ }());
+
+ var vec2 = /** @class */ (function () {
+ function vec2(values) {
+ this.values = new Float32Array(2);
+ if (values !== undefined) {
+ this.xy = values;
+ }
+ }
+ Object.defineProperty(vec2.prototype, "x", {
+ get: function () {
+ return this.values[0];
+ },
+ set: function (value) {
+ this.values[0] = value;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Object.defineProperty(vec2.prototype, "y", {
+ get: function () {
+ return this.values[1];
+ },
+ set: function (value) {
+ this.values[1] = value;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Object.defineProperty(vec2.prototype, "xy", {
+ get: function () {
+ return [
+ this.values[0],
+ this.values[1],
+ ];
+ },
+ set: function (values) {
+ this.values[0] = values[0];
+ this.values[1] = values[1];
+ },
+ enumerable: true,
+ configurable: true
+ });
+ vec2.prototype.at = function (index) {
+ return this.values[index];
+ };
+ vec2.prototype.reset = function () {
+ this.x = 0;
+ this.y = 0;
+ };
+ vec2.prototype.copy = function (dest) {
+ if (!dest) {
+ dest = new vec2();
+ }
+ dest.x = this.x;
+ dest.y = this.y;
+ return dest;
+ };
+ vec2.prototype.negate = function (dest) {
+ if (!dest) {
+ dest = this;
+ }
+ dest.x = -this.x;
+ dest.y = -this.y;
+ return dest;
+ };
+ vec2.prototype.equals = function (vector, threshold) {
+ if (threshold === void 0) { threshold = epsilon; }
+ if (Math.abs(this.x - vector.x) > threshold) {
+ return false;
+ }
+ if (Math.abs(this.y - vector.y) > threshold) {
+ return false;
+ }
+ return true;
+ };
+ vec2.prototype.length = function () {
+ return Math.sqrt(this.squaredLength());
+ };
+ vec2.prototype.squaredLength = function () {
+ var x = this.x;
+ var y = this.y;
+ return (x * x + y * y);
+ };
+ vec2.prototype.add = function (vector) {
+ this.x += vector.x;
+ this.y += vector.y;
+ return this;
+ };
+ vec2.prototype.subtract = function (vector) {
+ this.x -= vector.x;
+ this.y -= vector.y;
+ return this;
+ };
+ vec2.prototype.multiply = function (vector) {
+ this.x *= vector.x;
+ this.y *= vector.y;
+ return this;
+ };
+ vec2.prototype.divide = function (vector) {
+ this.x /= vector.x;
+ this.y /= vector.y;
+ return this;
+ };
+ vec2.prototype.scale = function (value, dest) {
+ if (!dest) {
+ dest = this;
+ }
+ dest.x *= value;
+ dest.y *= value;
+ return dest;
+ };
+ vec2.prototype.normalize = function (dest) {
+ if (!dest) {
+ dest = this;
+ }
+ var length = this.length();
+ if (length === 1) {
+ return this;
+ }
+ if (length === 0) {
+ dest.x = 0;
+ dest.y = 0;
+ return dest;
+ }
+ length = 1.0 / length;
+ dest.x *= length;
+ dest.y *= length;
+ return dest;
+ };
+ vec2.prototype.multiplyMat2 = function (matrix, dest) {
+ if (!dest) {
+ dest = this;
+ }
+ return matrix.multiplyVec2(this, dest);
+ };
+ vec2.prototype.multiplyMat3 = function (matrix, dest) {
+ if (!dest) {
+ dest = this;
+ }
+ return matrix.multiplyVec2(this, dest);
+ };
+ vec2.cross = function (vector, vector2, dest) {
+ if (!dest) {
+ dest = new vec3();
+ }
+ var x = vector.x;
+ var y = vector.y;
+ var x2 = vector2.x;
+ var y2 = vector2.y;
+ var z = x * y2 - y * x2;
+ dest.x = 0;
+ dest.y = 0;
+ dest.z = z;
+ return dest;
+ };
+ vec2.dot = function (vector, vector2) {
+ return (vector.x * vector2.x + vector.y * vector2.y);
+ };
+ vec2.distance = function (vector, vector2) {
+ return Math.sqrt(this.squaredDistance(vector, vector2));
+ };
+ vec2.squaredDistance = function (vector, vector2) {
+ var x = vector2.x - vector.x;
+ var y = vector2.y - vector.y;
+ return (x * x + y * y);
+ };
+ vec2.direction = function (vector, vector2, dest) {
+ if (!dest) {
+ dest = new vec2();
+ }
+ var x = vector.x - vector2.x;
+ var y = vector.y - vector2.y;
+ var length = Math.sqrt(x * x + y * y);
+ if (length === 0) {
+ dest.x = 0;
+ dest.y = 0;
+ return dest;
+ }
+ length = 1 / length;
+ dest.x = x * length;
+ dest.y = y * length;
+ return dest;
+ };
+ vec2.mix = function (vector, vector2, time, dest) {
+ if (!dest) {
+ dest = new vec2();
+ }
+ var x = vector.x;
+ var y = vector.y;
+ var x2 = vector2.x;
+ var y2 = vector2.y;
+ dest.x = x + time * (x2 - x);
+ dest.y = y + time * (y2 - y);
+ return dest;
+ };
+ vec2.sum = function (vector, vector2, dest) {
+ if (!dest) {
+ dest = new vec2();
+ }
+ dest.x = vector.x + vector2.x;
+ dest.y = vector.y + vector2.y;
+ return dest;
+ };
+ vec2.difference = function (vector, vector2, dest) {
+ if (!dest) {
+ dest = new vec2();
+ }
+ dest.x = vector.x - vector2.x;
+ dest.y = vector.y - vector2.y;
+ return dest;
+ };
+ vec2.product = function (vector, vector2, dest) {
+ if (!dest) {
+ dest = new vec2();
+ }
+ dest.x = vector.x * vector2.x;
+ dest.y = vector.y * vector2.y;
+ return dest;
+ };
+ vec2.quotient = function (vector, vector2, dest) {
+ if (!dest) {
+ dest = new vec2();
+ }
+ dest.x = vector.x / vector2.x;
+ dest.y = vector.y / vector2.y;
+ return dest;
+ };
+ vec2.zero = new vec2([0, 0]);
+ vec2.one = new vec2([1, 1]);
+ return vec2;
+ }());
+
+ var mat2 = /** @class */ (function () {
+ function mat2(values) {
+ this.values = new Float32Array(4);
+ if (values !== undefined) {
+ this.init(values);
+ }
+ }
+ mat2.prototype.at = function (index) {
+ return this.values[index];
+ };
+ mat2.prototype.init = function (values) {
+ for (var i = 0; i < 4; i++) {
+ this.values[i] = values[i];
+ }
+ return this;
+ };
+ mat2.prototype.reset = function () {
+ for (var i = 0; i < 4; i++) {
+ this.values[i] = 0;
+ }
+ };
+ mat2.prototype.copy = function (dest) {
+ if (!dest) {
+ dest = new mat2();
+ }
+ for (var i = 0; i < 4; i++) {
+ dest.values[i] = this.values[i];
+ }
+ return dest;
+ };
+ mat2.prototype.all = function () {
+ var data = [];
+ for (var i = 0; i < 4; i++) {
+ data[i] = this.values[i];
+ }
+ return data;
+ };
+ mat2.prototype.row = function (index) {
+ return [
+ this.values[index * 2 + 0],
+ this.values[index * 2 + 1],
+ ];
+ };
+ mat2.prototype.col = function (index) {
+ return [
+ this.values[index],
+ this.values[index + 2],
+ ];
+ };
+ mat2.prototype.equals = function (matrix, threshold) {
+ if (threshold === void 0) { threshold = epsilon; }
+ for (var i = 0; i < 4; i++) {
+ if (Math.abs(this.values[i] - matrix.at(i)) > threshold) {
+ return false;
+ }
+ }
+ return true;
+ };
+ mat2.prototype.determinant = function () {
+ return this.values[0] * this.values[3] - this.values[2] * this.values[1];
+ };
+ mat2.prototype.setIdentity = function () {
+ this.values[0] = 1;
+ this.values[1] = 0;
+ this.values[2] = 0;
+ this.values[3] = 1;
+ return this;
+ };
+ mat2.prototype.transpose = function () {
+ var temp = this.values[1];
+ this.values[1] = this.values[2];
+ this.values[2] = temp;
+ return this;
+ };
+ mat2.prototype.inverse = function () {
+ var det = this.determinant();
+ if (!det) {
+ return null;
+ }
+ det = 1.0 / det;
+ var a11 = this.values[0];
+ this.values[0] = det * (this.values[3]);
+ this.values[1] = det * (-this.values[1]);
+ this.values[2] = det * (-this.values[2]);
+ this.values[3] = det * a11;
+ return this;
+ };
+ mat2.prototype.multiply = function (matrix) {
+ var a11 = this.values[0];
+ var a12 = this.values[1];
+ var a21 = this.values[2];
+ var a22 = this.values[3];
+ this.values[0] = a11 * matrix.at(0) + a12 * matrix.at(2);
+ this.values[1] = a11 * matrix.at(1) + a12 * matrix.at(3);
+ this.values[2] = a21 * matrix.at(0) + a22 * matrix.at(2);
+ this.values[3] = a21 * matrix.at(1) + a22 * matrix.at(3);
+ return this;
+ };
+ mat2.prototype.rotate = function (angle) {
+ var a11 = this.values[0];
+ var a12 = this.values[1];
+ var a21 = this.values[2];
+ var a22 = this.values[3];
+ var sin = Math.sin(angle);
+ var cos = Math.cos(angle);
+ this.values[0] = a11 * cos + a12 * sin;
+ this.values[1] = a11 * -sin + a12 * cos;
+ this.values[2] = a21 * cos + a22 * sin;
+ this.values[3] = a21 * -sin + a22 * cos;
+ return this;
+ };
+ mat2.prototype.multiplyVec2 = function (vector, result) {
+ var x = vector.x;
+ var y = vector.y;
+ if (result) {
+ result.xy = [
+ x * this.values[0] + y * this.values[1],
+ x * this.values[2] + y * this.values[3],
+ ];
+ return result;
+ }
+ else {
+ return new vec2([
+ x * this.values[0] + y * this.values[1],
+ x * this.values[2] + y * this.values[3],
+ ]);
+ }
+ };
+ mat2.prototype.scale = function (vector) {
+ var a11 = this.values[0];
+ var a12 = this.values[1];
+ var a21 = this.values[2];
+ var a22 = this.values[3];
+ var x = vector.x;
+ var y = vector.y;
+ this.values[0] = a11 * x;
+ this.values[1] = a12 * y;
+ this.values[2] = a21 * x;
+ this.values[3] = a22 * y;
+ return this;
+ };
+ mat2.product = function (m1, m2, result) {
+ var a11 = m1.at(0);
+ var a12 = m1.at(1);
+ var a21 = m1.at(2);
+ var a22 = m1.at(3);
+ if (result) {
+ result.init([
+ a11 * m2.at(0) + a12 * m2.at(2),
+ a11 * m2.at(1) + a12 * m2.at(3),
+ a21 * m2.at(0) + a22 * m2.at(2),
+ a21 * m2.at(1) + a22 * m2.at(3),
+ ]);
+ return result;
+ }
+ else {
+ return new mat2([
+ a11 * m2.at(0) + a12 * m2.at(2),
+ a11 * m2.at(1) + a12 * m2.at(3),
+ a21 * m2.at(0) + a22 * m2.at(2),
+ a21 * m2.at(1) + a22 * m2.at(3),
+ ]);
+ }
+ };
+ mat2.identity = new mat2().setIdentity();
+ return mat2;
+ }());
+
+ var VBO = /** @class */ (function () {
+ function VBO(gl) {
+ this.sprVerts = [];
+ this.txtVerts = [];
+ this.AtlasSize = 1;
+ this.gl = null;
+ this.gl = gl;
+ this.verticlesBuffer = gl.createBuffer();
+ gl.bindBuffer(gl.ARRAY_BUFFER, this.verticlesBuffer);
+ }
+ VBO.prototype.SetupHeight = function (hight) {
+ this.hight = hight;
+ };
+ VBO.prototype.SetupForDraw = function (vertexPositionAttr, textureCoordAttr, AtlasSize) {
+ this.gl.enableVertexAttribArray(vertexPositionAttr);
+ this.gl.vertexAttribPointer(vertexPositionAttr, 3, this.gl.FLOAT, false, 20, 0);
+ this.gl.enableVertexAttribArray(textureCoordAttr);
+ this.gl.vertexAttribPointer(textureCoordAttr, 2, this.gl.FLOAT, false, 20, 12);
+ this.gl.bufferData(this.gl.ARRAY_BUFFER, new Float32Array(15 * 10000), this.gl.STREAM_DRAW);
+ this.AtlasSize = AtlasSize;
+ };
+ VBO.prototype.RenderAllSpr = function () {
+ this.gl.bufferSubData(this.gl.ARRAY_BUFFER, 0, new Float32Array(this.sprVerts));
+ this.gl.drawArrays(this.gl.TRIANGLES, 0, this.sprVerts.length / 5);
+ this.sprVerts = [];
+ };
+ VBO.prototype.RenderAllTxt = function () {
+ this.gl.bufferSubData(this.gl.ARRAY_BUFFER, 0, new Float32Array(this.txtVerts));
+ this.gl.drawArrays(this.gl.TRIANGLES, 0, this.txtVerts.length / 5);
+ this.txtVerts = [];
+ };
+ VBO.prototype.DrawSpr = function (AtlasX, AtlasY, AtlasWidth, AtlasHeigh, ScreenX, ScreenY, ScreenWidth, ScreenHeight) {
+ for (var i = 0; i < VBO.defaultVerts.length; i += 2) {
+ //Pos
+ this.sprVerts.push(VBO.defaultVerts[i] * ScreenWidth + ScreenX | 0);
+ this.sprVerts.push(VBO.defaultVerts[i + 1] * ScreenHeight + ScreenY | 0);
+ this.sprVerts.push(this.hight);
+ //Tex
+ this.sprVerts.push(VBO.defaultVerts[i] * (AtlasWidth / this.AtlasSize) + (AtlasX / this.AtlasSize));
+ this.sprVerts.push(VBO.defaultVerts[i + 1] * (AtlasHeigh / this.AtlasSize) + (AtlasY / this.AtlasSize));
+ }
+ };
+ VBO.prototype.DrawTxt = function (AtlasX, AtlasY, AtlasWidth, AtlasHeigh, ScreenX, ScreenY, ScreenWidth, ScreenHeight) {
+ for (var i = 0; i < VBO.defaultVerts.length; i += 2) {
+ //Pos
+ this.txtVerts.push(VBO.defaultVerts[i] * ScreenWidth + ScreenX | 0);
+ this.txtVerts.push(VBO.defaultVerts[i + 1] * ScreenHeight + ScreenY | 0);
+ this.txtVerts.push(this.hight);
+ //Tex
+ this.txtVerts.push(VBO.defaultVerts[i] * (AtlasWidth / 1024) + (AtlasX / 1024));
+ this.txtVerts.push(VBO.defaultVerts[i + 1] * (AtlasHeigh / 1024) + (AtlasY / 1024));
+ }
+ };
+ VBO.defaultVerts = [
+ //Left
+ 0.0, 1.0,
+ 1.0, 0.0,
+ 0.0, 0.0,
+ //Right
+ 0.0, 1.0,
+ 1.0, 1.0,
+ 1.0, 0.0 // 2
+ ];
+ return VBO;
+ }());
+
+ var TextDrawer = /** @class */ (function () {
+ function TextDrawer(gl) {
+ this.TextureSize = { Width: 1024, Height: 1024 };
+ this.txtsList = new Array();
+ this.gl = gl;
+ this.canvas = document.createElement("canvas");
+ this.canvas.width = 1024;
+ this.canvas.height = 1024;
+ this.canvas.style.backgroundColor = "black";
+ this.ctx = this.canvas.getContext("2d");
+ this.ctx.textBaseline = "top";
+ this.texture = this.gl.createTexture();
+ this.gl.bindTexture(this.gl.TEXTURE_2D, this.texture);
+ this.gl.texImage2D(this.gl.TEXTURE_2D, 0, this.gl.RGBA, this.gl.RGBA, this.gl.UNSIGNED_BYTE, this.canvas);
+ this.gl.texParameteri(this.gl.TEXTURE_2D, this.gl.TEXTURE_MAG_FILTER, this.gl.LINEAR);
+ this.gl.texParameteri(this.gl.TEXTURE_2D, this.gl.TEXTURE_MIN_FILTER, this.gl.LINEAR);
+ }
+ TextDrawer.prototype.PrepareTxt = function (str, color, fontSize, outline) {
+ this.ctx.font = "bold " + fontSize + "px Tahoma";
+ var currTxtWidth = this.ctx.measureText(str).width;
+ var currStartY = 0;
+ var highestPosYIndex = 0;
+ for (var i = 0; i < this.txtsList.length; i++) {
+ if (this.txtsList[i].Pos.y >= this.txtsList[highestPosYIndex].Pos.y) {
+ highestPosYIndex = i;
+ currStartY = this.txtsList[highestPosYIndex].Pos.y + this.txtsList[highestPosYIndex].Size.Height * 1.2;
+ }
+ }
+ var test = {
+ str: str,
+ Pos: { x: 0, y: currStartY },
+ Size: {
+ Width: currTxtWidth + Math.sqrt(fontSize) * 1.7,
+ Height: fontSize + Math.sqrt(fontSize) * 2
+ },
+ Color: color,
+ OutLine: outline,
+ FontSize: fontSize
+ };
+ this.txtsList.push(test);
+ this.BakeTexture();
+ return test;
+ };
+ TextDrawer.prototype.DisposeTxt = function (txtObj) {
+ var index = this.txtsList.indexOf(txtObj);
+ if (index > -1 && index) {
+ this.txtsList.splice(index, 1);
+ }
+ this.UpdatePositon();
+ this.BakeTexture();
+ };
+ TextDrawer.prototype.UpdatePositon = function () {
+ this.txtsList.sort(function (a, b) { return a.Pos.y - b.Pos.y; });
+ for (var i = 0; i < this.txtsList.length; i++) {
+ var newPosY = 0;
+ for (var j = 0; j < i; j++) {
+ newPosY += this.txtsList[j].Size.Height * 1.2;
+ }
+ this.txtsList[i].Pos.y = newPosY;
+ }
+ };
+ TextDrawer.prototype.BakeTexture = function () {
+ this.ctx.clearRect(0, 0, this.canvas.width, this.canvas.height);
+ this.ctx.miterLimit = 1;
+ this.ctx.lineJoin = "round";
+ for (var i = 0; i < this.txtsList.length; i++) {
+ this.ctx.fillStyle = this.txtsList[i].Color;
+ this.ctx.font = "bold " + this.txtsList[i].FontSize + "px Tahoma";
+ if (this.txtsList[i].OutLine) {
+ this.ctx.lineWidth = Math.sqrt(this.txtsList[i].FontSize) * 1.5;
+ this.ctx.strokeStyle = "black";
+ this.ctx.strokeText(this.txtsList[i].str, 5, this.txtsList[i].Pos.y, 1024);
+ }
+ this.ctx.fillText(this.txtsList[i].str, 5, this.txtsList[i].Pos.y, 1024);
+ }
+ this.gl.bindTexture(this.gl.TEXTURE_2D, this.texture);
+ this.gl.texSubImage2D(this.gl.TEXTURE_2D, 0, 0, 0, this.gl.RGBA, this.gl.UNSIGNED_BYTE, this.canvas);
+ };
+ return TextDrawer;
+ }());
+
+ var SpriteRenderer = /** @class */ (function () {
+ function SpriteRenderer(webglContext, Image, Filtering) {
+ if (Filtering === void 0) { Filtering = SpriteRenderer.TextureFilteringLinear; }
+ this.gl = webglContext;
+ this.vbo = new VBO(this.gl);
+ this.Shader = new Shader(this.gl);
+ this.Text = new TextDrawer(this.gl);
+ this.Shader.UseProgram();
+ this.CreateTexture(Image, Filtering);
+ this.vbo.SetupForDraw(this.Shader.VertexPosAttribute, this.Shader.TexCoordAttribute, Image.width);
+ this.gl.clearColor(0.0, 0.0, 0.0, 1.0);
+ this.gl.blendFunc(this.gl.SRC_ALPHA, this.gl.ONE_MINUS_SRC_ALPHA);
+ this.gl.enable(this.gl.BLEND);
+ this.SetHight(0.0);
+ this.gl.enable(this.gl.DEPTH_TEST);
+ this.gl.depthFunc(this.gl.LEQUAL);
+ }
+ SpriteRenderer.prototype.RenderAll = function () {
+ this.gl.clear(this.gl.COLOR_BUFFER_BIT);
+ this.gl.bindTexture(this.gl.TEXTURE_2D, this.texture);
+ this.vbo.RenderAllSpr();
+ this.gl.bindTexture(this.gl.TEXTURE_2D, this.Text.texture);
+ this.vbo.RenderAllTxt();
+ };
+ SpriteRenderer.prototype.UpdateViewPort = function (width, height) {
+ this.gl.viewport(0, 0, width, height);
+ var projmatrix = mat4.orthographic(-width / 2, width / 2, height / 2, -height / 2, 0.1, 2.0);
+ var cameramatrix = mat4.lookAt(new vec3([0.0, 0.0, 1.0]), new vec3([0.0, 0.0, 0.0]), new vec3([0.0, 1.0, 0.0]));
+ this.Shader.updateMatrix(projmatrix.multiply(cameramatrix));
+ };
+ SpriteRenderer.prototype.DrawSpr = function (AtlasX, AtlasY, AtlasWidth, AtlasHeigh, ScreenX, ScreenY, ScreenWidth, ScreenHeight) {
+ this.vbo.DrawSpr(AtlasX, AtlasY, AtlasWidth, AtlasHeigh, ScreenX, ScreenY, ScreenWidth, ScreenHeight);
+ };
+ SpriteRenderer.prototype.SetHight = function (hight) {
+ this.vbo.SetupHeight(hight);
+ };
+ SpriteRenderer.prototype.PrepareTxt = function (str, color, fontSize, outLine) {
+ if (outLine === void 0) { outLine = false; }
+ return this.Text.PrepareTxt(str, color, fontSize, outLine);
+ };
+ SpriteRenderer.prototype.DisposeTxt = function (txtObj) {
+ this.Text.DisposeTxt(txtObj);
+ };
+ SpriteRenderer.prototype.DrawTxt = function (txtObj, PosX, PosY) {
+ this.vbo.DrawTxt(txtObj.Pos.x, txtObj.Pos.y, txtObj.Size.Width, txtObj.Size.Height, PosX, PosY, txtObj.Size.Width, txtObj.Size.Height);
+ };
+ SpriteRenderer.prototype.UpdateCamera = function (x, y) {
+ this.Shader.UpdatePosition(x, y);
+ };
+ SpriteRenderer.prototype.CreateTexture = function (image, filtering) {
+ this.texture = this.gl.createTexture();
+ this.gl.bindTexture(this.gl.TEXTURE_2D, this.texture);
+ this.gl.texImage2D(this.gl.TEXTURE_2D, 0, this.gl.RGBA, this.gl.RGBA, this.gl.UNSIGNED_BYTE, image);
+ if (filtering == SpriteRenderer.TextureFilteringLinear) {
+ this.gl.texParameteri(this.gl.TEXTURE_2D, this.gl.TEXTURE_MAG_FILTER, this.gl.LINEAR);
+ this.gl.texParameteri(this.gl.TEXTURE_2D, this.gl.TEXTURE_MIN_FILTER, this.gl.LINEAR);
+ }
+ else {
+ this.gl.texParameteri(this.gl.TEXTURE_2D, this.gl.TEXTURE_MAG_FILTER, this.gl.NEAREST);
+ this.gl.texParameteri(this.gl.TEXTURE_2D, this.gl.TEXTURE_MIN_FILTER, this.gl.NEAREST);
+ }
+ };
+ SpriteRenderer.fromCanvas = function (canvas, Image, Filtering) {
+ if (Filtering === void 0) { Filtering = SpriteRenderer.TextureFilteringLinear; }
+ try {
+ var ctx = canvas.getContext("webgl") || canvas.getContext("experimental-webgl");
+ }
+ catch (e) {
+ console.log("Error with WebGL context initialization");
+ return null;
+ }
+ var newRenderer = new SpriteRenderer(ctx, Image, Filtering);
+ newRenderer.UpdateViewPort(canvas.width, canvas.height);
+ return newRenderer;
+ };
+ SpriteRenderer.TextureFilteringLinear = 0;
+ SpriteRenderer.TextureFilteringNearest = 1;
+ return SpriteRenderer;
+ }());
+
+ var SpriteGL = { Shader: Shader, SpriteRenderer: SpriteRenderer, TextDrawer: TextDrawer, VBO: VBO };
+
+ exports.Shader = Shader;
+ exports.SpriteGL = SpriteGL;
+ exports.SpriteRenderer = SpriteRenderer;
+ exports.TextDrawer = TextDrawer;
+ exports.VBO = VBO;
+ exports.default = SpriteGL;
+
+ Object.defineProperty(exports, '__esModule', { value: true });
+
+})));
diff --git a/dist/SpriteGL.min.js b/dist/SpriteGL.min.js
new file mode 100644
index 0000000..68938f3
--- /dev/null
+++ b/dist/SpriteGL.min.js
@@ -0,0 +1,7 @@
+/*!
+ * SpriteGL v0.0.0
+ * (c) 2015-present
+ * Released under the ISC License.
+ */
+!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports):"function"==typeof define&&define.amd?define(["exports"],e):e(t.spriteGl={})}(this,function(t){"use strict";var e=function(){function t(t){this.gl=null,this.gl=t,this.glProgram=this.MakeProgram(t),this.VertexPosAttribute=t.getAttribLocation(this.glProgram,"aVertexPosition"),this.TexCoordAttribute=t.getAttribLocation(this.glProgram,"aTexCoord"),this.TexSampleUniform=t.getUniformLocation(this.glProgram,"sampler2d"),this.MatUniform=t.getUniformLocation(this.glProgram,"uProjectionView"),this.CameraPosUniform=t.getUniformLocation(this.glProgram,"uCameraPos")}return t.prototype.UseProgram=function(){this.gl.useProgram(this.glProgram),this.gl.uniform1i(this.TexSampleUniform,0)},t.prototype.UpdatePosition=function(t,e){this.gl.uniform2f(this.CameraPosUniform,t,e)},t.prototype.MakeProgram=function(e){var s=this.CompileShader(e,t.defaultVertexShaderSrc,e.VERTEX_SHADER),i=this.CompileShader(e,t.defaultFragmentShaderSrc,e.FRAGMENT_SHADER),u=e.createProgram();return e.attachShader(u,s),e.attachShader(u,i),e.linkProgram(u),u},t.prototype.CompileShader=function(t,e,s){var i=t.createShader(s);return t.shaderSource(i,e),t.compileShader(i),t.getShaderParameter(i,t.COMPILE_STATUS)||alert(t.getShaderInfoLog(i)),i},t.prototype.updateMatrix=function(t){this.gl.uniformMatrix4fv(this.MatUniform,!1,t.all())},t.defaultVertexShaderSrc="\n\t\tattribute vec3 aVertexPosition;\n\t\tattribute vec2 aTexCoord;\n\t\tuniform mat4 uProjectionView;\n\t\tuniform vec2 uCameraPos;\n\t\tvarying vec2 vtexCoord;\n\t\tvoid main(void) {\n\t\t\tvtexCoord = aTexCoord;\n\t\t\tgl_Position = vec4(aVertexPosition.x - uCameraPos.x, aVertexPosition.y - uCameraPos.y, aVertexPosition.z, 1.0) * uProjectionView;\n\t\t}\n\t",t.defaultFragmentShaderSrc="\n\t\tprecision mediump float;\n\t\tuniform sampler2D sampler2d;\n\t\tvarying vec2 vtexCoord;\n\t\tvoid main(void) {\n\t\t\tgl_FragColor = texture2D(sampler2d, vec2(vtexCoord.s,vtexCoord.t));\n\t\t\tif(gl_FragColor.a < 0.5) discard;\n\t\t}\n\t",t}(),s=function(){function t(t){this.values=new Float32Array(4),void 0!==t&&(this.xyzw=t)}return Object.defineProperty(t.prototype,"x",{get:function(){return this.values[0]},set:function(t){this.values[0]=t},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"y",{get:function(){return this.values[1]},set:function(t){this.values[1]=t},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"z",{get:function(){return this.values[2]},set:function(t){this.values[2]=t},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"w",{get:function(){return this.values[3]},set:function(t){this.values[3]=t},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"xy",{get:function(){return[this.values[0],this.values[1]]},set:function(t){this.values[0]=t[0],this.values[1]=t[1]},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"xyz",{get:function(){return[this.values[0],this.values[1],this.values[2]]},set:function(t){this.values[0]=t[0],this.values[1]=t[1],this.values[2]=t[2]},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"xyzw",{get:function(){return[this.values[0],this.values[1],this.values[2],this.values[3]]},set:function(t){this.values[0]=t[0],this.values[1]=t[1],this.values[2]=t[2],this.values[3]=t[3]},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"r",{get:function(){return this.values[0]},set:function(t){this.values[0]=t},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"g",{get:function(){return this.values[1]},set:function(t){this.values[1]=t},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"b",{get:function(){return this.values[2]},set:function(t){this.values[2]=t},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"a",{get:function(){return this.values[3]},set:function(t){this.values[3]=t},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"rg",{get:function(){return[this.values[0],this.values[1]]},set:function(t){this.values[0]=t[0],this.values[1]=t[1]},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"rgb",{get:function(){return[this.values[0],this.values[1],this.values[2]]},set:function(t){this.values[0]=t[0],this.values[1]=t[1],this.values[2]=t[2]},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"rgba",{get:function(){return[this.values[0],this.values[1],this.values[2],this.values[3]]},set:function(t){this.values[0]=t[0],this.values[1]=t[1],this.values[2]=t[2],this.values[3]=t[3]},enumerable:!0,configurable:!0}),t.prototype.at=function(t){return this.values[t]},t.prototype.reset=function(){this.x=0,this.y=0,this.z=0,this.w=0},t.prototype.copy=function(e){return e||(e=new t),e.x=this.x,e.y=this.y,e.z=this.z,e.w=this.w,e},t.prototype.negate=function(t){return t||(t=this),t.x=-this.x,t.y=-this.y,t.z=-this.z,t.w=-this.w,t},t.prototype.equals=function(t,e){return void 0===e&&(e=1e-5),!(Math.abs(this.x-t.x)>e)&&(!(Math.abs(this.y-t.y)>e)&&(!(Math.abs(this.z-t.z)>e)&&!(Math.abs(this.w-t.w)>e)))},t.prototype.length=function(){return Math.sqrt(this.squaredLength())},t.prototype.squaredLength=function(){var t=this.x,e=this.y,s=this.z,i=this.w;return t*t+e*e+s*s+i*i},t.prototype.add=function(t){return this.x+=t.x,this.y+=t.y,this.z+=t.z,this.w+=t.w,this},t.prototype.subtract=function(t){return this.x-=t.x,this.y-=t.y,this.z-=t.z,this.w-=t.w,this},t.prototype.multiply=function(t){return this.x*=t.x,this.y*=t.y,this.z*=t.z,this.w*=t.w,this},t.prototype.divide=function(t){return this.x/=t.x,this.y/=t.y,this.z/=t.z,this.w/=t.w,this},t.prototype.scale=function(t,e){return e||(e=this),e.x*=t,e.y*=t,e.z*=t,e.w*=t,e},t.prototype.normalize=function(t){t||(t=this);var e=this.length();return 1===e?this:0===e?(t.x*=0,t.y*=0,t.z*=0,t.w*=0,t):(e=1/e,t.x*=e,t.y*=e,t.z*=e,t.w*=e,t)},t.prototype.multiplyMat4=function(t,e){return e||(e=this),t.multiplyVec4(this,e)},t.mix=function(e,s,i,u){return u||(u=new t),u.x=e.x+i*(s.x-e.x),u.y=e.y+i*(s.y-e.y),u.z=e.z+i*(s.z-e.z),u.w=e.w+i*(s.w-e.w),u},t.sum=function(e,s,i){return i||(i=new t),i.x=e.x+s.x,i.y=e.y+s.y,i.z=e.z+s.z,i.w=e.w+s.w,i},t.difference=function(e,s,i){return i||(i=new t),i.x=e.x-s.x,i.y=e.y-s.y,i.z=e.z-s.z,i.w=e.w-s.w,i},t.product=function(e,s,i){return i||(i=new t),i.x=e.x*s.x,i.y=e.y*s.y,i.z=e.z*s.z,i.w=e.w*s.w,i},t.quotient=function(e,s,i){return i||(i=new t),i.x=e.x/s.x,i.y=e.y/s.y,i.z=e.z/s.z,i.w=e.w/s.w,i},t.zero=new t([0,0,0,1]),t.one=new t([1,1,1,1]),t}(),i=function(){function t(t){this.values=new Float32Array(16),void 0!==t&&this.init(t)}return t.prototype.at=function(t){return this.values[t]},t.prototype.init=function(t){for(var e=0;e<16;e++)this.values[e]=t[e];return this},t.prototype.reset=function(){for(var t=0;t<16;t++)this.values[t]=0},t.prototype.copy=function(e){e||(e=new t);for(var s=0;s<16;s++)e.values[s]=this.values[s];return e},t.prototype.all=function(){for(var t=[],e=0;e<16;e++)t[e]=this.values[e];return t},t.prototype.row=function(t){return[this.values[4*t+0],this.values[4*t+1],this.values[4*t+2],this.values[4*t+3]]},t.prototype.col=function(t){return[this.values[t],this.values[t+4],this.values[t+8],this.values[t+12]]},t.prototype.equals=function(t,e){void 0===e&&(e=1e-5);for(var s=0;s<16;s++)if(Math.abs(this.values[s]-t.at(s))>e)return!1;return!0},t.prototype.determinant=function(){var t=this.values[0],e=this.values[1],s=this.values[2],i=this.values[3],u=this.values[4],r=this.values[5],a=this.values[6],h=this.values[7],n=this.values[8],o=this.values[9],l=this.values[10],v=this.values[11],y=this.values[12],p=this.values[13],c=this.values[14],f=this.values[15];return(t*r-e*u)*(l*f-v*c)-(t*a-s*u)*(o*f-v*p)+(t*h-i*u)*(o*c-l*p)+(e*a-s*r)*(n*f-v*y)-(e*h-i*r)*(n*c-l*y)+(s*h-i*a)*(n*p-o*y)},t.prototype.setIdentity=function(){return this.values[0]=1,this.values[1]=0,this.values[2]=0,this.values[3]=0,this.values[4]=0,this.values[5]=1,this.values[6]=0,this.values[7]=0,this.values[8]=0,this.values[9]=0,this.values[10]=1,this.values[11]=0,this.values[12]=0,this.values[13]=0,this.values[14]=0,this.values[15]=1,this},t.prototype.transpose=function(){var t=this.values[1],e=this.values[2],s=this.values[3],i=this.values[6],u=this.values[7],r=this.values[11];return this.values[1]=this.values[4],this.values[2]=this.values[8],this.values[3]=this.values[12],this.values[4]=t,this.values[6]=this.values[9],this.values[7]=this.values[13],this.values[8]=e,this.values[9]=i,this.values[11]=this.values[14],this.values[12]=s,this.values[13]=u,this.values[14]=r,this},t.prototype.inverse=function(){var t=this.values[0],e=this.values[1],s=this.values[2],i=this.values[3],u=this.values[4],r=this.values[5],a=this.values[6],h=this.values[7],n=this.values[8],o=this.values[9],l=this.values[10],v=this.values[11],y=this.values[12],p=this.values[13],c=this.values[14],f=this.values[15],x=t*r-e*u,g=t*a-s*u,d=t*h-i*u,w=e*a-s*r,z=e*h-i*r,b=s*h-i*a,m=n*p-o*y,T=n*c-l*y,P=n*f-v*y,M=o*c-l*p,E=o*f-v*p,S=l*f-v*c,A=x*S-g*E+d*M+w*P-z*T+b*m;return A?(A=1/A,this.values[0]=(r*S-a*E+h*M)*A,this.values[1]=(-e*S+s*E-i*M)*A,this.values[2]=(p*b-c*z+f*w)*A,this.values[3]=(-o*b+l*z-v*w)*A,this.values[4]=(-u*S+a*P-h*T)*A,this.values[5]=(t*S-s*P+i*T)*A,this.values[6]=(-y*b+c*d-f*g)*A,this.values[7]=(n*b-l*d+v*g)*A,this.values[8]=(u*E-r*P+h*m)*A,this.values[9]=(-t*E+e*P-i*m)*A,this.values[10]=(y*z-p*d+f*x)*A,this.values[11]=(-n*z+o*d-v*x)*A,this.values[12]=(-u*M+r*T-a*m)*A,this.values[13]=(t*M-e*T+s*m)*A,this.values[14]=(-y*w+p*g-c*x)*A,this.values[15]=(n*w-o*g+l*x)*A,this):null},t.prototype.multiply=function(t){var e=this.values[0],s=this.values[1],i=this.values[2],u=this.values[3],r=this.values[4],a=this.values[5],h=this.values[6],n=this.values[7],o=this.values[8],l=this.values[9],v=this.values[10],y=this.values[11],p=this.values[12],c=this.values[13],f=this.values[14],x=this.values[15],g=t.at(0),d=t.at(1),w=t.at(2),z=t.at(3);return this.values[0]=g*e+d*r+w*o+z*p,this.values[1]=g*s+d*a+w*l+z*c,this.values[2]=g*i+d*h+w*v+z*f,this.values[3]=g*u+d*n+w*y+z*x,g=t.at(4),d=t.at(5),w=t.at(6),z=t.at(7),this.values[4]=g*e+d*r+w*o+z*p,this.values[5]=g*s+d*a+w*l+z*c,this.values[6]=g*i+d*h+w*v+z*f,this.values[7]=g*u+d*n+w*y+z*x,g=t.at(8),d=t.at(9),w=t.at(10),z=t.at(11),this.values[8]=g*e+d*r+w*o+z*p,this.values[9]=g*s+d*a+w*l+z*c,this.values[10]=g*i+d*h+w*v+z*f,this.values[11]=g*u+d*n+w*y+z*x,g=t.at(12),d=t.at(13),w=t.at(14),z=t.at(15),this.values[12]=g*e+d*r+w*o+z*p,this.values[13]=g*s+d*a+w*l+z*c,this.values[14]=g*i+d*h+w*v+z*f,this.values[15]=g*u+d*n+w*y+z*x,this},t.prototype.multiplyVec3=function(t){var e=t.x,s=t.y,i=t.z;return new a([this.values[0]*e+this.values[4]*s+this.values[8]*i+this.values[12],this.values[1]*e+this.values[5]*s+this.values[9]*i+this.values[13],this.values[2]*e+this.values[6]*s+this.values[10]*i+this.values[14]])},t.prototype.multiplyVec4=function(t,e){e||(e=new s);var i=t.x,u=t.y,r=t.z,a=t.w;return e.x=this.values[0]*i+this.values[4]*u+this.values[8]*r+this.values[12]*a,e.y=this.values[1]*i+this.values[5]*u+this.values[9]*r+this.values[13]*a,e.z=this.values[2]*i+this.values[6]*u+this.values[10]*r+this.values[14]*a,e.w=this.values[3]*i+this.values[7]*u+this.values[11]*r+this.values[15]*a,e},t.prototype.toMat3=function(){return new u([this.values[0],this.values[1],this.values[2],this.values[4],this.values[5],this.values[6],this.values[8],this.values[9],this.values[10]])},t.prototype.toInverseMat3=function(){var t=this.values[0],e=this.values[1],s=this.values[2],i=this.values[4],r=this.values[5],a=this.values[6],h=this.values[8],n=this.values[9],o=this.values[10],l=o*r-a*n,v=-o*i+a*h,y=n*i-r*h,p=t*l+e*v+s*y;return p?new u([l*(p=1/p),(-o*e+s*n)*p,(a*e-s*r)*p,v*p,(o*t-s*h)*p,(-a*t+s*i)*p,y*p,(-n*t+e*h)*p,(r*t-e*i)*p]):null},t.prototype.translate=function(t){var e=t.x,s=t.y,i=t.z;return this.values[12]+=this.values[0]*e+this.values[4]*s+this.values[8]*i,this.values[13]+=this.values[1]*e+this.values[5]*s+this.values[9]*i,this.values[14]+=this.values[2]*e+this.values[6]*s+this.values[10]*i,this.values[15]+=this.values[3]*e+this.values[7]*s+this.values[11]*i,this},t.prototype.scale=function(t){var e=t.x,s=t.y,i=t.z;return this.values[0]*=e,this.values[1]*=e,this.values[2]*=e,this.values[3]*=e,this.values[4]*=s,this.values[5]*=s,this.values[6]*=s,this.values[7]*=s,this.values[8]*=i,this.values[9]*=i,this.values[10]*=i,this.values[11]*=i,this},t.prototype.rotate=function(t,e){var s=e.x,i=e.y,u=e.z,r=Math.sqrt(s*s+i*i+u*u);if(!r)return null;1!==r&&(s*=r=1/r,i*=r,u*=r);var a=Math.sin(t),h=Math.cos(t),n=1-h,o=this.values[0],l=this.values[1],v=this.values[2],y=this.values[3],p=this.values[4],c=this.values[5],f=this.values[6],x=this.values[7],g=this.values[8],d=this.values[9],w=this.values[10],z=this.values[11],b=s*s*n+h,m=i*s*n+u*a,T=u*s*n-i*a,P=s*i*n-u*a,M=i*i*n+h,E=u*i*n+s*a,S=s*u*n+i*a,A=i*u*n-s*a,R=u*u*n+h;return this.values[0]=o*b+p*m+g*T,this.values[1]=l*b+c*m+d*T,this.values[2]=v*b+f*m+w*T,this.values[3]=y*b+x*m+z*T,this.values[4]=o*P+p*M+g*E,this.values[5]=l*P+c*M+d*E,this.values[6]=v*P+f*M+w*E,this.values[7]=y*P+x*M+z*E,this.values[8]=o*S+p*A+g*R,this.values[9]=l*S+c*A+d*R,this.values[10]=v*S+f*A+w*R,this.values[11]=y*S+x*A+z*R,this},t.frustum=function(e,s,i,u,r,a){var h=s-e,n=u-i,o=a-r;return new t([2*r/h,0,0,0,0,2*r/n,0,0,(s+e)/h,(u+i)/n,-(a+r)/o,-1,0,0,-a*r*2/o,0])},t.perspective=function(e,s,i,u){var r=i*Math.tan(e*Math.PI/360),a=r*s;return t.frustum(-a,a,-r,r,i,u)},t.orthographic=function(e,s,i,u,r,a){var h=s-e,n=u-i,o=a-r;return new t([2/h,0,0,0,0,2/n,0,0,0,0,-2/o,0,-(e+s)/h,-(u+i)/n,-(a+r)/o,1])},t.lookAt=function(e,s,i){if(void 0===i&&(i=a.up),e.equals(s))return this.identity;var u=a.difference(e,s).normalize(),r=a.cross(i,u).normalize(),h=a.cross(u,r).normalize();return new t([r.x,h.x,u.x,0,r.y,h.y,u.y,0,r.z,h.z,u.z,0,-a.dot(r,e),-a.dot(h,e),-a.dot(u,e),1])},t.product=function(e,s,i){var u=e.at(0),r=e.at(1),a=e.at(2),h=e.at(3),n=e.at(4),o=e.at(5),l=e.at(6),v=e.at(7),y=e.at(8),p=e.at(9),c=e.at(10),f=e.at(11),x=e.at(12),g=e.at(13),d=e.at(14),w=e.at(15),z=s.at(0),b=s.at(1),m=s.at(2),T=s.at(3),P=s.at(4),M=s.at(5),E=s.at(6),S=s.at(7),A=s.at(8),R=s.at(9),L=s.at(10),V=s.at(11),U=s.at(12),_=s.at(13),D=s.at(14),F=s.at(15);return i?(i.init([z*u+b*n+m*y+T*x,z*r+b*o+m*p+T*g,z*a+b*l+m*c+T*d,z*h+b*v+m*f+T*w,P*u+M*n+E*y+S*x,P*r+M*o+E*p+S*g,P*a+M*l+E*c+S*d,P*h+M*v+E*f+S*w,A*u+R*n+L*y+V*x,A*r+R*o+L*p+V*g,A*a+R*l+L*c+V*d,A*h+R*v+L*f+V*w,U*u+_*n+D*y+F*x,U*r+_*o+D*p+F*g,U*a+_*l+D*c+F*d,U*h+_*v+D*f+F*w]),i):new t([z*u+b*n+m*y+T*x,z*r+b*o+m*p+T*g,z*a+b*l+m*c+T*d,z*h+b*v+m*f+T*w,P*u+M*n+E*y+S*x,P*r+M*o+E*p+S*g,P*a+M*l+E*c+S*d,P*h+M*v+E*f+S*w,A*u+R*n+L*y+V*x,A*r+R*o+L*p+V*g,A*a+R*l+L*c+V*d,A*h+R*v+L*f+V*w,U*u+_*n+D*y+F*x,U*r+_*o+D*p+F*g,U*a+_*l+D*c+F*d,U*h+_*v+D*f+F*w])},t.identity=(new t).setIdentity(),t}(),u=function(){function t(t){this.values=new Float32Array(9),void 0!==t&&this.init(t)}return t.prototype.at=function(t){return this.values[t]},t.prototype.init=function(t){for(var e=0;e<9;e++)this.values[e]=t[e];return this},t.prototype.reset=function(){for(var t=0;t<9;t++)this.values[t]=0},t.prototype.copy=function(e){e||(e=new t);for(var s=0;s<9;s++)e.values[s]=this.values[s];return e},t.prototype.all=function(){for(var t=[],e=0;e<9;e++)t[e]=this.values[e];return t},t.prototype.row=function(t){return[this.values[3*t+0],this.values[3*t+1],this.values[3*t+2]]},t.prototype.col=function(t){return[this.values[t],this.values[t+3],this.values[t+6]]},t.prototype.equals=function(t,e){void 0===e&&(e=1e-5);for(var s=0;s<9;s++)if(Math.abs(this.values[s]-t.at(s))>e)return!1;return!0},t.prototype.determinant=function(){var t=this.values[0],e=this.values[1],s=this.values[2],i=this.values[3],u=this.values[4],r=this.values[5],a=this.values[6],h=this.values[7],n=this.values[8];return t*(n*u-r*h)+e*(-n*i+r*a)+s*(h*i-u*a)},t.prototype.setIdentity=function(){return this.values[0]=1,this.values[1]=0,this.values[2]=0,this.values[3]=0,this.values[4]=1,this.values[5]=0,this.values[6]=0,this.values[7]=0,this.values[8]=1,this},t.prototype.transpose=function(){var t=this.values[1],e=this.values[2],s=this.values[5];return this.values[1]=this.values[3],this.values[2]=this.values[6],this.values[3]=t,this.values[5]=this.values[7],this.values[6]=e,this.values[7]=s,this},t.prototype.inverse=function(){var t=this.values[0],e=this.values[1],s=this.values[2],i=this.values[3],u=this.values[4],r=this.values[5],a=this.values[6],h=this.values[7],n=this.values[8],o=n*u-r*h,l=-n*i+r*a,v=h*i-u*a,y=t*o+e*l+s*v;return y?(y=1/y,this.values[0]=o*y,this.values[1]=(-n*e+s*h)*y,this.values[2]=(r*e-s*u)*y,this.values[3]=l*y,this.values[4]=(n*t-s*a)*y,this.values[5]=(-r*t+s*i)*y,this.values[6]=v*y,this.values[7]=(-h*t+e*a)*y,this.values[8]=(u*t-e*i)*y,this):null},t.prototype.multiply=function(t){var e=this.values[0],s=this.values[1],i=this.values[2],u=this.values[3],r=this.values[4],a=this.values[5],h=this.values[6],n=this.values[7],o=this.values[8],l=t.at(0),v=t.at(1),y=t.at(2),p=t.at(3),c=t.at(4),f=t.at(5),x=t.at(6),g=t.at(7),d=t.at(8);return this.values[0]=l*e+v*u+y*h,this.values[1]=l*s+v*r+y*n,this.values[2]=l*i+v*a+y*o,this.values[3]=p*e+c*u+f*h,this.values[4]=p*s+c*r+f*n,this.values[5]=p*i+c*a+f*o,this.values[6]=x*e+g*u+d*h,this.values[7]=x*s+g*r+d*n,this.values[8]=x*i+g*a+d*o,this},t.prototype.multiplyVec2=function(t,e){var s=t.x,i=t.y;return e?(e.xy=[s*this.values[0]+i*this.values[3]+this.values[6],s*this.values[1]+i*this.values[4]+this.values[7]],e):new h([s*this.values[0]+i*this.values[3]+this.values[6],s*this.values[1]+i*this.values[4]+this.values[7]])},t.prototype.multiplyVec3=function(t,e){var s=t.x,i=t.y,u=t.z;return e?(e.xyz=[s*this.values[0]+i*this.values[3]+u*this.values[6],s*this.values[1]+i*this.values[4]+u*this.values[7],s*this.values[2]+i*this.values[5]+u*this.values[8]],e):new a([s*this.values[0]+i*this.values[3]+u*this.values[6],s*this.values[1]+i*this.values[4]+u*this.values[7],s*this.values[2]+i*this.values[5]+u*this.values[8]])},t.prototype.toMat4=function(t){return t?(t.init([this.values[0],this.values[1],this.values[2],0,this.values[3],this.values[4],this.values[5],0,this.values[6],this.values[7],this.values[8],0,0,0,0,1]),t):new i([this.values[0],this.values[1],this.values[2],0,this.values[3],this.values[4],this.values[5],0,this.values[6],this.values[7],this.values[8],0,0,0,0,1])},t.prototype.toQuat=function(){var t=this.values[0],e=this.values[1],s=this.values[2],i=this.values[3],u=this.values[4],a=this.values[5],h=this.values[6],n=this.values[7],o=this.values[8],l=t-u-o,v=u-t-o,y=o-t-u,p=0,c=t+u+o;l>c&&(c=l,p=1),v>c&&(c=v,p=2),y>c&&(c=y,p=3);var f=.5*Math.sqrt(c+1),x=.25/f,g=new r;switch(p){case 0:g.w=f,g.x=(a-n)*x,g.y=(h-s)*x,g.z=(e-i)*x;break;case 1:g.w=(a-n)*x,g.x=f,g.y=(e+i)*x,g.z=(h+s)*x;break;case 2:g.w=(h-s)*x,g.x=(e+i)*x,g.y=f,g.z=(a+n)*x;break;case 3:g.w=(e-i)*x,g.x=(h+s)*x,g.y=(a+n)*x,g.z=f}return g},t.prototype.rotate=function(t,e){var s=e.x,i=e.y,u=e.z,r=Math.sqrt(s*s+i*i+u*u);if(!r)return null;1!==r&&(s*=r=1/r,i*=r,u*=r);var a=Math.sin(t),h=Math.cos(t),n=1-h,o=this.values[0],l=this.values[1],v=this.values[2],y=this.values[4],p=this.values[5],c=this.values[6],f=this.values[8],x=this.values[9],g=this.values[10],d=s*s*n+h,w=i*s*n+u*a,z=u*s*n-i*a,b=s*i*n-u*a,m=i*i*n+h,T=u*i*n+s*a,P=s*u*n+i*a,M=i*u*n-s*a,E=u*u*n+h;return this.values[0]=o*d+y*w+f*z,this.values[1]=l*d+p*w+x*z,this.values[2]=v*d+c*w+g*z,this.values[3]=o*b+y*m+f*T,this.values[4]=l*b+p*m+x*T,this.values[5]=v*b+c*m+g*T,this.values[6]=o*P+y*M+f*E,this.values[7]=l*P+p*M+x*E,this.values[8]=v*P+c*M+g*E,this},t.product=function(e,s,i){var u=e.at(0),r=e.at(1),a=e.at(2),h=e.at(3),n=e.at(4),o=e.at(5),l=e.at(6),v=e.at(7),y=e.at(8),p=s.at(0),c=s.at(1),f=s.at(2),x=s.at(3),g=s.at(4),d=s.at(5),w=s.at(6),z=s.at(7),b=s.at(8);return i?(i.init([p*u+c*h+f*l,p*r+c*n+f*v,p*a+c*o+f*y,x*u+g*h+d*l,x*r+g*n+d*v,x*a+g*o+d*y,w*u+z*h+b*l,w*r+z*n+b*v,w*a+z*o+b*y]),i):new t([p*u+c*h+f*l,p*r+c*n+f*v,p*a+c*o+f*y,x*u+g*h+d*l,x*r+g*n+d*v,x*a+g*o+d*y,w*u+z*h+b*l,w*r+z*n+b*v,w*a+z*o+b*y])},t.identity=(new t).setIdentity(),t}(),r=function(){function t(t){this.values=new Float32Array(4),void 0!==t&&(this.xyzw=t)}return Object.defineProperty(t.prototype,"x",{get:function(){return this.values[0]},set:function(t){this.values[0]=t},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"y",{get:function(){return this.values[1]},set:function(t){this.values[1]=t},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"z",{get:function(){return this.values[2]},set:function(t){this.values[2]=t},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"w",{get:function(){return this.values[3]},set:function(t){this.values[3]=t},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"xy",{get:function(){return[this.values[0],this.values[1]]},set:function(t){this.values[0]=t[0],this.values[1]=t[1]},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"xyz",{get:function(){return[this.values[0],this.values[1],this.values[2]]},set:function(t){this.values[0]=t[0],this.values[1]=t[1],this.values[2]=t[2]},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"xyzw",{get:function(){return[this.values[0],this.values[1],this.values[2],this.values[3]]},set:function(t){this.values[0]=t[0],this.values[1]=t[1],this.values[2]=t[2],this.values[3]=t[3]},enumerable:!0,configurable:!0}),t.prototype.at=function(t){return this.values[t]},t.prototype.reset=function(){for(var t=0;t<4;t++)this.values[t]=0},t.prototype.copy=function(e){e||(e=new t);for(var s=0;s<4;s++)e.values[s]=this.values[s];return e},t.prototype.roll=function(){var t=this.x,e=this.y,s=this.z,i=this.w;return Math.atan2(2*(t*e+i*s),i*i+t*t-e*e-s*s)},t.prototype.pitch=function(){var t=this.x,e=this.y,s=this.z,i=this.w;return Math.atan2(2*(e*s+i*t),i*i-t*t-e*e+s*s)},t.prototype.yaw=function(){return Math.asin(2*(this.x*this.z-this.w*this.y))},t.prototype.equals=function(t,e){void 0===e&&(e=1e-5);for(var s=0;s<4;s++)if(Math.abs(this.values[s]-t.at(s))>e)return!1;return!0},t.prototype.setIdentity=function(){return this.x=0,this.y=0,this.z=0,this.w=1,this},t.prototype.calculateW=function(){var t=this.x,e=this.y,s=this.z;return this.w=-Math.sqrt(Math.abs(1-t*t-e*e-s*s)),this},t.prototype.inverse=function(){var e=t.dot(this,this);if(!e)return this.xyzw=[0,0,0,0],this;var s=e?1/e:0;return this.x*=-s,this.y*=-s,this.z*=-s,this.w*=s,this},t.prototype.conjugate=function(){return this.values[0]*=-1,this.values[1]*=-1,this.values[2]*=-1,this},t.prototype.length=function(){var t=this.x,e=this.y,s=this.z,i=this.w;return Math.sqrt(t*t+e*e+s*s+i*i)},t.prototype.normalize=function(t){t||(t=this);var e=this.x,s=this.y,i=this.z,u=this.w,r=Math.sqrt(e*e+s*s+i*i+u*u);return r?(r=1/r,t.x=e*r,t.y=s*r,t.z=i*r,t.w=u*r,t):(t.x=0,t.y=0,t.z=0,t.w=0,t)},t.prototype.add=function(t){for(var e=0;e<4;e++)this.values[e]+=t.at(e);return this},t.prototype.multiply=function(t){var e=this.values[0],s=this.values[1],i=this.values[2],u=this.values[3],r=t.x,a=t.y,h=t.z,n=t.w;return this.x=e*n+u*r+s*h-i*a,this.y=s*n+u*a+i*r-e*h,this.z=i*n+u*h+e*a-s*r,this.w=u*n-e*r-s*a-i*h,this},t.prototype.multiplyVec3=function(t,e){e||(e=new a);var s=t.x,i=t.y,u=t.z,r=this.x,h=this.y,n=this.z,o=this.w,l=o*s+h*u-n*i,v=o*i+n*s-r*u,y=o*u+r*i-h*s,p=-r*s-h*i-n*u;return e.x=l*o+p*-r+v*-n-y*-h,e.y=v*o+p*-h+y*-r-l*-n,e.z=y*o+p*-n+l*-h-v*-r,e},t.prototype.toMat3=function(t){t||(t=new u);var e=this.x,s=this.y,i=this.z,r=this.w,a=e+e,h=s+s,n=i+i,o=e*a,l=e*h,v=e*n,y=s*h,p=s*n,c=i*n,f=r*a,x=r*h,g=r*n;return t.init([1-(y+c),l+g,v-x,l-g,1-(o+c),p+f,v+x,p-f,1-(o+y)]),t},t.prototype.toMat4=function(t){t||(t=new i);var e=this.x,s=this.y,u=this.z,r=this.w,a=e+e,h=s+s,n=u+u,o=e*a,l=e*h,v=e*n,y=s*h,p=s*n,c=u*n,f=r*a,x=r*h,g=r*n;return t.init([1-(y+c),l+g,v-x,0,l-g,1-(o+c),p+f,0,v+x,p-f,1-(o+y),0,0,0,0,1]),t},t.dot=function(t,e){return t.x*e.x+t.y*e.y+t.z*e.z+t.w*e.w},t.sum=function(e,s,i){return i||(i=new t),i.x=e.x+s.x,i.y=e.y+s.y,i.z=e.z+s.z,i.w=e.w+s.w,i},t.product=function(e,s,i){i||(i=new t);var u=e.x,r=e.y,a=e.z,h=e.w,n=s.x,o=s.y,l=s.z,v=s.w;return i.x=u*v+h*n+r*l-a*o,i.y=r*v+h*o+a*n-u*l,i.z=a*v+h*l+u*o-r*n,i.w=h*v-u*n-r*o-a*l,i},t.cross=function(e,s,i){i||(i=new t);var u=e.x,r=e.y,a=e.z,h=e.w,n=s.x,o=s.y,l=s.z,v=s.w;return i.x=h*l+a*v+u*o-r*n,i.y=h*v-u*n-r*o-a*l,i.z=h*n+u*v+r*l-a*o,i.w=h*o+r*v+a*n-u*l,i},t.shortMix=function(e,s,i,u){if(u||(u=new t),i<=0)return u.xyzw=e.xyzw,u;if(i>=1)return u.xyzw=s.xyzw,u;var r,a,h=t.dot(e,s),n=s.copy();if(h<0&&(n.inverse(),h=-h),h>.9999)r=1-i,a=0+i;else{var o=Math.sqrt(1-h*h),l=Math.atan2(o,h),v=1/o;r=Math.sin((1-i)*l)*v,a=Math.sin((0+i)*l)*v}return u.x=r*e.x+a*n.x,u.y=r*e.y+a*n.y,u.z=r*e.z+a*n.z,u.w=r*e.w+a*n.w,u},t.mix=function(e,s,i,u){u||(u=new t);var r=e.x*s.x+e.y*s.y+e.z*s.z+e.w*s.w;if(Math.abs(r)>=1)return u.xyzw=e.xyzw,u;var a=Math.acos(r),h=Math.sqrt(1-r*r);if(Math.abs(h)<.001)return u.x=.5*e.x+.5*s.x,u.y=.5*e.y+.5*s.y,u.z=.5*e.z+.5*s.z,u.w=.5*e.w+.5*s.w,u;var n=Math.sin((1-i)*a)/h,o=Math.sin(i*a)/h;return u.x=e.x*n+s.x*o,u.y=e.y*n+s.y*o,u.z=e.z*n+s.z*o,u.w=e.w*n+s.w*o,u},t.fromAxisAngle=function(e,s,i){i||(i=new t),s*=.5;var u=Math.sin(s);return i.x=e.x*u,i.y=e.y*u,i.z=e.z*u,i.w=Math.cos(s),i},t.identity=(new t).setIdentity(),t}(),a=function(){function t(t){this.values=new Float32Array(3),void 0!==t&&(this.xyz=t)}return Object.defineProperty(t.prototype,"x",{get:function(){return this.values[0]},set:function(t){this.values[0]=t},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"y",{get:function(){return this.values[1]},set:function(t){this.values[1]=t},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"z",{get:function(){return this.values[2]},set:function(t){this.values[2]=t},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"xy",{get:function(){return[this.values[0],this.values[1]]},set:function(t){this.values[0]=t[0],this.values[1]=t[1]},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"xyz",{get:function(){return[this.values[0],this.values[1],this.values[2]]},set:function(t){this.values[0]=t[0],this.values[1]=t[1],this.values[2]=t[2]},enumerable:!0,configurable:!0}),t.prototype.at=function(t){return this.values[t]},t.prototype.reset=function(){this.x=0,this.y=0,this.z=0},t.prototype.copy=function(e){return e||(e=new t),e.x=this.x,e.y=this.y,e.z=this.z,e},t.prototype.negate=function(t){return t||(t=this),t.x=-this.x,t.y=-this.y,t.z=-this.z,t},t.prototype.equals=function(t,e){return void 0===e&&(e=1e-5),!(Math.abs(this.x-t.x)>e)&&(!(Math.abs(this.y-t.y)>e)&&!(Math.abs(this.z-t.z)>e))},t.prototype.length=function(){return Math.sqrt(this.squaredLength())},t.prototype.squaredLength=function(){var t=this.x,e=this.y,s=this.z;return t*t+e*e+s*s},t.prototype.add=function(t){return this.x+=t.x,this.y+=t.y,this.z+=t.z,this},t.prototype.subtract=function(t){return this.x-=t.x,this.y-=t.y,this.z-=t.z,this},t.prototype.multiply=function(t){return this.x*=t.x,this.y*=t.y,this.z*=t.z,this},t.prototype.divide=function(t){return this.x/=t.x,this.y/=t.y,this.z/=t.z,this},t.prototype.scale=function(t,e){return e||(e=this),e.x*=t,e.y*=t,e.z*=t,e},t.prototype.normalize=function(t){t||(t=this);var e=this.length();return 1===e?this:0===e?(t.x=0,t.y=0,t.z=0,t):(e=1/e,t.x*=e,t.y*=e,t.z*=e,t)},t.prototype.multiplyByMat3=function(t,e){return e||(e=this),t.multiplyVec3(this,e)},t.prototype.multiplyByQuat=function(t,e){return e||(e=this),t.multiplyVec3(this,e)},t.prototype.toQuat=function(e){e||(e=new r);var s=new t,i=new t;return s.x=Math.cos(.5*this.x),i.x=Math.sin(.5*this.x),s.y=Math.cos(.5*this.y),i.y=Math.sin(.5*this.y),s.z=Math.cos(.5*this.z),i.z=Math.sin(.5*this.z),e.x=i.x*s.y*s.z-s.x*i.y*i.z,e.y=s.x*i.y*s.z+i.x*s.y*i.z,e.z=s.x*s.y*i.z-i.x*i.y*s.z,e.w=s.x*s.y*s.z+i.x*i.y*i.z,e},t.cross=function(e,s,i){i||(i=new t);var u=e.x,r=e.y,a=e.z,h=s.x,n=s.y,o=s.z;return i.x=r*o-a*n,i.y=a*h-u*o,i.z=u*n-r*h,i},t.dot=function(t,e){var s=t.x,i=t.y,u=t.z;return s*e.x+i*e.y+u*e.z},t.distance=function(t,e){e.x,t.x,e.y,t.y,e.z,t.z;return Math.sqrt(this.squaredDistance(t,e))},t.squaredDistance=function(t,e){var s=e.x-t.x,i=e.y-t.y,u=e.z-t.z;return s*s+i*i+u*u},t.direction=function(e,s,i){i||(i=new t);var u=e.x-s.x,r=e.y-s.y,a=e.z-s.z,h=Math.sqrt(u*u+r*r+a*a);return 0===h?(i.x=0,i.y=0,i.z=0,i):(h=1/h,i.x=u*h,i.y=r*h,i.z=a*h,i)},t.mix=function(e,s,i,u){return u||(u=new t),u.x=e.x+i*(s.x-e.x),u.y=e.y+i*(s.y-e.y),u.z=e.z+i*(s.z-e.z),u},t.sum=function(e,s,i){return i||(i=new t),i.x=e.x+s.x,i.y=e.y+s.y,i.z=e.z+s.z,i},t.difference=function(e,s,i){return i||(i=new t),i.x=e.x-s.x,i.y=e.y-s.y,i.z=e.z-s.z,i},t.product=function(e,s,i){return i||(i=new t),i.x=e.x*s.x,i.y=e.y*s.y,i.z=e.z*s.z,i},t.quotient=function(e,s,i){return i||(i=new t),i.x=e.x/s.x,i.y=e.y/s.y,i.z=e.z/s.z,i},t.zero=new t([0,0,0]),t.one=new t([1,1,1]),t.up=new t([0,1,0]),t.right=new t([1,0,0]),t.forward=new t([0,0,1]),t}(),h=function(){function t(t){this.values=new Float32Array(2),void 0!==t&&(this.xy=t)}return Object.defineProperty(t.prototype,"x",{get:function(){return this.values[0]},set:function(t){this.values[0]=t},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"y",{get:function(){return this.values[1]},set:function(t){this.values[1]=t},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"xy",{get:function(){return[this.values[0],this.values[1]]},set:function(t){this.values[0]=t[0],this.values[1]=t[1]},enumerable:!0,configurable:!0}),t.prototype.at=function(t){return this.values[t]},t.prototype.reset=function(){this.x=0,this.y=0},t.prototype.copy=function(e){return e||(e=new t),e.x=this.x,e.y=this.y,e},t.prototype.negate=function(t){return t||(t=this),t.x=-this.x,t.y=-this.y,t},t.prototype.equals=function(t,e){return void 0===e&&(e=1e-5),!(Math.abs(this.x-t.x)>e)&&!(Math.abs(this.y-t.y)>e)},t.prototype.length=function(){return Math.sqrt(this.squaredLength())},t.prototype.squaredLength=function(){var t=this.x,e=this.y;return t*t+e*e},t.prototype.add=function(t){return this.x+=t.x,this.y+=t.y,this},t.prototype.subtract=function(t){return this.x-=t.x,this.y-=t.y,this},t.prototype.multiply=function(t){return this.x*=t.x,this.y*=t.y,this},t.prototype.divide=function(t){return this.x/=t.x,this.y/=t.y,this},t.prototype.scale=function(t,e){return e||(e=this),e.x*=t,e.y*=t,e},t.prototype.normalize=function(t){t||(t=this);var e=this.length();return 1===e?this:0===e?(t.x=0,t.y=0,t):(e=1/e,t.x*=e,t.y*=e,t)},t.prototype.multiplyMat2=function(t,e){return e||(e=this),t.multiplyVec2(this,e)},t.prototype.multiplyMat3=function(t,e){return e||(e=this),t.multiplyVec2(this,e)},t.cross=function(t,e,s){s||(s=new a);var i=t.x,u=t.y,r=e.x,h=i*e.y-u*r;return s.x=0,s.y=0,s.z=h,s},t.dot=function(t,e){return t.x*e.x+t.y*e.y},t.distance=function(t,e){return Math.sqrt(this.squaredDistance(t,e))},t.squaredDistance=function(t,e){var s=e.x-t.x,i=e.y-t.y;return s*s+i*i},t.direction=function(e,s,i){i||(i=new t);var u=e.x-s.x,r=e.y-s.y,a=Math.sqrt(u*u+r*r);return 0===a?(i.x=0,i.y=0,i):(a=1/a,i.x=u*a,i.y=r*a,i)},t.mix=function(e,s,i,u){u||(u=new t);var r=e.x,a=e.y,h=s.x,n=s.y;return u.x=r+i*(h-r),u.y=a+i*(n-a),u},t.sum=function(e,s,i){return i||(i=new t),i.x=e.x+s.x,i.y=e.y+s.y,i},t.difference=function(e,s,i){return i||(i=new t),i.x=e.x-s.x,i.y=e.y-s.y,i},t.product=function(e,s,i){return i||(i=new t),i.x=e.x*s.x,i.y=e.y*s.y,i},t.quotient=function(e,s,i){return i||(i=new t),i.x=e.x/s.x,i.y=e.y/s.y,i},t.zero=new t([0,0]),t.one=new t([1,1]),t}(),n=(function(){function t(t){this.values=new Float32Array(4),void 0!==t&&this.init(t)}t.prototype.at=function(t){return this.values[t]},t.prototype.init=function(t){for(var e=0;e<4;e++)this.values[e]=t[e];return this},t.prototype.reset=function(){for(var t=0;t<4;t++)this.values[t]=0},t.prototype.copy=function(e){e||(e=new t);for(var s=0;s<4;s++)e.values[s]=this.values[s];return e},t.prototype.all=function(){for(var t=[],e=0;e<4;e++)t[e]=this.values[e];return t},t.prototype.row=function(t){return[this.values[2*t+0],this.values[2*t+1]]},t.prototype.col=function(t){return[this.values[t],this.values[t+2]]},t.prototype.equals=function(t,e){void 0===e&&(e=1e-5);for(var s=0;s<4;s++)if(Math.abs(this.values[s]-t.at(s))>e)return!1;return!0},t.prototype.determinant=function(){return this.values[0]*this.values[3]-this.values[2]*this.values[1]},t.prototype.setIdentity=function(){return this.values[0]=1,this.values[1]=0,this.values[2]=0,this.values[3]=1,this},t.prototype.transpose=function(){var t=this.values[1];return this.values[1]=this.values[2],this.values[2]=t,this},t.prototype.inverse=function(){var t=this.determinant();if(!t)return null;t=1/t;var e=this.values[0];return this.values[0]=t*this.values[3],this.values[1]=t*-this.values[1],this.values[2]=t*-this.values[2],this.values[3]=t*e,this},t.prototype.multiply=function(t){var e=this.values[0],s=this.values[1],i=this.values[2],u=this.values[3];return this.values[0]=e*t.at(0)+s*t.at(2),this.values[1]=e*t.at(1)+s*t.at(3),this.values[2]=i*t.at(0)+u*t.at(2),this.values[3]=i*t.at(1)+u*t.at(3),this},t.prototype.rotate=function(t){var e=this.values[0],s=this.values[1],i=this.values[2],u=this.values[3],r=Math.sin(t),a=Math.cos(t);return this.values[0]=e*a+s*r,this.values[1]=e*-r+s*a,this.values[2]=i*a+u*r,this.values[3]=i*-r+u*a,this},t.prototype.multiplyVec2=function(t,e){var s=t.x,i=t.y;return e?(e.xy=[s*this.values[0]+i*this.values[1],s*this.values[2]+i*this.values[3]],e):new h([s*this.values[0]+i*this.values[1],s*this.values[2]+i*this.values[3]])},t.prototype.scale=function(t){var e=this.values[0],s=this.values[1],i=this.values[2],u=this.values[3],r=t.x,a=t.y;return this.values[0]=e*r,this.values[1]=s*a,this.values[2]=i*r,this.values[3]=u*a,this},t.product=function(e,s,i){var u=e.at(0),r=e.at(1),a=e.at(2),h=e.at(3);return i?(i.init([u*s.at(0)+r*s.at(2),u*s.at(1)+r*s.at(3),a*s.at(0)+h*s.at(2),a*s.at(1)+h*s.at(3)]),i):new t([u*s.at(0)+r*s.at(2),u*s.at(1)+r*s.at(3),a*s.at(0)+h*s.at(2),a*s.at(1)+h*s.at(3)])},t.identity=(new t).setIdentity()}(),function(){function t(t){this.sprVerts=[],this.txtVerts=[],this.AtlasSize=1,this.gl=null,this.gl=t,this.verticlesBuffer=t.createBuffer(),t.bindBuffer(t.ARRAY_BUFFER,this.verticlesBuffer)}return t.prototype.SetupHeight=function(t){this.hight=t},t.prototype.SetupForDraw=function(t,e,s){this.gl.enableVertexAttribArray(t),this.gl.vertexAttribPointer(t,3,this.gl.FLOAT,!1,20,0),this.gl.enableVertexAttribArray(e),this.gl.vertexAttribPointer(e,2,this.gl.FLOAT,!1,20,12),this.gl.bufferData(this.gl.ARRAY_BUFFER,new Float32Array(15e4),this.gl.STREAM_DRAW),this.AtlasSize=s},t.prototype.RenderAllSpr=function(){this.gl.bufferSubData(this.gl.ARRAY_BUFFER,0,new Float32Array(this.sprVerts)),this.gl.drawArrays(this.gl.TRIANGLES,0,this.sprVerts.length/5),this.sprVerts=[]},t.prototype.RenderAllTxt=function(){this.gl.bufferSubData(this.gl.ARRAY_BUFFER,0,new Float32Array(this.txtVerts)),this.gl.drawArrays(this.gl.TRIANGLES,0,this.txtVerts.length/5),this.txtVerts=[]},t.prototype.DrawSpr=function(e,s,i,u,r,a,h,n){for(var o=0;o=this.txtsList[a].Pos.y&&(a=h,r=this.txtsList[a].Pos.y+1.2*this.txtsList[a].Size.Height);var n={str:t,Pos:{x:0,y:r},Size:{Width:u+1.7*Math.sqrt(s),Height:s+2*Math.sqrt(s)},Color:e,OutLine:i,FontSize:s};return this.txtsList.push(n),this.BakeTexture(),n},t.prototype.DisposeTxt=function(t){var e=this.txtsList.indexOf(t);e>-1&&e&&this.txtsList.splice(e,1),this.UpdatePositon(),this.BakeTexture()},t.prototype.UpdatePositon=function(){this.txtsList.sort(function(t,e){return t.Pos.y-e.Pos.y});for(var t=0;t threshold) {\r\n return false;\r\n }\r\n if (Math.abs(this.y - vector.y) > threshold) {\r\n return false;\r\n }\r\n if (Math.abs(this.z - vector.z) > threshold) {\r\n return false;\r\n }\r\n if (Math.abs(this.w - vector.w) > threshold) {\r\n return false;\r\n }\r\n return true;\r\n };\r\n vec4.prototype.length = function () {\r\n return Math.sqrt(this.squaredLength());\r\n };\r\n vec4.prototype.squaredLength = function () {\r\n var x = this.x;\r\n var y = this.y;\r\n var z = this.z;\r\n var w = this.w;\r\n return (x * x + y * y + z * z + w * w);\r\n };\r\n vec4.prototype.add = function (vector) {\r\n this.x += vector.x;\r\n this.y += vector.y;\r\n this.z += vector.z;\r\n this.w += vector.w;\r\n return this;\r\n };\r\n vec4.prototype.subtract = function (vector) {\r\n this.x -= vector.x;\r\n this.y -= vector.y;\r\n this.z -= vector.z;\r\n this.w -= vector.w;\r\n return this;\r\n };\r\n vec4.prototype.multiply = function (vector) {\r\n this.x *= vector.x;\r\n this.y *= vector.y;\r\n this.z *= vector.z;\r\n this.w *= vector.w;\r\n return this;\r\n };\r\n vec4.prototype.divide = function (vector) {\r\n this.x /= vector.x;\r\n this.y /= vector.y;\r\n this.z /= vector.z;\r\n this.w /= vector.w;\r\n return this;\r\n };\r\n vec4.prototype.scale = function (value, dest) {\r\n if (!dest) {\r\n dest = this;\r\n }\r\n dest.x *= value;\r\n dest.y *= value;\r\n dest.z *= value;\r\n dest.w *= value;\r\n return dest;\r\n };\r\n vec4.prototype.normalize = function (dest) {\r\n if (!dest) {\r\n dest = this;\r\n }\r\n var length = this.length();\r\n if (length === 1) {\r\n return this;\r\n }\r\n if (length === 0) {\r\n dest.x *= 0;\r\n dest.y *= 0;\r\n dest.z *= 0;\r\n dest.w *= 0;\r\n return dest;\r\n }\r\n length = 1.0 / length;\r\n dest.x *= length;\r\n dest.y *= length;\r\n dest.z *= length;\r\n dest.w *= length;\r\n return dest;\r\n };\r\n vec4.prototype.multiplyMat4 = function (matrix, dest) {\r\n if (!dest) {\r\n dest = this;\r\n }\r\n return matrix.multiplyVec4(this, dest);\r\n };\r\n vec4.mix = function (vector, vector2, time, dest) {\r\n if (!dest) {\r\n dest = new vec4();\r\n }\r\n dest.x = vector.x + time * (vector2.x - vector.x);\r\n dest.y = vector.y + time * (vector2.y - vector.y);\r\n dest.z = vector.z + time * (vector2.z - vector.z);\r\n dest.w = vector.w + time * (vector2.w - vector.w);\r\n return dest;\r\n };\r\n vec4.sum = function (vector, vector2, dest) {\r\n if (!dest) {\r\n dest = new vec4();\r\n }\r\n dest.x = vector.x + vector2.x;\r\n dest.y = vector.y + vector2.y;\r\n dest.z = vector.z + vector2.z;\r\n dest.w = vector.w + vector2.w;\r\n return dest;\r\n };\r\n vec4.difference = function (vector, vector2, dest) {\r\n if (!dest) {\r\n dest = new vec4();\r\n }\r\n dest.x = vector.x - vector2.x;\r\n dest.y = vector.y - vector2.y;\r\n dest.z = vector.z - vector2.z;\r\n dest.w = vector.w - vector2.w;\r\n return dest;\r\n };\r\n vec4.product = function (vector, vector2, dest) {\r\n if (!dest) {\r\n dest = new vec4();\r\n }\r\n dest.x = vector.x * vector2.x;\r\n dest.y = vector.y * vector2.y;\r\n dest.z = vector.z * vector2.z;\r\n dest.w = vector.w * vector2.w;\r\n return dest;\r\n };\r\n vec4.quotient = function (vector, vector2, dest) {\r\n if (!dest) {\r\n dest = new vec4();\r\n }\r\n dest.x = vector.x / vector2.x;\r\n dest.y = vector.y / vector2.y;\r\n dest.z = vector.z / vector2.z;\r\n dest.w = vector.w / vector2.w;\r\n return dest;\r\n };\r\n vec4.zero = new vec4([0, 0, 0, 1]);\r\n vec4.one = new vec4([1, 1, 1, 1]);\r\n return vec4;\r\n}());\n\nvar mat4 = /** @class */ (function () {\r\n function mat4(values) {\r\n this.values = new Float32Array(16);\r\n if (values !== undefined) {\r\n this.init(values);\r\n }\r\n }\r\n mat4.prototype.at = function (index) {\r\n return this.values[index];\r\n };\r\n mat4.prototype.init = function (values) {\r\n for (var i = 0; i < 16; i++) {\r\n this.values[i] = values[i];\r\n }\r\n return this;\r\n };\r\n mat4.prototype.reset = function () {\r\n for (var i = 0; i < 16; i++) {\r\n this.values[i] = 0;\r\n }\r\n };\r\n mat4.prototype.copy = function (dest) {\r\n if (!dest) {\r\n dest = new mat4();\r\n }\r\n for (var i = 0; i < 16; i++) {\r\n dest.values[i] = this.values[i];\r\n }\r\n return dest;\r\n };\r\n mat4.prototype.all = function () {\r\n var data = [];\r\n for (var i = 0; i < 16; i++) {\r\n data[i] = this.values[i];\r\n }\r\n return data;\r\n };\r\n mat4.prototype.row = function (index) {\r\n return [\r\n this.values[index * 4 + 0],\r\n this.values[index * 4 + 1],\r\n this.values[index * 4 + 2],\r\n this.values[index * 4 + 3],\r\n ];\r\n };\r\n mat4.prototype.col = function (index) {\r\n return [\r\n this.values[index],\r\n this.values[index + 4],\r\n this.values[index + 8],\r\n this.values[index + 12],\r\n ];\r\n };\r\n mat4.prototype.equals = function (matrix, threshold) {\r\n if (threshold === void 0) { threshold = epsilon; }\r\n for (var i = 0; i < 16; i++) {\r\n if (Math.abs(this.values[i] - matrix.at(i)) > threshold) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n };\r\n mat4.prototype.determinant = function () {\r\n var a00 = this.values[0];\r\n var a01 = this.values[1];\r\n var a02 = this.values[2];\r\n var a03 = this.values[3];\r\n var a10 = this.values[4];\r\n var a11 = this.values[5];\r\n var a12 = this.values[6];\r\n var a13 = this.values[7];\r\n var a20 = this.values[8];\r\n var a21 = this.values[9];\r\n var a22 = this.values[10];\r\n var a23 = this.values[11];\r\n var a30 = this.values[12];\r\n var a31 = this.values[13];\r\n var a32 = this.values[14];\r\n var a33 = this.values[15];\r\n var det00 = a00 * a11 - a01 * a10;\r\n var det01 = a00 * a12 - a02 * a10;\r\n var det02 = a00 * a13 - a03 * a10;\r\n var det03 = a01 * a12 - a02 * a11;\r\n var det04 = a01 * a13 - a03 * a11;\r\n var det05 = a02 * a13 - a03 * a12;\r\n var det06 = a20 * a31 - a21 * a30;\r\n var det07 = a20 * a32 - a22 * a30;\r\n var det08 = a20 * a33 - a23 * a30;\r\n var det09 = a21 * a32 - a22 * a31;\r\n var det10 = a21 * a33 - a23 * a31;\r\n var det11 = a22 * a33 - a23 * a32;\r\n return (det00 * det11 - det01 * det10 + det02 * det09 + det03 * det08 - det04 * det07 + det05 * det06);\r\n };\r\n mat4.prototype.setIdentity = function () {\r\n this.values[0] = 1;\r\n this.values[1] = 0;\r\n this.values[2] = 0;\r\n this.values[3] = 0;\r\n this.values[4] = 0;\r\n this.values[5] = 1;\r\n this.values[6] = 0;\r\n this.values[7] = 0;\r\n this.values[8] = 0;\r\n this.values[9] = 0;\r\n this.values[10] = 1;\r\n this.values[11] = 0;\r\n this.values[12] = 0;\r\n this.values[13] = 0;\r\n this.values[14] = 0;\r\n this.values[15] = 1;\r\n return this;\r\n };\r\n mat4.prototype.transpose = function () {\r\n var temp01 = this.values[1];\r\n var temp02 = this.values[2];\r\n var temp03 = this.values[3];\r\n var temp12 = this.values[6];\r\n var temp13 = this.values[7];\r\n var temp23 = this.values[11];\r\n this.values[1] = this.values[4];\r\n this.values[2] = this.values[8];\r\n this.values[3] = this.values[12];\r\n this.values[4] = temp01;\r\n this.values[6] = this.values[9];\r\n this.values[7] = this.values[13];\r\n this.values[8] = temp02;\r\n this.values[9] = temp12;\r\n this.values[11] = this.values[14];\r\n this.values[12] = temp03;\r\n this.values[13] = temp13;\r\n this.values[14] = temp23;\r\n return this;\r\n };\r\n mat4.prototype.inverse = function () {\r\n var a00 = this.values[0];\r\n var a01 = this.values[1];\r\n var a02 = this.values[2];\r\n var a03 = this.values[3];\r\n var a10 = this.values[4];\r\n var a11 = this.values[5];\r\n var a12 = this.values[6];\r\n var a13 = this.values[7];\r\n var a20 = this.values[8];\r\n var a21 = this.values[9];\r\n var a22 = this.values[10];\r\n var a23 = this.values[11];\r\n var a30 = this.values[12];\r\n var a31 = this.values[13];\r\n var a32 = this.values[14];\r\n var a33 = this.values[15];\r\n var det00 = a00 * a11 - a01 * a10;\r\n var det01 = a00 * a12 - a02 * a10;\r\n var det02 = a00 * a13 - a03 * a10;\r\n var det03 = a01 * a12 - a02 * a11;\r\n var det04 = a01 * a13 - a03 * a11;\r\n var det05 = a02 * a13 - a03 * a12;\r\n var det06 = a20 * a31 - a21 * a30;\r\n var det07 = a20 * a32 - a22 * a30;\r\n var det08 = a20 * a33 - a23 * a30;\r\n var det09 = a21 * a32 - a22 * a31;\r\n var det10 = a21 * a33 - a23 * a31;\r\n var det11 = a22 * a33 - a23 * a32;\r\n var det = (det00 * det11 - det01 * det10 + det02 * det09 + det03 * det08 - det04 * det07 + det05 * det06);\r\n if (!det) {\r\n return null;\r\n }\r\n det = 1.0 / det;\r\n this.values[0] = (a11 * det11 - a12 * det10 + a13 * det09) * det;\r\n this.values[1] = (-a01 * det11 + a02 * det10 - a03 * det09) * det;\r\n this.values[2] = (a31 * det05 - a32 * det04 + a33 * det03) * det;\r\n this.values[3] = (-a21 * det05 + a22 * det04 - a23 * det03) * det;\r\n this.values[4] = (-a10 * det11 + a12 * det08 - a13 * det07) * det;\r\n this.values[5] = (a00 * det11 - a02 * det08 + a03 * det07) * det;\r\n this.values[6] = (-a30 * det05 + a32 * det02 - a33 * det01) * det;\r\n this.values[7] = (a20 * det05 - a22 * det02 + a23 * det01) * det;\r\n this.values[8] = (a10 * det10 - a11 * det08 + a13 * det06) * det;\r\n this.values[9] = (-a00 * det10 + a01 * det08 - a03 * det06) * det;\r\n this.values[10] = (a30 * det04 - a31 * det02 + a33 * det00) * det;\r\n this.values[11] = (-a20 * det04 + a21 * det02 - a23 * det00) * det;\r\n this.values[12] = (-a10 * det09 + a11 * det07 - a12 * det06) * det;\r\n this.values[13] = (a00 * det09 - a01 * det07 + a02 * det06) * det;\r\n this.values[14] = (-a30 * det03 + a31 * det01 - a32 * det00) * det;\r\n this.values[15] = (a20 * det03 - a21 * det01 + a22 * det00) * det;\r\n return this;\r\n };\r\n mat4.prototype.multiply = function (matrix) {\r\n var a00 = this.values[0];\r\n var a01 = this.values[1];\r\n var a02 = this.values[2];\r\n var a03 = this.values[3];\r\n var a10 = this.values[4];\r\n var a11 = this.values[5];\r\n var a12 = this.values[6];\r\n var a13 = this.values[7];\r\n var a20 = this.values[8];\r\n var a21 = this.values[9];\r\n var a22 = this.values[10];\r\n var a23 = this.values[11];\r\n var a30 = this.values[12];\r\n var a31 = this.values[13];\r\n var a32 = this.values[14];\r\n var a33 = this.values[15];\r\n var b0 = matrix.at(0);\r\n var b1 = matrix.at(1);\r\n var b2 = matrix.at(2);\r\n var b3 = matrix.at(3);\r\n this.values[0] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;\r\n this.values[1] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;\r\n this.values[2] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32;\r\n this.values[3] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;\r\n b0 = matrix.at(4);\r\n b1 = matrix.at(5);\r\n b2 = matrix.at(6);\r\n b3 = matrix.at(7);\r\n this.values[4] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;\r\n this.values[5] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;\r\n this.values[6] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32;\r\n this.values[7] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;\r\n b0 = matrix.at(8);\r\n b1 = matrix.at(9);\r\n b2 = matrix.at(10);\r\n b3 = matrix.at(11);\r\n this.values[8] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;\r\n this.values[9] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;\r\n this.values[10] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32;\r\n this.values[11] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;\r\n b0 = matrix.at(12);\r\n b1 = matrix.at(13);\r\n b2 = matrix.at(14);\r\n b3 = matrix.at(15);\r\n this.values[12] = b0 * a00 + b1 * a10 + b2 * a20 + b3 * a30;\r\n this.values[13] = b0 * a01 + b1 * a11 + b2 * a21 + b3 * a31;\r\n this.values[14] = b0 * a02 + b1 * a12 + b2 * a22 + b3 * a32;\r\n this.values[15] = b0 * a03 + b1 * a13 + b2 * a23 + b3 * a33;\r\n return this;\r\n };\r\n mat4.prototype.multiplyVec3 = function (vector) {\r\n var x = vector.x;\r\n var y = vector.y;\r\n var z = vector.z;\r\n return new vec3([\r\n this.values[0] * x + this.values[4] * y + this.values[8] * z + this.values[12],\r\n this.values[1] * x + this.values[5] * y + this.values[9] * z + this.values[13],\r\n this.values[2] * x + this.values[6] * y + this.values[10] * z + this.values[14],\r\n ]);\r\n };\r\n mat4.prototype.multiplyVec4 = function (vector, dest) {\r\n if (!dest) {\r\n dest = new vec4();\r\n }\r\n var x = vector.x;\r\n var y = vector.y;\r\n var z = vector.z;\r\n var w = vector.w;\r\n dest.x = this.values[0] * x + this.values[4] * y + this.values[8] * z + this.values[12] * w;\r\n dest.y = this.values[1] * x + this.values[5] * y + this.values[9] * z + this.values[13] * w;\r\n dest.z = this.values[2] * x + this.values[6] * y + this.values[10] * z + this.values[14] * w;\r\n dest.w = this.values[3] * x + this.values[7] * y + this.values[11] * z + this.values[15] * w;\r\n return dest;\r\n };\r\n mat4.prototype.toMat3 = function () {\r\n return new mat3([\r\n this.values[0],\r\n this.values[1],\r\n this.values[2],\r\n this.values[4],\r\n this.values[5],\r\n this.values[6],\r\n this.values[8],\r\n this.values[9],\r\n this.values[10],\r\n ]);\r\n };\r\n mat4.prototype.toInverseMat3 = function () {\r\n var a00 = this.values[0];\r\n var a01 = this.values[1];\r\n var a02 = this.values[2];\r\n var a10 = this.values[4];\r\n var a11 = this.values[5];\r\n var a12 = this.values[6];\r\n var a20 = this.values[8];\r\n var a21 = this.values[9];\r\n var a22 = this.values[10];\r\n var det01 = a22 * a11 - a12 * a21;\r\n var det11 = -a22 * a10 + a12 * a20;\r\n var det21 = a21 * a10 - a11 * a20;\r\n var det = a00 * det01 + a01 * det11 + a02 * det21;\r\n if (!det) {\r\n return null;\r\n }\r\n det = 1.0 / det;\r\n return new mat3([\r\n det01 * det,\r\n (-a22 * a01 + a02 * a21) * det,\r\n (a12 * a01 - a02 * a11) * det,\r\n det11 * det,\r\n (a22 * a00 - a02 * a20) * det,\r\n (-a12 * a00 + a02 * a10) * det,\r\n det21 * det,\r\n (-a21 * a00 + a01 * a20) * det,\r\n (a11 * a00 - a01 * a10) * det,\r\n ]);\r\n };\r\n mat4.prototype.translate = function (vector) {\r\n var x = vector.x;\r\n var y = vector.y;\r\n var z = vector.z;\r\n this.values[12] += this.values[0] * x + this.values[4] * y + this.values[8] * z;\r\n this.values[13] += this.values[1] * x + this.values[5] * y + this.values[9] * z;\r\n this.values[14] += this.values[2] * x + this.values[6] * y + this.values[10] * z;\r\n this.values[15] += this.values[3] * x + this.values[7] * y + this.values[11] * z;\r\n return this;\r\n };\r\n mat4.prototype.scale = function (vector) {\r\n var x = vector.x;\r\n var y = vector.y;\r\n var z = vector.z;\r\n this.values[0] *= x;\r\n this.values[1] *= x;\r\n this.values[2] *= x;\r\n this.values[3] *= x;\r\n this.values[4] *= y;\r\n this.values[5] *= y;\r\n this.values[6] *= y;\r\n this.values[7] *= y;\r\n this.values[8] *= z;\r\n this.values[9] *= z;\r\n this.values[10] *= z;\r\n this.values[11] *= z;\r\n return this;\r\n };\r\n mat4.prototype.rotate = function (angle, axis) {\r\n var x = axis.x;\r\n var y = axis.y;\r\n var z = axis.z;\r\n var length = Math.sqrt(x * x + y * y + z * z);\r\n if (!length) {\r\n return null;\r\n }\r\n if (length !== 1) {\r\n length = 1 / length;\r\n x *= length;\r\n y *= length;\r\n z *= length;\r\n }\r\n var s = Math.sin(angle);\r\n var c = Math.cos(angle);\r\n var t = 1.0 - c;\r\n var a00 = this.values[0];\r\n var a01 = this.values[1];\r\n var a02 = this.values[2];\r\n var a03 = this.values[3];\r\n var a10 = this.values[4];\r\n var a11 = this.values[5];\r\n var a12 = this.values[6];\r\n var a13 = this.values[7];\r\n var a20 = this.values[8];\r\n var a21 = this.values[9];\r\n var a22 = this.values[10];\r\n var a23 = this.values[11];\r\n var b00 = x * x * t + c;\r\n var b01 = y * x * t + z * s;\r\n var b02 = z * x * t - y * s;\r\n var b10 = x * y * t - z * s;\r\n var b11 = y * y * t + c;\r\n var b12 = z * y * t + x * s;\r\n var b20 = x * z * t + y * s;\r\n var b21 = y * z * t - x * s;\r\n var b22 = z * z * t + c;\r\n this.values[0] = a00 * b00 + a10 * b01 + a20 * b02;\r\n this.values[1] = a01 * b00 + a11 * b01 + a21 * b02;\r\n this.values[2] = a02 * b00 + a12 * b01 + a22 * b02;\r\n this.values[3] = a03 * b00 + a13 * b01 + a23 * b02;\r\n this.values[4] = a00 * b10 + a10 * b11 + a20 * b12;\r\n this.values[5] = a01 * b10 + a11 * b11 + a21 * b12;\r\n this.values[6] = a02 * b10 + a12 * b11 + a22 * b12;\r\n this.values[7] = a03 * b10 + a13 * b11 + a23 * b12;\r\n this.values[8] = a00 * b20 + a10 * b21 + a20 * b22;\r\n this.values[9] = a01 * b20 + a11 * b21 + a21 * b22;\r\n this.values[10] = a02 * b20 + a12 * b21 + a22 * b22;\r\n this.values[11] = a03 * b20 + a13 * b21 + a23 * b22;\r\n return this;\r\n };\r\n mat4.frustum = function (left, right, bottom, top, near, far) {\r\n var rl = (right - left);\r\n var tb = (top - bottom);\r\n var fn = (far - near);\r\n return new mat4([\r\n (near * 2) / rl,\r\n 0,\r\n 0,\r\n 0,\r\n 0,\r\n (near * 2) / tb,\r\n 0,\r\n 0,\r\n (right + left) / rl,\r\n (top + bottom) / tb,\r\n -(far + near) / fn,\r\n -1,\r\n 0,\r\n 0,\r\n -(far * near * 2) / fn,\r\n 0,\r\n ]);\r\n };\r\n mat4.perspective = function (fov, aspect, near, far) {\r\n var top = near * Math.tan(fov * Math.PI / 360.0);\r\n var right = top * aspect;\r\n return mat4.frustum(-right, right, -top, top, near, far);\r\n };\r\n mat4.orthographic = function (left, right, bottom, top, near, far) {\r\n var rl = (right - left);\r\n var tb = (top - bottom);\r\n var fn = (far - near);\r\n return new mat4([\r\n 2 / rl,\r\n 0,\r\n 0,\r\n 0,\r\n 0,\r\n 2 / tb,\r\n 0,\r\n 0,\r\n 0,\r\n 0,\r\n -2 / fn,\r\n 0,\r\n -(left + right) / rl,\r\n -(top + bottom) / tb,\r\n -(far + near) / fn,\r\n 1,\r\n ]);\r\n };\r\n mat4.lookAt = function (position, target, up) {\r\n if (up === void 0) { up = vec3.up; }\r\n if (position.equals(target)) {\r\n return this.identity;\r\n }\r\n var z = vec3.difference(position, target).normalize();\r\n var x = vec3.cross(up, z).normalize();\r\n var y = vec3.cross(z, x).normalize();\r\n return new mat4([\r\n x.x,\r\n y.x,\r\n z.x,\r\n 0,\r\n x.y,\r\n y.y,\r\n z.y,\r\n 0,\r\n x.z,\r\n y.z,\r\n z.z,\r\n 0,\r\n -vec3.dot(x, position),\r\n -vec3.dot(y, position),\r\n -vec3.dot(z, position),\r\n 1,\r\n ]);\r\n };\r\n mat4.product = function (m1, m2, result) {\r\n var a00 = m1.at(0);\r\n var a01 = m1.at(1);\r\n var a02 = m1.at(2);\r\n var a03 = m1.at(3);\r\n var a10 = m1.at(4);\r\n var a11 = m1.at(5);\r\n var a12 = m1.at(6);\r\n var a13 = m1.at(7);\r\n var a20 = m1.at(8);\r\n var a21 = m1.at(9);\r\n var a22 = m1.at(10);\r\n var a23 = m1.at(11);\r\n var a30 = m1.at(12);\r\n var a31 = m1.at(13);\r\n var a32 = m1.at(14);\r\n var a33 = m1.at(15);\r\n var b00 = m2.at(0);\r\n var b01 = m2.at(1);\r\n var b02 = m2.at(2);\r\n var b03 = m2.at(3);\r\n var b10 = m2.at(4);\r\n var b11 = m2.at(5);\r\n var b12 = m2.at(6);\r\n var b13 = m2.at(7);\r\n var b20 = m2.at(8);\r\n var b21 = m2.at(9);\r\n var b22 = m2.at(10);\r\n var b23 = m2.at(11);\r\n var b30 = m2.at(12);\r\n var b31 = m2.at(13);\r\n var b32 = m2.at(14);\r\n var b33 = m2.at(15);\r\n if (result) {\r\n result.init([\r\n b00 * a00 + b01 * a10 + b02 * a20 + b03 * a30,\r\n b00 * a01 + b01 * a11 + b02 * a21 + b03 * a31,\r\n b00 * a02 + b01 * a12 + b02 * a22 + b03 * a32,\r\n b00 * a03 + b01 * a13 + b02 * a23 + b03 * a33,\r\n b10 * a00 + b11 * a10 + b12 * a20 + b13 * a30,\r\n b10 * a01 + b11 * a11 + b12 * a21 + b13 * a31,\r\n b10 * a02 + b11 * a12 + b12 * a22 + b13 * a32,\r\n b10 * a03 + b11 * a13 + b12 * a23 + b13 * a33,\r\n b20 * a00 + b21 * a10 + b22 * a20 + b23 * a30,\r\n b20 * a01 + b21 * a11 + b22 * a21 + b23 * a31,\r\n b20 * a02 + b21 * a12 + b22 * a22 + b23 * a32,\r\n b20 * a03 + b21 * a13 + b22 * a23 + b23 * a33,\r\n b30 * a00 + b31 * a10 + b32 * a20 + b33 * a30,\r\n b30 * a01 + b31 * a11 + b32 * a21 + b33 * a31,\r\n b30 * a02 + b31 * a12 + b32 * a22 + b33 * a32,\r\n b30 * a03 + b31 * a13 + b32 * a23 + b33 * a33,\r\n ]);\r\n return result;\r\n }\r\n else {\r\n return new mat4([\r\n b00 * a00 + b01 * a10 + b02 * a20 + b03 * a30,\r\n b00 * a01 + b01 * a11 + b02 * a21 + b03 * a31,\r\n b00 * a02 + b01 * a12 + b02 * a22 + b03 * a32,\r\n b00 * a03 + b01 * a13 + b02 * a23 + b03 * a33,\r\n b10 * a00 + b11 * a10 + b12 * a20 + b13 * a30,\r\n b10 * a01 + b11 * a11 + b12 * a21 + b13 * a31,\r\n b10 * a02 + b11 * a12 + b12 * a22 + b13 * a32,\r\n b10 * a03 + b11 * a13 + b12 * a23 + b13 * a33,\r\n b20 * a00 + b21 * a10 + b22 * a20 + b23 * a30,\r\n b20 * a01 + b21 * a11 + b22 * a21 + b23 * a31,\r\n b20 * a02 + b21 * a12 + b22 * a22 + b23 * a32,\r\n b20 * a03 + b21 * a13 + b22 * a23 + b23 * a33,\r\n b30 * a00 + b31 * a10 + b32 * a20 + b33 * a30,\r\n b30 * a01 + b31 * a11 + b32 * a21 + b33 * a31,\r\n b30 * a02 + b31 * a12 + b32 * a22 + b33 * a32,\r\n b30 * a03 + b31 * a13 + b32 * a23 + b33 * a33,\r\n ]);\r\n }\r\n };\r\n mat4.identity = new mat4().setIdentity();\r\n return mat4;\r\n}());\n\nvar mat3 = /** @class */ (function () {\r\n function mat3(values) {\r\n this.values = new Float32Array(9);\r\n if (values !== undefined) {\r\n this.init(values);\r\n }\r\n }\r\n mat3.prototype.at = function (index) {\r\n return this.values[index];\r\n };\r\n mat3.prototype.init = function (values) {\r\n for (var i = 0; i < 9; i++) {\r\n this.values[i] = values[i];\r\n }\r\n return this;\r\n };\r\n mat3.prototype.reset = function () {\r\n for (var i = 0; i < 9; i++) {\r\n this.values[i] = 0;\r\n }\r\n };\r\n mat3.prototype.copy = function (dest) {\r\n if (!dest) {\r\n dest = new mat3();\r\n }\r\n for (var i = 0; i < 9; i++) {\r\n dest.values[i] = this.values[i];\r\n }\r\n return dest;\r\n };\r\n mat3.prototype.all = function () {\r\n var data = [];\r\n for (var i = 0; i < 9; i++) {\r\n data[i] = this.values[i];\r\n }\r\n return data;\r\n };\r\n mat3.prototype.row = function (index) {\r\n return [\r\n this.values[index * 3 + 0],\r\n this.values[index * 3 + 1],\r\n this.values[index * 3 + 2],\r\n ];\r\n };\r\n mat3.prototype.col = function (index) {\r\n return [\r\n this.values[index],\r\n this.values[index + 3],\r\n this.values[index + 6],\r\n ];\r\n };\r\n mat3.prototype.equals = function (matrix, threshold) {\r\n if (threshold === void 0) { threshold = epsilon; }\r\n for (var i = 0; i < 9; i++) {\r\n if (Math.abs(this.values[i] - matrix.at(i)) > threshold) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n };\r\n mat3.prototype.determinant = function () {\r\n var a00 = this.values[0];\r\n var a01 = this.values[1];\r\n var a02 = this.values[2];\r\n var a10 = this.values[3];\r\n var a11 = this.values[4];\r\n var a12 = this.values[5];\r\n var a20 = this.values[6];\r\n var a21 = this.values[7];\r\n var a22 = this.values[8];\r\n var det01 = a22 * a11 - a12 * a21;\r\n var det11 = -a22 * a10 + a12 * a20;\r\n var det21 = a21 * a10 - a11 * a20;\r\n return a00 * det01 + a01 * det11 + a02 * det21;\r\n };\r\n mat3.prototype.setIdentity = function () {\r\n this.values[0] = 1;\r\n this.values[1] = 0;\r\n this.values[2] = 0;\r\n this.values[3] = 0;\r\n this.values[4] = 1;\r\n this.values[5] = 0;\r\n this.values[6] = 0;\r\n this.values[7] = 0;\r\n this.values[8] = 1;\r\n return this;\r\n };\r\n mat3.prototype.transpose = function () {\r\n var temp01 = this.values[1];\r\n var temp02 = this.values[2];\r\n var temp12 = this.values[5];\r\n this.values[1] = this.values[3];\r\n this.values[2] = this.values[6];\r\n this.values[3] = temp01;\r\n this.values[5] = this.values[7];\r\n this.values[6] = temp02;\r\n this.values[7] = temp12;\r\n return this;\r\n };\r\n mat3.prototype.inverse = function () {\r\n var a00 = this.values[0];\r\n var a01 = this.values[1];\r\n var a02 = this.values[2];\r\n var a10 = this.values[3];\r\n var a11 = this.values[4];\r\n var a12 = this.values[5];\r\n var a20 = this.values[6];\r\n var a21 = this.values[7];\r\n var a22 = this.values[8];\r\n var det01 = a22 * a11 - a12 * a21;\r\n var det11 = -a22 * a10 + a12 * a20;\r\n var det21 = a21 * a10 - a11 * a20;\r\n var det = a00 * det01 + a01 * det11 + a02 * det21;\r\n if (!det) {\r\n return null;\r\n }\r\n det = 1.0 / det;\r\n this.values[0] = det01 * det;\r\n this.values[1] = (-a22 * a01 + a02 * a21) * det;\r\n this.values[2] = (a12 * a01 - a02 * a11) * det;\r\n this.values[3] = det11 * det;\r\n this.values[4] = (a22 * a00 - a02 * a20) * det;\r\n this.values[5] = (-a12 * a00 + a02 * a10) * det;\r\n this.values[6] = det21 * det;\r\n this.values[7] = (-a21 * a00 + a01 * a20) * det;\r\n this.values[8] = (a11 * a00 - a01 * a10) * det;\r\n return this;\r\n };\r\n mat3.prototype.multiply = function (matrix) {\r\n var a00 = this.values[0];\r\n var a01 = this.values[1];\r\n var a02 = this.values[2];\r\n var a10 = this.values[3];\r\n var a11 = this.values[4];\r\n var a12 = this.values[5];\r\n var a20 = this.values[6];\r\n var a21 = this.values[7];\r\n var a22 = this.values[8];\r\n var b00 = matrix.at(0);\r\n var b01 = matrix.at(1);\r\n var b02 = matrix.at(2);\r\n var b10 = matrix.at(3);\r\n var b11 = matrix.at(4);\r\n var b12 = matrix.at(5);\r\n var b20 = matrix.at(6);\r\n var b21 = matrix.at(7);\r\n var b22 = matrix.at(8);\r\n this.values[0] = b00 * a00 + b01 * a10 + b02 * a20;\r\n this.values[1] = b00 * a01 + b01 * a11 + b02 * a21;\r\n this.values[2] = b00 * a02 + b01 * a12 + b02 * a22;\r\n this.values[3] = b10 * a00 + b11 * a10 + b12 * a20;\r\n this.values[4] = b10 * a01 + b11 * a11 + b12 * a21;\r\n this.values[5] = b10 * a02 + b11 * a12 + b12 * a22;\r\n this.values[6] = b20 * a00 + b21 * a10 + b22 * a20;\r\n this.values[7] = b20 * a01 + b21 * a11 + b22 * a21;\r\n this.values[8] = b20 * a02 + b21 * a12 + b22 * a22;\r\n return this;\r\n };\r\n mat3.prototype.multiplyVec2 = function (vector, result) {\r\n var x = vector.x;\r\n var y = vector.y;\r\n if (result) {\r\n result.xy = [\r\n x * this.values[0] + y * this.values[3] + this.values[6],\r\n x * this.values[1] + y * this.values[4] + this.values[7],\r\n ];\r\n return result;\r\n }\r\n else {\r\n return new vec2([\r\n x * this.values[0] + y * this.values[3] + this.values[6],\r\n x * this.values[1] + y * this.values[4] + this.values[7],\r\n ]);\r\n }\r\n };\r\n mat3.prototype.multiplyVec3 = function (vector, result) {\r\n var x = vector.x;\r\n var y = vector.y;\r\n var z = vector.z;\r\n if (result) {\r\n result.xyz = [\r\n x * this.values[0] + y * this.values[3] + z * this.values[6],\r\n x * this.values[1] + y * this.values[4] + z * this.values[7],\r\n x * this.values[2] + y * this.values[5] + z * this.values[8],\r\n ];\r\n return result;\r\n }\r\n else {\r\n return new vec3([\r\n x * this.values[0] + y * this.values[3] + z * this.values[6],\r\n x * this.values[1] + y * this.values[4] + z * this.values[7],\r\n x * this.values[2] + y * this.values[5] + z * this.values[8],\r\n ]);\r\n }\r\n };\r\n mat3.prototype.toMat4 = function (result) {\r\n if (result) {\r\n result.init([\r\n this.values[0],\r\n this.values[1],\r\n this.values[2],\r\n 0,\r\n this.values[3],\r\n this.values[4],\r\n this.values[5],\r\n 0,\r\n this.values[6],\r\n this.values[7],\r\n this.values[8],\r\n 0,\r\n 0,\r\n 0,\r\n 0,\r\n 1,\r\n ]);\r\n return result;\r\n }\r\n else {\r\n return new mat4([\r\n this.values[0],\r\n this.values[1],\r\n this.values[2],\r\n 0,\r\n this.values[3],\r\n this.values[4],\r\n this.values[5],\r\n 0,\r\n this.values[6],\r\n this.values[7],\r\n this.values[8],\r\n 0,\r\n 0,\r\n 0,\r\n 0,\r\n 1,\r\n ]);\r\n }\r\n };\r\n mat3.prototype.toQuat = function () {\r\n var m00 = this.values[0];\r\n var m01 = this.values[1];\r\n var m02 = this.values[2];\r\n var m10 = this.values[3];\r\n var m11 = this.values[4];\r\n var m12 = this.values[5];\r\n var m20 = this.values[6];\r\n var m21 = this.values[7];\r\n var m22 = this.values[8];\r\n var fourXSquaredMinus1 = m00 - m11 - m22;\r\n var fourYSquaredMinus1 = m11 - m00 - m22;\r\n var fourZSquaredMinus1 = m22 - m00 - m11;\r\n var fourWSquaredMinus1 = m00 + m11 + m22;\r\n var biggestIndex = 0;\r\n var fourBiggestSquaredMinus1 = fourWSquaredMinus1;\r\n if (fourXSquaredMinus1 > fourBiggestSquaredMinus1) {\r\n fourBiggestSquaredMinus1 = fourXSquaredMinus1;\r\n biggestIndex = 1;\r\n }\r\n if (fourYSquaredMinus1 > fourBiggestSquaredMinus1) {\r\n fourBiggestSquaredMinus1 = fourYSquaredMinus1;\r\n biggestIndex = 2;\r\n }\r\n if (fourZSquaredMinus1 > fourBiggestSquaredMinus1) {\r\n fourBiggestSquaredMinus1 = fourZSquaredMinus1;\r\n biggestIndex = 3;\r\n }\r\n var biggestVal = Math.sqrt(fourBiggestSquaredMinus1 + 1) * 0.5;\r\n var mult = 0.25 / biggestVal;\r\n var result = new quat();\r\n switch (biggestIndex) {\r\n case 0:\r\n result.w = biggestVal;\r\n result.x = (m12 - m21) * mult;\r\n result.y = (m20 - m02) * mult;\r\n result.z = (m01 - m10) * mult;\r\n break;\r\n case 1:\r\n result.w = (m12 - m21) * mult;\r\n result.x = biggestVal;\r\n result.y = (m01 + m10) * mult;\r\n result.z = (m20 + m02) * mult;\r\n break;\r\n case 2:\r\n result.w = (m20 - m02) * mult;\r\n result.x = (m01 + m10) * mult;\r\n result.y = biggestVal;\r\n result.z = (m12 + m21) * mult;\r\n break;\r\n case 3:\r\n result.w = (m01 - m10) * mult;\r\n result.x = (m20 + m02) * mult;\r\n result.y = (m12 + m21) * mult;\r\n result.z = biggestVal;\r\n break;\r\n }\r\n return result;\r\n };\r\n mat3.prototype.rotate = function (angle, axis) {\r\n var x = axis.x;\r\n var y = axis.y;\r\n var z = axis.z;\r\n var length = Math.sqrt(x * x + y * y + z * z);\r\n if (!length) {\r\n return null;\r\n }\r\n if (length !== 1) {\r\n length = 1 / length;\r\n x *= length;\r\n y *= length;\r\n z *= length;\r\n }\r\n var s = Math.sin(angle);\r\n var c = Math.cos(angle);\r\n var t = 1.0 - c;\r\n var a00 = this.values[0];\r\n var a01 = this.values[1];\r\n var a02 = this.values[2];\r\n var a10 = this.values[4];\r\n var a11 = this.values[5];\r\n var a12 = this.values[6];\r\n var a20 = this.values[8];\r\n var a21 = this.values[9];\r\n var a22 = this.values[10];\r\n var b00 = x * x * t + c;\r\n var b01 = y * x * t + z * s;\r\n var b02 = z * x * t - y * s;\r\n var b10 = x * y * t - z * s;\r\n var b11 = y * y * t + c;\r\n var b12 = z * y * t + x * s;\r\n var b20 = x * z * t + y * s;\r\n var b21 = y * z * t - x * s;\r\n var b22 = z * z * t + c;\r\n this.values[0] = a00 * b00 + a10 * b01 + a20 * b02;\r\n this.values[1] = a01 * b00 + a11 * b01 + a21 * b02;\r\n this.values[2] = a02 * b00 + a12 * b01 + a22 * b02;\r\n this.values[3] = a00 * b10 + a10 * b11 + a20 * b12;\r\n this.values[4] = a01 * b10 + a11 * b11 + a21 * b12;\r\n this.values[5] = a02 * b10 + a12 * b11 + a22 * b12;\r\n this.values[6] = a00 * b20 + a10 * b21 + a20 * b22;\r\n this.values[7] = a01 * b20 + a11 * b21 + a21 * b22;\r\n this.values[8] = a02 * b20 + a12 * b21 + a22 * b22;\r\n return this;\r\n };\r\n mat3.product = function (m1, m2, result) {\r\n var a00 = m1.at(0);\r\n var a01 = m1.at(1);\r\n var a02 = m1.at(2);\r\n var a10 = m1.at(3);\r\n var a11 = m1.at(4);\r\n var a12 = m1.at(5);\r\n var a20 = m1.at(6);\r\n var a21 = m1.at(7);\r\n var a22 = m1.at(8);\r\n var b00 = m2.at(0);\r\n var b01 = m2.at(1);\r\n var b02 = m2.at(2);\r\n var b10 = m2.at(3);\r\n var b11 = m2.at(4);\r\n var b12 = m2.at(5);\r\n var b20 = m2.at(6);\r\n var b21 = m2.at(7);\r\n var b22 = m2.at(8);\r\n if (result) {\r\n result.init([\r\n b00 * a00 + b01 * a10 + b02 * a20,\r\n b00 * a01 + b01 * a11 + b02 * a21,\r\n b00 * a02 + b01 * a12 + b02 * a22,\r\n b10 * a00 + b11 * a10 + b12 * a20,\r\n b10 * a01 + b11 * a11 + b12 * a21,\r\n b10 * a02 + b11 * a12 + b12 * a22,\r\n b20 * a00 + b21 * a10 + b22 * a20,\r\n b20 * a01 + b21 * a11 + b22 * a21,\r\n b20 * a02 + b21 * a12 + b22 * a22,\r\n ]);\r\n return result;\r\n }\r\n else {\r\n return new mat3([\r\n b00 * a00 + b01 * a10 + b02 * a20,\r\n b00 * a01 + b01 * a11 + b02 * a21,\r\n b00 * a02 + b01 * a12 + b02 * a22,\r\n b10 * a00 + b11 * a10 + b12 * a20,\r\n b10 * a01 + b11 * a11 + b12 * a21,\r\n b10 * a02 + b11 * a12 + b12 * a22,\r\n b20 * a00 + b21 * a10 + b22 * a20,\r\n b20 * a01 + b21 * a11 + b22 * a21,\r\n b20 * a02 + b21 * a12 + b22 * a22,\r\n ]);\r\n }\r\n };\r\n mat3.identity = new mat3().setIdentity();\r\n return mat3;\r\n}());\n\nvar quat = /** @class */ (function () {\r\n function quat(values) {\r\n this.values = new Float32Array(4);\r\n if (values !== undefined) {\r\n this.xyzw = values;\r\n }\r\n }\r\n Object.defineProperty(quat.prototype, \"x\", {\r\n get: function () {\r\n return this.values[0];\r\n },\r\n set: function (value) {\r\n this.values[0] = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(quat.prototype, \"y\", {\r\n get: function () {\r\n return this.values[1];\r\n },\r\n set: function (value) {\r\n this.values[1] = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(quat.prototype, \"z\", {\r\n get: function () {\r\n return this.values[2];\r\n },\r\n set: function (value) {\r\n this.values[2] = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(quat.prototype, \"w\", {\r\n get: function () {\r\n return this.values[3];\r\n },\r\n set: function (value) {\r\n this.values[3] = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(quat.prototype, \"xy\", {\r\n get: function () {\r\n return [\r\n this.values[0],\r\n this.values[1],\r\n ];\r\n },\r\n set: function (values) {\r\n this.values[0] = values[0];\r\n this.values[1] = values[1];\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(quat.prototype, \"xyz\", {\r\n get: function () {\r\n return [\r\n this.values[0],\r\n this.values[1],\r\n this.values[2],\r\n ];\r\n },\r\n set: function (values) {\r\n this.values[0] = values[0];\r\n this.values[1] = values[1];\r\n this.values[2] = values[2];\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(quat.prototype, \"xyzw\", {\r\n get: function () {\r\n return [\r\n this.values[0],\r\n this.values[1],\r\n this.values[2],\r\n this.values[3],\r\n ];\r\n },\r\n set: function (values) {\r\n this.values[0] = values[0];\r\n this.values[1] = values[1];\r\n this.values[2] = values[2];\r\n this.values[3] = values[3];\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n quat.prototype.at = function (index) {\r\n return this.values[index];\r\n };\r\n quat.prototype.reset = function () {\r\n for (var i = 0; i < 4; i++) {\r\n this.values[i] = 0;\r\n }\r\n };\r\n quat.prototype.copy = function (dest) {\r\n if (!dest) {\r\n dest = new quat();\r\n }\r\n for (var i = 0; i < 4; i++) {\r\n dest.values[i] = this.values[i];\r\n }\r\n return dest;\r\n };\r\n quat.prototype.roll = function () {\r\n var x = this.x;\r\n var y = this.y;\r\n var z = this.z;\r\n var w = this.w;\r\n return Math.atan2(2.0 * (x * y + w * z), w * w + x * x - y * y - z * z);\r\n };\r\n quat.prototype.pitch = function () {\r\n var x = this.x;\r\n var y = this.y;\r\n var z = this.z;\r\n var w = this.w;\r\n return Math.atan2(2.0 * (y * z + w * x), w * w - x * x - y * y + z * z);\r\n };\r\n quat.prototype.yaw = function () {\r\n return Math.asin(2.0 * (this.x * this.z - this.w * this.y));\r\n };\r\n quat.prototype.equals = function (vector, threshold) {\r\n if (threshold === void 0) { threshold = epsilon; }\r\n for (var i = 0; i < 4; i++) {\r\n if (Math.abs(this.values[i] - vector.at(i)) > threshold) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n };\r\n quat.prototype.setIdentity = function () {\r\n this.x = 0;\r\n this.y = 0;\r\n this.z = 0;\r\n this.w = 1;\r\n return this;\r\n };\r\n quat.prototype.calculateW = function () {\r\n var x = this.x;\r\n var y = this.y;\r\n var z = this.z;\r\n this.w = -(Math.sqrt(Math.abs(1.0 - x * x - y * y - z * z)));\r\n return this;\r\n };\r\n quat.prototype.inverse = function () {\r\n var dot = quat.dot(this, this);\r\n if (!dot) {\r\n this.xyzw = [0, 0, 0, 0];\r\n return this;\r\n }\r\n var invDot = dot ? 1.0 / dot : 0;\r\n this.x *= -invDot;\r\n this.y *= -invDot;\r\n this.z *= -invDot;\r\n this.w *= invDot;\r\n return this;\r\n };\r\n quat.prototype.conjugate = function () {\r\n this.values[0] *= -1;\r\n this.values[1] *= -1;\r\n this.values[2] *= -1;\r\n return this;\r\n };\r\n quat.prototype.length = function () {\r\n var x = this.x;\r\n var y = this.y;\r\n var z = this.z;\r\n var w = this.w;\r\n return Math.sqrt(x * x + y * y + z * z + w * w);\r\n };\r\n quat.prototype.normalize = function (dest) {\r\n if (!dest) {\r\n dest = this;\r\n }\r\n var x = this.x;\r\n var y = this.y;\r\n var z = this.z;\r\n var w = this.w;\r\n var length = Math.sqrt(x * x + y * y + z * z + w * w);\r\n if (!length) {\r\n dest.x = 0;\r\n dest.y = 0;\r\n dest.z = 0;\r\n dest.w = 0;\r\n return dest;\r\n }\r\n length = 1 / length;\r\n dest.x = x * length;\r\n dest.y = y * length;\r\n dest.z = z * length;\r\n dest.w = w * length;\r\n return dest;\r\n };\r\n quat.prototype.add = function (other) {\r\n for (var i = 0; i < 4; i++) {\r\n this.values[i] += other.at(i);\r\n }\r\n return this;\r\n };\r\n quat.prototype.multiply = function (other) {\r\n var q1x = this.values[0];\r\n var q1y = this.values[1];\r\n var q1z = this.values[2];\r\n var q1w = this.values[3];\r\n var q2x = other.x;\r\n var q2y = other.y;\r\n var q2z = other.z;\r\n var q2w = other.w;\r\n this.x = q1x * q2w + q1w * q2x + q1y * q2z - q1z * q2y;\r\n this.y = q1y * q2w + q1w * q2y + q1z * q2x - q1x * q2z;\r\n this.z = q1z * q2w + q1w * q2z + q1x * q2y - q1y * q2x;\r\n this.w = q1w * q2w - q1x * q2x - q1y * q2y - q1z * q2z;\r\n return this;\r\n };\r\n quat.prototype.multiplyVec3 = function (vector, dest) {\r\n if (!dest) {\r\n dest = new vec3();\r\n }\r\n var x = vector.x;\r\n var y = vector.y;\r\n var z = vector.z;\r\n var qx = this.x;\r\n var qy = this.y;\r\n var qz = this.z;\r\n var qw = this.w;\r\n var ix = qw * x + qy * z - qz * y;\r\n var iy = qw * y + qz * x - qx * z;\r\n var iz = qw * z + qx * y - qy * x;\r\n var iw = -qx * x - qy * y - qz * z;\r\n dest.x = ix * qw + iw * -qx + iy * -qz - iz * -qy;\r\n dest.y = iy * qw + iw * -qy + iz * -qx - ix * -qz;\r\n dest.z = iz * qw + iw * -qz + ix * -qy - iy * -qx;\r\n return dest;\r\n };\r\n quat.prototype.toMat3 = function (dest) {\r\n if (!dest) {\r\n dest = new mat3();\r\n }\r\n var x = this.x;\r\n var y = this.y;\r\n var z = this.z;\r\n var w = this.w;\r\n var x2 = x + x;\r\n var y2 = y + y;\r\n var z2 = z + z;\r\n var xx = x * x2;\r\n var xy = x * y2;\r\n var xz = x * z2;\r\n var yy = y * y2;\r\n var yz = y * z2;\r\n var zz = z * z2;\r\n var wx = w * x2;\r\n var wy = w * y2;\r\n var wz = w * z2;\r\n dest.init([\r\n 1 - (yy + zz),\r\n xy + wz,\r\n xz - wy,\r\n xy - wz,\r\n 1 - (xx + zz),\r\n yz + wx,\r\n xz + wy,\r\n yz - wx,\r\n 1 - (xx + yy),\r\n ]);\r\n return dest;\r\n };\r\n quat.prototype.toMat4 = function (dest) {\r\n if (!dest) {\r\n dest = new mat4();\r\n }\r\n var x = this.x;\r\n var y = this.y;\r\n var z = this.z;\r\n var w = this.w;\r\n var x2 = x + x;\r\n var y2 = y + y;\r\n var z2 = z + z;\r\n var xx = x * x2;\r\n var xy = x * y2;\r\n var xz = x * z2;\r\n var yy = y * y2;\r\n var yz = y * z2;\r\n var zz = z * z2;\r\n var wx = w * x2;\r\n var wy = w * y2;\r\n var wz = w * z2;\r\n dest.init([\r\n 1 - (yy + zz),\r\n xy + wz,\r\n xz - wy,\r\n 0,\r\n xy - wz,\r\n 1 - (xx + zz),\r\n yz + wx,\r\n 0,\r\n xz + wy,\r\n yz - wx,\r\n 1 - (xx + yy),\r\n 0,\r\n 0,\r\n 0,\r\n 0,\r\n 1,\r\n ]);\r\n return dest;\r\n };\r\n quat.dot = function (q1, q2) {\r\n return q1.x * q2.x + q1.y * q2.y + q1.z * q2.z + q1.w * q2.w;\r\n };\r\n quat.sum = function (q1, q2, dest) {\r\n if (!dest) {\r\n dest = new quat();\r\n }\r\n dest.x = q1.x + q2.x;\r\n dest.y = q1.y + q2.y;\r\n dest.z = q1.z + q2.z;\r\n dest.w = q1.w + q2.w;\r\n return dest;\r\n };\r\n quat.product = function (q1, q2, dest) {\r\n if (!dest) {\r\n dest = new quat();\r\n }\r\n var q1x = q1.x;\r\n var q1y = q1.y;\r\n var q1z = q1.z;\r\n var q1w = q1.w;\r\n var q2x = q2.x;\r\n var q2y = q2.y;\r\n var q2z = q2.z;\r\n var q2w = q2.w;\r\n dest.x = q1x * q2w + q1w * q2x + q1y * q2z - q1z * q2y;\r\n dest.y = q1y * q2w + q1w * q2y + q1z * q2x - q1x * q2z;\r\n dest.z = q1z * q2w + q1w * q2z + q1x * q2y - q1y * q2x;\r\n dest.w = q1w * q2w - q1x * q2x - q1y * q2y - q1z * q2z;\r\n return dest;\r\n };\r\n quat.cross = function (q1, q2, dest) {\r\n if (!dest) {\r\n dest = new quat();\r\n }\r\n var q1x = q1.x;\r\n var q1y = q1.y;\r\n var q1z = q1.z;\r\n var q1w = q1.w;\r\n var q2x = q2.x;\r\n var q2y = q2.y;\r\n var q2z = q2.z;\r\n var q2w = q2.w;\r\n dest.x = q1w * q2z + q1z * q2w + q1x * q2y - q1y * q2x;\r\n dest.y = q1w * q2w - q1x * q2x - q1y * q2y - q1z * q2z;\r\n dest.z = q1w * q2x + q1x * q2w + q1y * q2z - q1z * q2y;\r\n dest.w = q1w * q2y + q1y * q2w + q1z * q2x - q1x * q2z;\r\n return dest;\r\n };\r\n quat.shortMix = function (q1, q2, time, dest) {\r\n if (!dest) {\r\n dest = new quat();\r\n }\r\n if (time <= 0.0) {\r\n dest.xyzw = q1.xyzw;\r\n return dest;\r\n }\r\n else if (time >= 1.0) {\r\n dest.xyzw = q2.xyzw;\r\n return dest;\r\n }\r\n var cos = quat.dot(q1, q2);\r\n var q2a = q2.copy();\r\n if (cos < 0.0) {\r\n q2a.inverse();\r\n cos = -cos;\r\n }\r\n var k0;\r\n var k1;\r\n if (cos > 0.9999) {\r\n k0 = 1 - time;\r\n k1 = 0 + time;\r\n }\r\n else {\r\n var sin = Math.sqrt(1 - cos * cos);\r\n var angle = Math.atan2(sin, cos);\r\n var oneOverSin = 1 / sin;\r\n k0 = Math.sin((1 - time) * angle) * oneOverSin;\r\n k1 = Math.sin((0 + time) * angle) * oneOverSin;\r\n }\r\n dest.x = k0 * q1.x + k1 * q2a.x;\r\n dest.y = k0 * q1.y + k1 * q2a.y;\r\n dest.z = k0 * q1.z + k1 * q2a.z;\r\n dest.w = k0 * q1.w + k1 * q2a.w;\r\n return dest;\r\n };\r\n quat.mix = function (q1, q2, time, dest) {\r\n if (!dest) {\r\n dest = new quat();\r\n }\r\n var cosHalfTheta = q1.x * q2.x + q1.y * q2.y + q1.z * q2.z + q1.w * q2.w;\r\n if (Math.abs(cosHalfTheta) >= 1.0) {\r\n dest.xyzw = q1.xyzw;\r\n return dest;\r\n }\r\n var halfTheta = Math.acos(cosHalfTheta);\r\n var sinHalfTheta = Math.sqrt(1.0 - cosHalfTheta * cosHalfTheta);\r\n if (Math.abs(sinHalfTheta) < 0.001) {\r\n dest.x = q1.x * 0.5 + q2.x * 0.5;\r\n dest.y = q1.y * 0.5 + q2.y * 0.5;\r\n dest.z = q1.z * 0.5 + q2.z * 0.5;\r\n dest.w = q1.w * 0.5 + q2.w * 0.5;\r\n return dest;\r\n }\r\n var ratioA = Math.sin((1 - time) * halfTheta) / sinHalfTheta;\r\n var ratioB = Math.sin(time * halfTheta) / sinHalfTheta;\r\n dest.x = q1.x * ratioA + q2.x * ratioB;\r\n dest.y = q1.y * ratioA + q2.y * ratioB;\r\n dest.z = q1.z * ratioA + q2.z * ratioB;\r\n dest.w = q1.w * ratioA + q2.w * ratioB;\r\n return dest;\r\n };\r\n quat.fromAxisAngle = function (axis, angle, dest) {\r\n if (!dest) {\r\n dest = new quat();\r\n }\r\n angle *= 0.5;\r\n var sin = Math.sin(angle);\r\n dest.x = axis.x * sin;\r\n dest.y = axis.y * sin;\r\n dest.z = axis.z * sin;\r\n dest.w = Math.cos(angle);\r\n return dest;\r\n };\r\n quat.identity = new quat().setIdentity();\r\n return quat;\r\n}());\n\nvar vec3 = /** @class */ (function () {\r\n function vec3(values) {\r\n this.values = new Float32Array(3);\r\n if (values !== undefined) {\r\n this.xyz = values;\r\n }\r\n }\r\n Object.defineProperty(vec3.prototype, \"x\", {\r\n get: function () {\r\n return this.values[0];\r\n },\r\n set: function (value) {\r\n this.values[0] = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(vec3.prototype, \"y\", {\r\n get: function () {\r\n return this.values[1];\r\n },\r\n set: function (value) {\r\n this.values[1] = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(vec3.prototype, \"z\", {\r\n get: function () {\r\n return this.values[2];\r\n },\r\n set: function (value) {\r\n this.values[2] = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(vec3.prototype, \"xy\", {\r\n get: function () {\r\n return [\r\n this.values[0],\r\n this.values[1],\r\n ];\r\n },\r\n set: function (values) {\r\n this.values[0] = values[0];\r\n this.values[1] = values[1];\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(vec3.prototype, \"xyz\", {\r\n get: function () {\r\n return [\r\n this.values[0],\r\n this.values[1],\r\n this.values[2],\r\n ];\r\n },\r\n set: function (values) {\r\n this.values[0] = values[0];\r\n this.values[1] = values[1];\r\n this.values[2] = values[2];\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n vec3.prototype.at = function (index) {\r\n return this.values[index];\r\n };\r\n vec3.prototype.reset = function () {\r\n this.x = 0;\r\n this.y = 0;\r\n this.z = 0;\r\n };\r\n vec3.prototype.copy = function (dest) {\r\n if (!dest) {\r\n dest = new vec3();\r\n }\r\n dest.x = this.x;\r\n dest.y = this.y;\r\n dest.z = this.z;\r\n return dest;\r\n };\r\n vec3.prototype.negate = function (dest) {\r\n if (!dest) {\r\n dest = this;\r\n }\r\n dest.x = -this.x;\r\n dest.y = -this.y;\r\n dest.z = -this.z;\r\n return dest;\r\n };\r\n vec3.prototype.equals = function (vector, threshold) {\r\n if (threshold === void 0) { threshold = epsilon; }\r\n if (Math.abs(this.x - vector.x) > threshold) {\r\n return false;\r\n }\r\n if (Math.abs(this.y - vector.y) > threshold) {\r\n return false;\r\n }\r\n if (Math.abs(this.z - vector.z) > threshold) {\r\n return false;\r\n }\r\n return true;\r\n };\r\n vec3.prototype.length = function () {\r\n return Math.sqrt(this.squaredLength());\r\n };\r\n vec3.prototype.squaredLength = function () {\r\n var x = this.x;\r\n var y = this.y;\r\n var z = this.z;\r\n return (x * x + y * y + z * z);\r\n };\r\n vec3.prototype.add = function (vector) {\r\n this.x += vector.x;\r\n this.y += vector.y;\r\n this.z += vector.z;\r\n return this;\r\n };\r\n vec3.prototype.subtract = function (vector) {\r\n this.x -= vector.x;\r\n this.y -= vector.y;\r\n this.z -= vector.z;\r\n return this;\r\n };\r\n vec3.prototype.multiply = function (vector) {\r\n this.x *= vector.x;\r\n this.y *= vector.y;\r\n this.z *= vector.z;\r\n return this;\r\n };\r\n vec3.prototype.divide = function (vector) {\r\n this.x /= vector.x;\r\n this.y /= vector.y;\r\n this.z /= vector.z;\r\n return this;\r\n };\r\n vec3.prototype.scale = function (value, dest) {\r\n if (!dest) {\r\n dest = this;\r\n }\r\n dest.x *= value;\r\n dest.y *= value;\r\n dest.z *= value;\r\n return dest;\r\n };\r\n vec3.prototype.normalize = function (dest) {\r\n if (!dest) {\r\n dest = this;\r\n }\r\n var length = this.length();\r\n if (length === 1) {\r\n return this;\r\n }\r\n if (length === 0) {\r\n dest.x = 0;\r\n dest.y = 0;\r\n dest.z = 0;\r\n return dest;\r\n }\r\n length = 1.0 / length;\r\n dest.x *= length;\r\n dest.y *= length;\r\n dest.z *= length;\r\n return dest;\r\n };\r\n vec3.prototype.multiplyByMat3 = function (matrix, dest) {\r\n if (!dest) {\r\n dest = this;\r\n }\r\n return matrix.multiplyVec3(this, dest);\r\n };\r\n vec3.prototype.multiplyByQuat = function (quaternion, dest) {\r\n if (!dest) {\r\n dest = this;\r\n }\r\n return quaternion.multiplyVec3(this, dest);\r\n };\r\n vec3.prototype.toQuat = function (dest) {\r\n if (!dest) {\r\n dest = new quat();\r\n }\r\n var c = new vec3();\r\n var s = new vec3();\r\n c.x = Math.cos(this.x * 0.5);\r\n s.x = Math.sin(this.x * 0.5);\r\n c.y = Math.cos(this.y * 0.5);\r\n s.y = Math.sin(this.y * 0.5);\r\n c.z = Math.cos(this.z * 0.5);\r\n s.z = Math.sin(this.z * 0.5);\r\n dest.x = s.x * c.y * c.z - c.x * s.y * s.z;\r\n dest.y = c.x * s.y * c.z + s.x * c.y * s.z;\r\n dest.z = c.x * c.y * s.z - s.x * s.y * c.z;\r\n dest.w = c.x * c.y * c.z + s.x * s.y * s.z;\r\n return dest;\r\n };\r\n vec3.cross = function (vector, vector2, dest) {\r\n if (!dest) {\r\n dest = new vec3();\r\n }\r\n var x = vector.x;\r\n var y = vector.y;\r\n var z = vector.z;\r\n var x2 = vector2.x;\r\n var y2 = vector2.y;\r\n var z2 = vector2.z;\r\n dest.x = y * z2 - z * y2;\r\n dest.y = z * x2 - x * z2;\r\n dest.z = x * y2 - y * x2;\r\n return dest;\r\n };\r\n vec3.dot = function (vector, vector2) {\r\n var x = vector.x;\r\n var y = vector.y;\r\n var z = vector.z;\r\n var x2 = vector2.x;\r\n var y2 = vector2.y;\r\n var z2 = vector2.z;\r\n return (x * x2 + y * y2 + z * z2);\r\n };\r\n vec3.distance = function (vector, vector2) {\r\n var x = vector2.x - vector.x;\r\n var y = vector2.y - vector.y;\r\n var z = vector2.z - vector.z;\r\n return Math.sqrt(this.squaredDistance(vector, vector2));\r\n };\r\n vec3.squaredDistance = function (vector, vector2) {\r\n var x = vector2.x - vector.x;\r\n var y = vector2.y - vector.y;\r\n var z = vector2.z - vector.z;\r\n return (x * x + y * y + z * z);\r\n };\r\n vec3.direction = function (vector, vector2, dest) {\r\n if (!dest) {\r\n dest = new vec3();\r\n }\r\n var x = vector.x - vector2.x;\r\n var y = vector.y - vector2.y;\r\n var z = vector.z - vector2.z;\r\n var length = Math.sqrt(x * x + y * y + z * z);\r\n if (length === 0) {\r\n dest.x = 0;\r\n dest.y = 0;\r\n dest.z = 0;\r\n return dest;\r\n }\r\n length = 1 / length;\r\n dest.x = x * length;\r\n dest.y = y * length;\r\n dest.z = z * length;\r\n return dest;\r\n };\r\n vec3.mix = function (vector, vector2, time, dest) {\r\n if (!dest) {\r\n dest = new vec3();\r\n }\r\n dest.x = vector.x + time * (vector2.x - vector.x);\r\n dest.y = vector.y + time * (vector2.y - vector.y);\r\n dest.z = vector.z + time * (vector2.z - vector.z);\r\n return dest;\r\n };\r\n vec3.sum = function (vector, vector2, dest) {\r\n if (!dest) {\r\n dest = new vec3();\r\n }\r\n dest.x = vector.x + vector2.x;\r\n dest.y = vector.y + vector2.y;\r\n dest.z = vector.z + vector2.z;\r\n return dest;\r\n };\r\n vec3.difference = function (vector, vector2, dest) {\r\n if (!dest) {\r\n dest = new vec3();\r\n }\r\n dest.x = vector.x - vector2.x;\r\n dest.y = vector.y - vector2.y;\r\n dest.z = vector.z - vector2.z;\r\n return dest;\r\n };\r\n vec3.product = function (vector, vector2, dest) {\r\n if (!dest) {\r\n dest = new vec3();\r\n }\r\n dest.x = vector.x * vector2.x;\r\n dest.y = vector.y * vector2.y;\r\n dest.z = vector.z * vector2.z;\r\n return dest;\r\n };\r\n vec3.quotient = function (vector, vector2, dest) {\r\n if (!dest) {\r\n dest = new vec3();\r\n }\r\n dest.x = vector.x / vector2.x;\r\n dest.y = vector.y / vector2.y;\r\n dest.z = vector.z / vector2.z;\r\n return dest;\r\n };\r\n vec3.zero = new vec3([0, 0, 0]);\r\n vec3.one = new vec3([1, 1, 1]);\r\n vec3.up = new vec3([0, 1, 0]);\r\n vec3.right = new vec3([1, 0, 0]);\r\n vec3.forward = new vec3([0, 0, 1]);\r\n return vec3;\r\n}());\n\nvar vec2 = /** @class */ (function () {\r\n function vec2(values) {\r\n this.values = new Float32Array(2);\r\n if (values !== undefined) {\r\n this.xy = values;\r\n }\r\n }\r\n Object.defineProperty(vec2.prototype, \"x\", {\r\n get: function () {\r\n return this.values[0];\r\n },\r\n set: function (value) {\r\n this.values[0] = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(vec2.prototype, \"y\", {\r\n get: function () {\r\n return this.values[1];\r\n },\r\n set: function (value) {\r\n this.values[1] = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(vec2.prototype, \"xy\", {\r\n get: function () {\r\n return [\r\n this.values[0],\r\n this.values[1],\r\n ];\r\n },\r\n set: function (values) {\r\n this.values[0] = values[0];\r\n this.values[1] = values[1];\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n vec2.prototype.at = function (index) {\r\n return this.values[index];\r\n };\r\n vec2.prototype.reset = function () {\r\n this.x = 0;\r\n this.y = 0;\r\n };\r\n vec2.prototype.copy = function (dest) {\r\n if (!dest) {\r\n dest = new vec2();\r\n }\r\n dest.x = this.x;\r\n dest.y = this.y;\r\n return dest;\r\n };\r\n vec2.prototype.negate = function (dest) {\r\n if (!dest) {\r\n dest = this;\r\n }\r\n dest.x = -this.x;\r\n dest.y = -this.y;\r\n return dest;\r\n };\r\n vec2.prototype.equals = function (vector, threshold) {\r\n if (threshold === void 0) { threshold = epsilon; }\r\n if (Math.abs(this.x - vector.x) > threshold) {\r\n return false;\r\n }\r\n if (Math.abs(this.y - vector.y) > threshold) {\r\n return false;\r\n }\r\n return true;\r\n };\r\n vec2.prototype.length = function () {\r\n return Math.sqrt(this.squaredLength());\r\n };\r\n vec2.prototype.squaredLength = function () {\r\n var x = this.x;\r\n var y = this.y;\r\n return (x * x + y * y);\r\n };\r\n vec2.prototype.add = function (vector) {\r\n this.x += vector.x;\r\n this.y += vector.y;\r\n return this;\r\n };\r\n vec2.prototype.subtract = function (vector) {\r\n this.x -= vector.x;\r\n this.y -= vector.y;\r\n return this;\r\n };\r\n vec2.prototype.multiply = function (vector) {\r\n this.x *= vector.x;\r\n this.y *= vector.y;\r\n return this;\r\n };\r\n vec2.prototype.divide = function (vector) {\r\n this.x /= vector.x;\r\n this.y /= vector.y;\r\n return this;\r\n };\r\n vec2.prototype.scale = function (value, dest) {\r\n if (!dest) {\r\n dest = this;\r\n }\r\n dest.x *= value;\r\n dest.y *= value;\r\n return dest;\r\n };\r\n vec2.prototype.normalize = function (dest) {\r\n if (!dest) {\r\n dest = this;\r\n }\r\n var length = this.length();\r\n if (length === 1) {\r\n return this;\r\n }\r\n if (length === 0) {\r\n dest.x = 0;\r\n dest.y = 0;\r\n return dest;\r\n }\r\n length = 1.0 / length;\r\n dest.x *= length;\r\n dest.y *= length;\r\n return dest;\r\n };\r\n vec2.prototype.multiplyMat2 = function (matrix, dest) {\r\n if (!dest) {\r\n dest = this;\r\n }\r\n return matrix.multiplyVec2(this, dest);\r\n };\r\n vec2.prototype.multiplyMat3 = function (matrix, dest) {\r\n if (!dest) {\r\n dest = this;\r\n }\r\n return matrix.multiplyVec2(this, dest);\r\n };\r\n vec2.cross = function (vector, vector2, dest) {\r\n if (!dest) {\r\n dest = new vec3();\r\n }\r\n var x = vector.x;\r\n var y = vector.y;\r\n var x2 = vector2.x;\r\n var y2 = vector2.y;\r\n var z = x * y2 - y * x2;\r\n dest.x = 0;\r\n dest.y = 0;\r\n dest.z = z;\r\n return dest;\r\n };\r\n vec2.dot = function (vector, vector2) {\r\n return (vector.x * vector2.x + vector.y * vector2.y);\r\n };\r\n vec2.distance = function (vector, vector2) {\r\n return Math.sqrt(this.squaredDistance(vector, vector2));\r\n };\r\n vec2.squaredDistance = function (vector, vector2) {\r\n var x = vector2.x - vector.x;\r\n var y = vector2.y - vector.y;\r\n return (x * x + y * y);\r\n };\r\n vec2.direction = function (vector, vector2, dest) {\r\n if (!dest) {\r\n dest = new vec2();\r\n }\r\n var x = vector.x - vector2.x;\r\n var y = vector.y - vector2.y;\r\n var length = Math.sqrt(x * x + y * y);\r\n if (length === 0) {\r\n dest.x = 0;\r\n dest.y = 0;\r\n return dest;\r\n }\r\n length = 1 / length;\r\n dest.x = x * length;\r\n dest.y = y * length;\r\n return dest;\r\n };\r\n vec2.mix = function (vector, vector2, time, dest) {\r\n if (!dest) {\r\n dest = new vec2();\r\n }\r\n var x = vector.x;\r\n var y = vector.y;\r\n var x2 = vector2.x;\r\n var y2 = vector2.y;\r\n dest.x = x + time * (x2 - x);\r\n dest.y = y + time * (y2 - y);\r\n return dest;\r\n };\r\n vec2.sum = function (vector, vector2, dest) {\r\n if (!dest) {\r\n dest = new vec2();\r\n }\r\n dest.x = vector.x + vector2.x;\r\n dest.y = vector.y + vector2.y;\r\n return dest;\r\n };\r\n vec2.difference = function (vector, vector2, dest) {\r\n if (!dest) {\r\n dest = new vec2();\r\n }\r\n dest.x = vector.x - vector2.x;\r\n dest.y = vector.y - vector2.y;\r\n return dest;\r\n };\r\n vec2.product = function (vector, vector2, dest) {\r\n if (!dest) {\r\n dest = new vec2();\r\n }\r\n dest.x = vector.x * vector2.x;\r\n dest.y = vector.y * vector2.y;\r\n return dest;\r\n };\r\n vec2.quotient = function (vector, vector2, dest) {\r\n if (!dest) {\r\n dest = new vec2();\r\n }\r\n dest.x = vector.x / vector2.x;\r\n dest.y = vector.y / vector2.y;\r\n return dest;\r\n };\r\n vec2.zero = new vec2([0, 0]);\r\n vec2.one = new vec2([1, 1]);\r\n return vec2;\r\n}());\n\nvar mat2 = /** @class */ (function () {\r\n function mat2(values) {\r\n this.values = new Float32Array(4);\r\n if (values !== undefined) {\r\n this.init(values);\r\n }\r\n }\r\n mat2.prototype.at = function (index) {\r\n return this.values[index];\r\n };\r\n mat2.prototype.init = function (values) {\r\n for (var i = 0; i < 4; i++) {\r\n this.values[i] = values[i];\r\n }\r\n return this;\r\n };\r\n mat2.prototype.reset = function () {\r\n for (var i = 0; i < 4; i++) {\r\n this.values[i] = 0;\r\n }\r\n };\r\n mat2.prototype.copy = function (dest) {\r\n if (!dest) {\r\n dest = new mat2();\r\n }\r\n for (var i = 0; i < 4; i++) {\r\n dest.values[i] = this.values[i];\r\n }\r\n return dest;\r\n };\r\n mat2.prototype.all = function () {\r\n var data = [];\r\n for (var i = 0; i < 4; i++) {\r\n data[i] = this.values[i];\r\n }\r\n return data;\r\n };\r\n mat2.prototype.row = function (index) {\r\n return [\r\n this.values[index * 2 + 0],\r\n this.values[index * 2 + 1],\r\n ];\r\n };\r\n mat2.prototype.col = function (index) {\r\n return [\r\n this.values[index],\r\n this.values[index + 2],\r\n ];\r\n };\r\n mat2.prototype.equals = function (matrix, threshold) {\r\n if (threshold === void 0) { threshold = epsilon; }\r\n for (var i = 0; i < 4; i++) {\r\n if (Math.abs(this.values[i] - matrix.at(i)) > threshold) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n };\r\n mat2.prototype.determinant = function () {\r\n return this.values[0] * this.values[3] - this.values[2] * this.values[1];\r\n };\r\n mat2.prototype.setIdentity = function () {\r\n this.values[0] = 1;\r\n this.values[1] = 0;\r\n this.values[2] = 0;\r\n this.values[3] = 1;\r\n return this;\r\n };\r\n mat2.prototype.transpose = function () {\r\n var temp = this.values[1];\r\n this.values[1] = this.values[2];\r\n this.values[2] = temp;\r\n return this;\r\n };\r\n mat2.prototype.inverse = function () {\r\n var det = this.determinant();\r\n if (!det) {\r\n return null;\r\n }\r\n det = 1.0 / det;\r\n var a11 = this.values[0];\r\n this.values[0] = det * (this.values[3]);\r\n this.values[1] = det * (-this.values[1]);\r\n this.values[2] = det * (-this.values[2]);\r\n this.values[3] = det * a11;\r\n return this;\r\n };\r\n mat2.prototype.multiply = function (matrix) {\r\n var a11 = this.values[0];\r\n var a12 = this.values[1];\r\n var a21 = this.values[2];\r\n var a22 = this.values[3];\r\n this.values[0] = a11 * matrix.at(0) + a12 * matrix.at(2);\r\n this.values[1] = a11 * matrix.at(1) + a12 * matrix.at(3);\r\n this.values[2] = a21 * matrix.at(0) + a22 * matrix.at(2);\r\n this.values[3] = a21 * matrix.at(1) + a22 * matrix.at(3);\r\n return this;\r\n };\r\n mat2.prototype.rotate = function (angle) {\r\n var a11 = this.values[0];\r\n var a12 = this.values[1];\r\n var a21 = this.values[2];\r\n var a22 = this.values[3];\r\n var sin = Math.sin(angle);\r\n var cos = Math.cos(angle);\r\n this.values[0] = a11 * cos + a12 * sin;\r\n this.values[1] = a11 * -sin + a12 * cos;\r\n this.values[2] = a21 * cos + a22 * sin;\r\n this.values[3] = a21 * -sin + a22 * cos;\r\n return this;\r\n };\r\n mat2.prototype.multiplyVec2 = function (vector, result) {\r\n var x = vector.x;\r\n var y = vector.y;\r\n if (result) {\r\n result.xy = [\r\n x * this.values[0] + y * this.values[1],\r\n x * this.values[2] + y * this.values[3],\r\n ];\r\n return result;\r\n }\r\n else {\r\n return new vec2([\r\n x * this.values[0] + y * this.values[1],\r\n x * this.values[2] + y * this.values[3],\r\n ]);\r\n }\r\n };\r\n mat2.prototype.scale = function (vector) {\r\n var a11 = this.values[0];\r\n var a12 = this.values[1];\r\n var a21 = this.values[2];\r\n var a22 = this.values[3];\r\n var x = vector.x;\r\n var y = vector.y;\r\n this.values[0] = a11 * x;\r\n this.values[1] = a12 * y;\r\n this.values[2] = a21 * x;\r\n this.values[3] = a22 * y;\r\n return this;\r\n };\r\n mat2.product = function (m1, m2, result) {\r\n var a11 = m1.at(0);\r\n var a12 = m1.at(1);\r\n var a21 = m1.at(2);\r\n var a22 = m1.at(3);\r\n if (result) {\r\n result.init([\r\n a11 * m2.at(0) + a12 * m2.at(2),\r\n a11 * m2.at(1) + a12 * m2.at(3),\r\n a21 * m2.at(0) + a22 * m2.at(2),\r\n a21 * m2.at(1) + a22 * m2.at(3),\r\n ]);\r\n return result;\r\n }\r\n else {\r\n return new mat2([\r\n a11 * m2.at(0) + a12 * m2.at(2),\r\n a11 * m2.at(1) + a12 * m2.at(3),\r\n a21 * m2.at(0) + a22 * m2.at(2),\r\n a21 * m2.at(1) + a22 * m2.at(3),\r\n ]);\r\n }\r\n };\r\n mat2.identity = new mat2().setIdentity();\r\n return mat2;\r\n}());\n\nvar index = { mat2: mat2, mat3: mat3, mat4: mat4, quat: quat, vec2: vec2, vec3: vec3, vec4: vec4 };\n\nexport default index;\nexport { mat2, mat3, mat4, quat, vec2, vec3, vec4 };\n"],"names":["vec4","values","this","Float32Array","undefined","xyzw","Object","defineProperty","prototype","get","set","value","enumerable","configurable","at","index","reset","x","y","z","w","copy","dest","negate","equals","vector","threshold","Math","abs","length","sqrt","squaredLength","add","subtract","multiply","divide","scale","normalize","multiplyMat4","matrix","multiplyVec4","mix","vector2","time","sum","difference","product","quotient","zero","one","mat4","init","i","all","data","row","col","determinant","a00","a01","a02","a03","a10","a11","a12","a13","a20","a21","a22","a23","a30","a31","a32","a33","setIdentity","transpose","temp01","temp02","temp03","temp12","temp13","temp23","inverse","det00","det01","det02","det03","det04","det05","det06","det07","det08","det09","det10","det11","det","b0","b1","b2","b3","multiplyVec3","vec3","toMat3","mat3","toInverseMat3","det21","translate","rotate","angle","axis","s","sin","c","cos","t","b00","b01","b02","b10","b11","b12","b20","b21","b22","frustum","left","right","bottom","top","near","far","rl","tb","fn","perspective","fov","aspect","tan","PI","orthographic","lookAt","position","target","up","identity","cross","dot","m1","m2","result","b03","b13","b23","b30","b31","b32","b33","multiplyVec2","xy","vec2","xyz","toMat4","toQuat","m00","m01","m02","m10","m11","m12","m20","m21","m22","fourXSquaredMinus1","fourYSquaredMinus1","fourZSquaredMinus1","biggestIndex","fourBiggestSquaredMinus1","biggestVal","mult","quat","roll","atan2","pitch","yaw","asin","calculateW","invDot","conjugate","other","q1x","q1y","q1z","q1w","q2x","q2y","q2z","q2w","qx","qy","qz","qw","ix","iy","iz","iw","x2","y2","z2","xx","xz","yy","yz","zz","wx","wy","wz","q1","q2","shortMix","k0","k1","q2a","oneOverSin","cosHalfTheta","halfTheta","acos","sinHalfTheta","ratioA","ratioB","fromAxisAngle","multiplyByMat3","multiplyByQuat","quaternion","distance","squaredDistance","direction","forward","multiplyMat2","multiplyMat3","mat2","temp"],"mappings":"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"}
\ No newline at end of file
diff --git a/gulpfile.js b/gulpfile.js
deleted file mode 100644
index 586d24d..0000000
--- a/gulpfile.js
+++ /dev/null
@@ -1,62 +0,0 @@
-var gulp = require("gulp");
-var typescript = require("gulp-typescript");
-var concat = require("gulp-concat");
-var open = require("open");
-var StaticServer = require('static-server');
-var addsrc = require('gulp-add-src');
-var runsequence = require("run-sequence");
-var fs = require("fs");
-
-
-gulp.task("build", function () {
- runsequence("build-files", "remove-internal-classes")
-});
-
-gulp.task("build-files", function () {
- var tsResult = gulp.src(["./SpriteGL/*.ts", "./3rd/tsm-0.7.d.ts"])
- .pipe(typescript({ sortOutput: true, target: "ES5", removeComments: true, declarationFiles: true }));
-
- tsResult.dts
- .pipe(concat("SpriteGL.d.ts"))
- .pipe(gulp.dest("./bin"));
-
- tsResult.js
- .pipe(addsrc("./3rd/tsm-0.7.js"))
- .pipe(concat("SpriteGL.js"))
- .pipe(gulp.dest("./bin"));
-});
-
-gulp.task("debug", function () {
- gulp.src("./bin/SpriteGL.js")
- .pipe(gulp.dest("./Example"));
-
- var tsResult = gulp.src(["./Example/*.ts", "./bin/SpriteGL.d.ts"])
- .pipe(typescript({ target: "ES5" }))
- .pipe(gulp.dest("./Example"));
-
- var server = new StaticServer({ rootPath: './Example', port: 80, host: 'localhost' });
-
- server.start(function () {
- console.log('Server listening to', server.port);
- open("http://localhost")
- });
-})
-
-gulp.task("remove-internal-classes", function () {
- setTimeout(function () {
- var data = fs.readFileSync('./bin/SpriteGL.d.ts').toString();
- var start = data.indexOf("class SpriteRenderer {", 0);
- var end = data.indexOf("}", start+1);
- var new_string = data.substring(start, end + 1);
- var lines = new_string.split("\n");
- for (var i = 0; i < lines.length; i++) {
- if (lines[i].indexOf("private") !== -1) {
- lines.splice(i, 1);
- i--;
- }
- }
- new_string = lines.join("\n");
- fs.writeFileSync('./bin/SpriteGL.d.ts',"declare module SpriteGL { \n" + new_string + "\n }");
- }, 1000);
-
-});
diff --git a/package.json b/package.json
index 86d9775..f1aee4b 100644
--- a/package.json
+++ b/package.json
@@ -1,21 +1,28 @@
{
"name": "SpriteGL",
- "version": "0.0.0",
+ "version": "0.1.0",
"description": "Easy and fast sprite rendereing",
- "main": "none",
+ "cdn": "dist/SpriteGL.min.js",
+ "main": "dist/SpriteGL.cjs.js",
+ "types": "types/index.d.ts",
+ "unpkg": "dist/SpriteGL.min.js",
+ "module": "dist/SpriteGL.es.js",
+ "jsdelivr": "dist/SpriteGL.min.js",
+ "umd:main": "dist/SpriteGL.js",
"scripts": {
- "test": "echo \"Error: no test specified\" && exit 1"
+ "test": "echo \"Error: no test specified\" && exit 1",
+ "start": "parcel demo/index.html --out-dir demo/dist",
+ "build": "bili"
},
"author": "",
"license": "ISC",
"devDependencies": {
- "gulp": "^3.8.10",
- "gulp-add-src": "^0.2.0",
- "gulp-concat": "^2.4.2",
- "gulp-rename": "^1.2.0",
- "gulp-typescript": "^2.3.0",
- "open": "0.0.5",
- "run-sequence": "^1.0.2",
- "static-server": "^2.0.0"
+ "bili": "^3.1.2",
+ "parcel-bundler": "^1.10.2",
+ "rollup-plugin-typescript2": "^0.17.1",
+ "typescript": "^3.1.2"
+ },
+ "dependencies": {
+ "tsm": "https://github.com/VitorluizC/tsm"
}
}
diff --git a/src/Shader.ts b/src/Shader.ts
new file mode 100644
index 0000000..2b1be8f
--- /dev/null
+++ b/src/Shader.ts
@@ -0,0 +1,79 @@
+import * as TSM from "tsm";
+
+export default class Shader {
+ glProgram: WebGLProgram;
+ VertexPosAttribute: number;
+ TexCoordAttribute: number;
+ private TexSampleUniform: WebGLUniformLocation;
+ private MatUniform: WebGLUniformLocation;
+ private CameraPosUniform: WebGLUniformLocation;
+ private gl: WebGLRenderingContext = null;
+
+ constructor(gl: WebGLRenderingContext) {
+ this.gl = gl;
+ this.glProgram = this.MakeProgram(gl);
+ this.VertexPosAttribute = gl.getAttribLocation(this.glProgram, "aVertexPosition");
+ this.TexCoordAttribute = gl.getAttribLocation(this.glProgram, "aTexCoord");
+ this.TexSampleUniform = gl.getUniformLocation(this.glProgram, "sampler2d");
+ this.MatUniform = gl.getUniformLocation(this.glProgram, "uProjectionView");
+ this.CameraPosUniform = gl.getUniformLocation(this.glProgram, "uCameraPos");
+ }
+
+ public UseProgram() {
+ this.gl.useProgram(this.glProgram);
+ this.gl.uniform1i(this.TexSampleUniform, 0);
+ }
+
+ public UpdatePosition(x: number, y: number) {
+ this.gl.uniform2f(this.CameraPosUniform, x, y);
+ }
+
+ private MakeProgram(gl: WebGLRenderingContext): WebGLProgram {
+ var vertexShader = this.CompileShader(gl, Shader.defaultVertexShaderSrc, gl.VERTEX_SHADER);
+ var fragmentShader = this.CompileShader(gl, Shader.defaultFragmentShaderSrc, gl.FRAGMENT_SHADER);
+
+ var glProgram = gl.createProgram();
+ gl.attachShader(glProgram, vertexShader);
+ gl.attachShader(glProgram, fragmentShader);
+ gl.linkProgram(glProgram);
+
+ return glProgram;
+ }
+
+ private CompileShader(gl: WebGLRenderingContext, src: string, type) {
+ var Shader = gl.createShader(type);
+ gl.shaderSource(Shader, src);
+ gl.compileShader(Shader);
+
+ if (!gl.getShaderParameter(Shader, gl.COMPILE_STATUS)) {
+ alert(gl.getShaderInfoLog(Shader));
+ }
+ return Shader;
+ }
+
+ public updateMatrix(mat: TSM.mat4) {
+ this.gl.uniformMatrix4fv(this.MatUniform, false, mat.all());
+ }
+
+ private static defaultVertexShaderSrc = `
+ attribute vec3 aVertexPosition;
+ attribute vec2 aTexCoord;
+ uniform mat4 uProjectionView;
+ uniform vec2 uCameraPos;
+ varying vec2 vtexCoord;
+ void main(void) {
+ vtexCoord = aTexCoord;
+ gl_Position = vec4(aVertexPosition.x - uCameraPos.x, aVertexPosition.y - uCameraPos.y, aVertexPosition.z, 1.0) * uProjectionView;
+ }
+ `;
+
+ private static defaultFragmentShaderSrc = `
+ precision mediump float;
+ uniform sampler2D sampler2d;
+ varying vec2 vtexCoord;
+ void main(void) {
+ gl_FragColor = texture2D(sampler2d, vec2(vtexCoord.s,vtexCoord.t));
+ if(gl_FragColor.a < 0.5) discard;
+ }
+ `;
+}
diff --git a/src/SpriteRenderer.ts b/src/SpriteRenderer.ts
new file mode 100644
index 0000000..17cdb34
--- /dev/null
+++ b/src/SpriteRenderer.ts
@@ -0,0 +1,97 @@
+import * as TSM from "tsm";
+import VBO from "./VBO";
+import Shader from "./Shader";
+import TextDrawer from "./TextDrawer";
+
+export default class SpriteRenderer {
+ private gl: WebGLRenderingContext;
+ private Shader: Shader;
+ private vbo: VBO;
+ private texture: WebGLTexture;
+ private SpriteSize: number;
+ private Text: TextDrawer;
+
+ constructor(webglContext: WebGLRenderingContext, Image: HTMLImageElement, Filtering = SpriteRenderer.TextureFilteringLinear) {
+ this.gl = webglContext;
+ this.vbo = new VBO(this.gl);
+ this.Shader = new Shader(this.gl);
+ this.Text = new TextDrawer(this.gl);
+ this.Shader.UseProgram();
+ this.CreateTexture(Image, Filtering);
+ this.vbo.SetupForDraw(this.Shader.VertexPosAttribute, this.Shader.TexCoordAttribute, Image.width);
+
+ this.gl.clearColor(0.0, 0.0, 0.0, 1.0);
+ this.gl.blendFunc(this.gl.SRC_ALPHA, this.gl.ONE_MINUS_SRC_ALPHA);
+ this.gl.enable(this.gl.BLEND);
+ this.SetHight(0.0);
+ this.gl.enable(this.gl.DEPTH_TEST);
+ this.gl.depthFunc(this.gl.LEQUAL);
+ }
+
+ RenderAll() {
+ this.gl.clear(this.gl.COLOR_BUFFER_BIT);
+ this.gl.bindTexture(this.gl.TEXTURE_2D, this.texture);
+ this.vbo.RenderAllSpr();
+ this.gl.bindTexture(this.gl.TEXTURE_2D, this.Text.texture);
+ this.vbo.RenderAllTxt();
+ }
+
+ UpdateViewPort(width: number, height: number) {
+ this.gl.viewport(0, 0, width, height);
+ var projmatrix = TSM.mat4.orthographic(-width / 2, width / 2, height / 2, -height / 2, 0.1, 2.0);
+ var cameramatrix = TSM.mat4.lookAt(new TSM.vec3([0.0, 0.0, 1.0]), new TSM.vec3([0.0, 0.0, 0.0]), new TSM.vec3([0.0, 1.0, 0.0]));
+ this.Shader.updateMatrix(projmatrix.multiply(cameramatrix));
+ }
+
+ DrawSpr(AtlasX: number, AtlasY: number, AtlasWidth, AtlasHeigh, ScreenX: number, ScreenY: number, ScreenWidth: number, ScreenHeight) {
+ this.vbo.DrawSpr(AtlasX, AtlasY, AtlasWidth, AtlasHeigh, ScreenX, ScreenY, ScreenWidth, ScreenHeight);
+ }
+
+ SetHight(hight: number) {
+ this.vbo.SetupHeight(hight);
+ }
+
+ PrepareTxt(str: string, color: string, fontSize: number, outLine = false) {
+ return this.Text.PrepareTxt(str, color, fontSize, outLine);
+ }
+
+ DisposeTxt(txtObj) {
+ this.Text.DisposeTxt(txtObj);
+ }
+
+ DrawTxt(txtObj, PosX: number, PosY: number) {
+ this.vbo.DrawTxt(txtObj.Pos.x, txtObj.Pos.y, txtObj.Size.Width, txtObj.Size.Height, PosX, PosY, txtObj.Size.Width, txtObj.Size.Height);
+ }
+
+ UpdateCamera(x: number, y: number) {
+ this.Shader.UpdatePosition(x, y);
+ }
+
+ private CreateTexture(image: HTMLImageElement, filtering: number) {
+ this.texture = this.gl.createTexture();
+ this.gl.bindTexture(this.gl.TEXTURE_2D, this.texture);
+ this.gl.texImage2D(this.gl.TEXTURE_2D, 0, this.gl.RGBA, this.gl.RGBA, this.gl.UNSIGNED_BYTE, image);
+ if (filtering == SpriteRenderer.TextureFilteringLinear) {
+ this.gl.texParameteri(this.gl.TEXTURE_2D, this.gl.TEXTURE_MAG_FILTER, this.gl.LINEAR);
+ this.gl.texParameteri(this.gl.TEXTURE_2D, this.gl.TEXTURE_MIN_FILTER, this.gl.LINEAR);
+ } else {
+ this.gl.texParameteri(this.gl.TEXTURE_2D, this.gl.TEXTURE_MAG_FILTER, this.gl.NEAREST);
+ this.gl.texParameteri(this.gl.TEXTURE_2D, this.gl.TEXTURE_MIN_FILTER, this.gl.NEAREST);
+ }
+ }
+
+ static fromCanvas(canvas: HTMLCanvasElement, Image: HTMLImageElement, Filtering = SpriteRenderer.TextureFilteringLinear): SpriteRenderer {
+ try {
+ var ctx = canvas.getContext("webgl") || canvas.getContext("experimental-webgl");
+ } catch (e) {
+ console.log("Error with WebGL context initialization");
+ return null;
+ }
+ var newRenderer = new SpriteRenderer(ctx, Image, Filtering);
+ newRenderer.UpdateViewPort(canvas.width, canvas.height);
+ return newRenderer;
+ }
+
+ static TextureFilteringLinear = 0;
+ static TextureFilteringNearest = 1;
+}
diff --git a/SpriteGL/text.ts b/src/TextDrawer.ts
similarity index 50%
rename from SpriteGL/text.ts
rename to src/TextDrawer.ts
index 298a8bb..1fe5bf4 100644
--- a/SpriteGL/text.ts
+++ b/src/TextDrawer.ts
@@ -1,15 +1,18 @@
-class TextDrawer {
+interface TextListItem {
+ str: string;
+ Pos: { x: number; y: number };
+ Size: { Width: number; Height: number };
+ Color: string;
+ OutLine: boolean;
+ FontSize: number;
+}
+
+export default class TextDrawer {
public TextureSize = { Width: 1024, Height: 1024 };
private ctx: CanvasRenderingContext2D;
private canvas: HTMLCanvasElement;
public texture: WebGLTexture;
- private txtsList = new Array<
- {
- str: string; Pos: { x: number; y: number };
- Size: { Width: number; Height: number };
- Color: string; FontSize: number; OutLine: boolean;
- }
- >();
+ private txtsList = new Array();
private gl: WebGLRenderingContext;
constructor(gl: WebGLRenderingContext) {
this.gl = gl;
@@ -27,55 +30,58 @@
}
PrepareTxt(str: string, color: string, fontSize: number, outline: boolean): any {
- this.ctx.font = "bold " + fontSize + "px Tahoma";
- var currTxtWidth = this.ctx.measureText(str).width;
-
- var currStartY = 0;
- var highestPosYIndex = 0;
+ this.ctx.font = "bold " + fontSize + "px Tahoma";
+ var currTxtWidth = this.ctx.measureText(str).width;
- for (var i = 0; i < this.txtsList.length; i++) {
- if (this.txtsList[i].Pos.y >= this.txtsList[highestPosYIndex].Pos.y) {
- highestPosYIndex = i;
- currStartY = this.txtsList[highestPosYIndex].Pos.y + this.txtsList[highestPosYIndex].Size.Height * 1.2;
- }
- }
- var test = {
- str: str, Pos: { x: 0, y: currStartY }, Size: {
- Width: currTxtWidth + Math.sqrt(fontSize) * 1.7,
- Height: fontSize + Math.sqrt(fontSize) * 2
- },
- Color: color, FontSize: fontSize, OutLine: outline
- };
+ var currStartY = 0;
+ var highestPosYIndex = 0;
+
+ for (var i = 0; i < this.txtsList.length; i++) {
+ if (this.txtsList[i].Pos.y >= this.txtsList[highestPosYIndex].Pos.y) {
+ highestPosYIndex = i;
+ currStartY = this.txtsList[highestPosYIndex].Pos.y + this.txtsList[highestPosYIndex].Size.Height * 1.2;
+ }
+ }
+ var test: TextListItem = {
+ str: str,
+ Pos: { x: 0, y: currStartY },
+ Size: {
+ Width: currTxtWidth + Math.sqrt(fontSize) * 1.7,
+ Height: fontSize + Math.sqrt(fontSize) * 2
+ },
+ Color: color,
+ OutLine: outline,
+ FontSize: fontSize
+ };
this.txtsList.push(test);
- this.BakeTexture();
+ this.BakeTexture();
return test;
}
- DisposeTxt(txtObj) {
- var index = this.txtsList.indexOf(txtObj);
-
- if (index > -1 && index) {
- this.txtsList.splice(index, 1);
- }
+ DisposeTxt(txtObj) {
+ var index = this.txtsList.indexOf(txtObj);
- this.UpdatePositon();
- this.BakeTexture();
+ if (index > -1 && index) {
+ this.txtsList.splice(index, 1);
+ }
- }
+ this.UpdatePositon();
+ this.BakeTexture();
- private UpdatePositon() {
- this.txtsList.sort((a, b) => { return a.Pos.y - b.Pos.y });
- for (var i = 0; i < this.txtsList.length; i++) {
- var newPosY = 0;
- for (var j = 0; j < i; j++) {
- newPosY += this.txtsList[j].Size.Height * 1.2;
- }
- this.txtsList[i].Pos.y = newPosY;
- }
- }
+ }
+
+ private UpdatePositon() {
+ this.txtsList.sort((a, b) => { return a.Pos.y - b.Pos.y });
+ for (var i = 0; i < this.txtsList.length; i++) {
+ var newPosY = 0;
+ for (var j = 0; j < i; j++) {
+ newPosY += this.txtsList[j].Size.Height * 1.2;
+ }
+ this.txtsList[i].Pos.y = newPosY;
+ }
+ }
private BakeTexture() {
-
this.ctx.clearRect(0, 0, this.canvas.width, this.canvas.height);
this.ctx.miterLimit = 1;
this.ctx.lineJoin = "round";
@@ -83,7 +89,7 @@
this.ctx.fillStyle = this.txtsList[i].Color;
this.ctx.font = "bold " + this.txtsList[i].FontSize + "px Tahoma";
if (this.txtsList[i].OutLine) {
- this.ctx.lineWidth = Math.sqrt(this.txtsList[i].FontSize)*1.5;
+ this.ctx.lineWidth = Math.sqrt(this.txtsList[i].FontSize) * 1.5;
this.ctx.strokeStyle = "black";
this.ctx.strokeText(this.txtsList[i].str, 5, this.txtsList[i].Pos.y, 1024);
}
@@ -92,4 +98,4 @@
this.gl.bindTexture(this.gl.TEXTURE_2D, this.texture);
this.gl.texSubImage2D(this.gl.TEXTURE_2D, 0, 0, 0, this.gl.RGBA, this.gl.UNSIGNED_BYTE, this.canvas);
}
-}
\ No newline at end of file
+}
diff --git a/src/VBO.ts b/src/VBO.ts
new file mode 100644
index 0000000..1374921
--- /dev/null
+++ b/src/VBO.ts
@@ -0,0 +1,75 @@
+export default class VBO {
+ verticlesBuffer: WebGLBuffer;
+ private sprVerts = [];
+ private txtVerts = [];
+ private AtlasSize = 1;
+ private gl: WebGLRenderingContext = null;
+ private hight: number;
+
+ constructor(gl: WebGLRenderingContext) {
+ this.gl = gl;
+ this.verticlesBuffer = gl.createBuffer();
+ gl.bindBuffer(gl.ARRAY_BUFFER, this.verticlesBuffer);
+ }
+
+ SetupHeight(hight: number) {
+ this.hight = hight;
+ }
+
+ SetupForDraw(vertexPositionAttr: number, textureCoordAttr: number, AtlasSize: number) {
+ this.gl.enableVertexAttribArray(vertexPositionAttr);
+ this.gl.vertexAttribPointer(vertexPositionAttr, 3, this.gl.FLOAT, false, 20, 0);
+
+ this.gl.enableVertexAttribArray(textureCoordAttr);
+ this.gl.vertexAttribPointer(textureCoordAttr, 2, this.gl.FLOAT, false, 20, 12);
+ this.gl.bufferData(this.gl.ARRAY_BUFFER, new Float32Array(15 * 10000), this.gl.STREAM_DRAW);
+ this.AtlasSize = AtlasSize;
+ }
+
+ RenderAllSpr() {
+ this.gl.bufferSubData(this.gl.ARRAY_BUFFER, 0, new Float32Array(this.sprVerts));
+ this.gl.drawArrays(this.gl.TRIANGLES, 0, this.sprVerts.length / 5);
+ this.sprVerts = []
+ }
+
+ RenderAllTxt() {
+ this.gl.bufferSubData(this.gl.ARRAY_BUFFER, 0, new Float32Array(this.txtVerts));
+ this.gl.drawArrays(this.gl.TRIANGLES, 0, this.txtVerts.length / 5);
+ this.txtVerts = []
+ }
+
+ DrawSpr(AtlasX: number, AtlasY: number, AtlasWidth, AtlasHeigh, ScreenX: number, ScreenY: number, ScreenWidth: number, ScreenHeight) {
+ for (var i = 0; i < VBO.defaultVerts.length; i += 2) {
+ //Pos
+ this.sprVerts.push(VBO.defaultVerts[i] * ScreenWidth + ScreenX | 0);
+ this.sprVerts.push(VBO.defaultVerts[i + 1] * ScreenHeight + ScreenY | 0);
+ this.sprVerts.push(this.hight);
+ //Tex
+ this.sprVerts.push(VBO.defaultVerts[i] * (AtlasWidth / this.AtlasSize) + (AtlasX / this.AtlasSize));
+ this.sprVerts.push(VBO.defaultVerts[i + 1] * (AtlasHeigh / this.AtlasSize) + (AtlasY / this.AtlasSize));
+ }
+ }
+
+ DrawTxt(AtlasX: number, AtlasY: number, AtlasWidth, AtlasHeigh, ScreenX: number, ScreenY: number, ScreenWidth: number, ScreenHeight) {
+ for (var i = 0; i < VBO.defaultVerts.length; i += 2) {
+ //Pos
+ this.txtVerts.push(VBO.defaultVerts[i] * ScreenWidth + ScreenX | 0);
+ this.txtVerts.push(VBO.defaultVerts[i + 1] * ScreenHeight + ScreenY | 0);
+ this.txtVerts.push(this.hight);
+ //Tex
+ this.txtVerts.push(VBO.defaultVerts[i] * (AtlasWidth / 1024) + (AtlasX / 1024));
+ this.txtVerts.push(VBO.defaultVerts[i + 1] * (AtlasHeigh / 1024) + (AtlasY / 1024));
+ }
+ }
+
+ private static defaultVerts = [
+ //Left
+ 0.0, 1.0, // 1
+ 1.0, 0.0, // 2
+ 0.0, 0.0, // 3
+ //Right
+ 0.0, 1.0, // 1
+ 1.0, 1.0, // 4
+ 1.0, 0.0 // 2
+ ];
+}
diff --git a/src/index.ts b/src/index.ts
new file mode 100644
index 0000000..800e912
--- /dev/null
+++ b/src/index.ts
@@ -0,0 +1,10 @@
+import Shader from "./Shader";
+import SpriteRenderer from "./SpriteRenderer";
+import TextDrawer from "./TextDrawer";
+import VBO from "./VBO";
+
+const SpriteGL = { Shader, SpriteRenderer, TextDrawer, VBO };
+
+export { Shader, SpriteGL, SpriteRenderer, TextDrawer, VBO };
+
+export default SpriteGL;
diff --git a/tsconfig.json b/tsconfig.json
new file mode 100644
index 0000000..952ae50
--- /dev/null
+++ b/tsconfig.json
@@ -0,0 +1,7 @@
+{
+ "files": ["src/index.ts"],
+ "compilerOptions": {
+ "declaration": true,
+ "declarationDir": "types/"
+ }
+}
diff --git a/types/Shader.d.ts b/types/Shader.d.ts
new file mode 100644
index 0000000..bf4b412
--- /dev/null
+++ b/types/Shader.d.ts
@@ -0,0 +1,18 @@
+import * as TSM from "tsm";
+export default class Shader {
+ glProgram: WebGLProgram;
+ VertexPosAttribute: number;
+ TexCoordAttribute: number;
+ private TexSampleUniform;
+ private MatUniform;
+ private CameraPosUniform;
+ private gl;
+ constructor(gl: WebGLRenderingContext);
+ UseProgram(): void;
+ UpdatePosition(x: number, y: number): void;
+ private MakeProgram;
+ private CompileShader;
+ updateMatrix(mat: TSM.mat4): void;
+ private static defaultVertexShaderSrc;
+ private static defaultFragmentShaderSrc;
+}
diff --git a/types/SpriteRenderer.d.ts b/types/SpriteRenderer.d.ts
new file mode 100644
index 0000000..b900bb2
--- /dev/null
+++ b/types/SpriteRenderer.d.ts
@@ -0,0 +1,21 @@
+export default class SpriteRenderer {
+ private gl;
+ private Shader;
+ private vbo;
+ private texture;
+ private SpriteSize;
+ private Text;
+ constructor(webglContext: WebGLRenderingContext, Image: HTMLImageElement, Filtering?: number);
+ RenderAll(): void;
+ UpdateViewPort(width: number, height: number): void;
+ DrawSpr(AtlasX: number, AtlasY: number, AtlasWidth: any, AtlasHeigh: any, ScreenX: number, ScreenY: number, ScreenWidth: number, ScreenHeight: any): void;
+ SetHight(hight: number): void;
+ PrepareTxt(str: string, color: string, fontSize: number, outLine?: boolean): any;
+ DisposeTxt(txtObj: any): void;
+ DrawTxt(txtObj: any, PosX: number, PosY: number): void;
+ UpdateCamera(x: number, y: number): void;
+ private CreateTexture;
+ static fromCanvas(canvas: HTMLCanvasElement, Image: HTMLImageElement, Filtering?: number): SpriteRenderer;
+ static TextureFilteringLinear: number;
+ static TextureFilteringNearest: number;
+}
diff --git a/types/TextDrawer.d.ts b/types/TextDrawer.d.ts
new file mode 100644
index 0000000..58d99ea
--- /dev/null
+++ b/types/TextDrawer.d.ts
@@ -0,0 +1,16 @@
+export default class TextDrawer {
+ TextureSize: {
+ Width: number;
+ Height: number;
+ };
+ private ctx;
+ private canvas;
+ texture: WebGLTexture;
+ private txtsList;
+ private gl;
+ constructor(gl: WebGLRenderingContext);
+ PrepareTxt(str: string, color: string, fontSize: number, outline: boolean): any;
+ DisposeTxt(txtObj: any): void;
+ private UpdatePositon;
+ private BakeTexture;
+}
diff --git a/types/VBO.d.ts b/types/VBO.d.ts
new file mode 100644
index 0000000..2fb12d0
--- /dev/null
+++ b/types/VBO.d.ts
@@ -0,0 +1,16 @@
+export default class VBO {
+ verticlesBuffer: WebGLBuffer;
+ private sprVerts;
+ private txtVerts;
+ private AtlasSize;
+ private gl;
+ private hight;
+ constructor(gl: WebGLRenderingContext);
+ SetupHeight(hight: number): void;
+ SetupForDraw(vertexPositionAttr: number, textureCoordAttr: number, AtlasSize: number): void;
+ RenderAllSpr(): void;
+ RenderAllTxt(): void;
+ DrawSpr(AtlasX: number, AtlasY: number, AtlasWidth: any, AtlasHeigh: any, ScreenX: number, ScreenY: number, ScreenWidth: number, ScreenHeight: any): void;
+ DrawTxt(AtlasX: number, AtlasY: number, AtlasWidth: any, AtlasHeigh: any, ScreenX: number, ScreenY: number, ScreenWidth: number, ScreenHeight: any): void;
+ private static defaultVerts;
+}
diff --git a/types/index.d.ts b/types/index.d.ts
new file mode 100644
index 0000000..ebb8745
--- /dev/null
+++ b/types/index.d.ts
@@ -0,0 +1,12 @@
+import Shader from "./Shader";
+import SpriteRenderer from "./SpriteRenderer";
+import TextDrawer from "./TextDrawer";
+import VBO from "./VBO";
+declare const SpriteGL: {
+ Shader: typeof Shader;
+ SpriteRenderer: typeof SpriteRenderer;
+ TextDrawer: typeof TextDrawer;
+ VBO: typeof VBO;
+};
+export { Shader, SpriteGL, SpriteRenderer, TextDrawer, VBO };
+export default SpriteGL;
diff --git a/yarn.lock b/yarn.lock
new file mode 100644
index 0000000..2022f40
--- /dev/null
+++ b/yarn.lock
@@ -0,0 +1,6236 @@
+# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
+# yarn lockfile v1
+
+
+"@babel/code-frame@^7.0.0":
+ version "7.0.0"
+ resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.0.0.tgz#06e2ab19bdb535385559aabb5ba59729482800f8"
+ integrity sha512-OfC2uemaknXr87bdLUkWog7nYuliM9Ij5HUcajsVcMCpQrcLmtxRbVFTIqmcSkSeYRBFBRxs2FiUqFJDLdiebA==
+ dependencies:
+ "@babel/highlight" "^7.0.0"
+
+"@babel/core@^7.0.0", "@babel/core@^7.0.0-beta.39":
+ version "7.1.2"
+ resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.1.2.tgz#f8d2a9ceb6832887329a7b60f9d035791400ba4e"
+ integrity sha512-IFeSSnjXdhDaoysIlev//UzHZbdEmm7D0EIH2qtse9xK7mXEZQpYjs2P00XlP1qYsYvid79p+Zgg6tz1mp6iVw==
+ dependencies:
+ "@babel/code-frame" "^7.0.0"
+ "@babel/generator" "^7.1.2"
+ "@babel/helpers" "^7.1.2"
+ "@babel/parser" "^7.1.2"
+ "@babel/template" "^7.1.2"
+ "@babel/traverse" "^7.1.0"
+ "@babel/types" "^7.1.2"
+ convert-source-map "^1.1.0"
+ debug "^3.1.0"
+ json5 "^0.5.0"
+ lodash "^4.17.10"
+ resolve "^1.3.2"
+ semver "^5.4.1"
+ source-map "^0.5.0"
+
+"@babel/generator@^7.0.0", "@babel/generator@^7.1.2":
+ version "7.1.2"
+ resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.1.2.tgz#fde75c072575ce7abbd97322e8fef5bae67e4630"
+ integrity sha512-70A9HWLS/1RHk3Ck8tNHKxOoKQuSKocYgwDN85Pyl/RBduss6AKxUR7RIZ/lzduQMSYfWEM4DDBu6A+XGbkFig==
+ dependencies:
+ "@babel/types" "^7.1.2"
+ jsesc "^2.5.1"
+ lodash "^4.17.10"
+ source-map "^0.5.0"
+ trim-right "^1.0.1"
+
+"@babel/helper-annotate-as-pure@^7.0.0":
+ version "7.0.0"
+ resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.0.0.tgz#323d39dd0b50e10c7c06ca7d7638e6864d8c5c32"
+ integrity sha512-3UYcJUj9kvSLbLbUIfQTqzcy5VX7GRZ/CCDrnOaZorFFM01aXp1+GJwuFGV4NDDoAS+mOUyHcO6UD/RfqOks3Q==
+ dependencies:
+ "@babel/types" "^7.0.0"
+
+"@babel/helper-builder-binary-assignment-operator-visitor@^7.1.0":
+ version "7.1.0"
+ resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.1.0.tgz#6b69628dfe4087798e0c4ed98e3d4a6b2fbd2f5f"
+ integrity sha512-qNSR4jrmJ8M1VMM9tibvyRAHXQs2PmaksQF7c1CGJNipfe3D8p+wgNwgso/P2A2r2mdgBWAXljNWR0QRZAMW8w==
+ dependencies:
+ "@babel/helper-explode-assignable-expression" "^7.1.0"
+ "@babel/types" "^7.0.0"
+
+"@babel/helper-builder-react-jsx@^7.0.0":
+ version "7.0.0"
+ resolved "https://registry.yarnpkg.com/@babel/helper-builder-react-jsx/-/helper-builder-react-jsx-7.0.0.tgz#fa154cb53eb918cf2a9a7ce928e29eb649c5acdb"
+ integrity sha512-ebJ2JM6NAKW0fQEqN8hOLxK84RbRz9OkUhGS/Xd5u56ejMfVbayJ4+LykERZCOUM6faa6Fp3SZNX3fcT16MKHw==
+ dependencies:
+ "@babel/types" "^7.0.0"
+ esutils "^2.0.0"
+
+"@babel/helper-call-delegate@^7.1.0":
+ version "7.1.0"
+ resolved "https://registry.yarnpkg.com/@babel/helper-call-delegate/-/helper-call-delegate-7.1.0.tgz#6a957f105f37755e8645343d3038a22e1449cc4a"
+ integrity sha512-YEtYZrw3GUK6emQHKthltKNZwszBcHK58Ygcis+gVUrF4/FmTVr5CCqQNSfmvg2y+YDEANyYoaLz/SHsnusCwQ==
+ dependencies:
+ "@babel/helper-hoist-variables" "^7.0.0"
+ "@babel/traverse" "^7.1.0"
+ "@babel/types" "^7.0.0"
+
+"@babel/helper-define-map@^7.1.0":
+ version "7.1.0"
+ resolved "https://registry.yarnpkg.com/@babel/helper-define-map/-/helper-define-map-7.1.0.tgz#3b74caec329b3c80c116290887c0dd9ae468c20c"
+ integrity sha512-yPPcW8dc3gZLN+U1mhYV91QU3n5uTbx7DUdf8NnPbjS0RMwBuHi9Xt2MUgppmNz7CJxTBWsGczTiEp1CSOTPRg==
+ dependencies:
+ "@babel/helper-function-name" "^7.1.0"
+ "@babel/types" "^7.0.0"
+ lodash "^4.17.10"
+
+"@babel/helper-explode-assignable-expression@^7.1.0":
+ version "7.1.0"
+ resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.1.0.tgz#537fa13f6f1674df745b0c00ec8fe4e99681c8f6"
+ integrity sha512-NRQpfHrJ1msCHtKjbzs9YcMmJZOg6mQMmGRB+hbamEdG5PNpaSm95275VD92DvJKuyl0s2sFiDmMZ+EnnvufqA==
+ dependencies:
+ "@babel/traverse" "^7.1.0"
+ "@babel/types" "^7.0.0"
+
+"@babel/helper-function-name@^7.1.0":
+ version "7.1.0"
+ resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.1.0.tgz#a0ceb01685f73355d4360c1247f582bfafc8ff53"
+ integrity sha512-A95XEoCpb3TO+KZzJ4S/5uW5fNe26DjBGqf1o9ucyLyCmi1dXq/B3c8iaWTfBk3VvetUxl16e8tIrd5teOCfGw==
+ dependencies:
+ "@babel/helper-get-function-arity" "^7.0.0"
+ "@babel/template" "^7.1.0"
+ "@babel/types" "^7.0.0"
+
+"@babel/helper-get-function-arity@^7.0.0":
+ version "7.0.0"
+ resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0.tgz#83572d4320e2a4657263734113c42868b64e49c3"
+ integrity sha512-r2DbJeg4svYvt3HOS74U4eWKsUAMRH01Z1ds1zx8KNTPtpTL5JAsdFv8BNyOpVqdFhHkkRDIg5B4AsxmkjAlmQ==
+ dependencies:
+ "@babel/types" "^7.0.0"
+
+"@babel/helper-hoist-variables@^7.0.0":
+ version "7.0.0"
+ resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.0.0.tgz#46adc4c5e758645ae7a45deb92bab0918c23bb88"
+ integrity sha512-Ggv5sldXUeSKsuzLkddtyhyHe2YantsxWKNi7A+7LeD12ExRDWTRk29JCXpaHPAbMaIPZSil7n+lq78WY2VY7w==
+ dependencies:
+ "@babel/types" "^7.0.0"
+
+"@babel/helper-member-expression-to-functions@^7.0.0":
+ version "7.0.0"
+ resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.0.0.tgz#8cd14b0a0df7ff00f009e7d7a436945f47c7a16f"
+ integrity sha512-avo+lm/QmZlv27Zsi0xEor2fKcqWG56D5ae9dzklpIaY7cQMK5N8VSpaNVPPagiqmy7LrEjK1IWdGMOqPu5csg==
+ dependencies:
+ "@babel/types" "^7.0.0"
+
+"@babel/helper-module-imports@^7.0.0":
+ version "7.0.0"
+ resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.0.0.tgz#96081b7111e486da4d2cd971ad1a4fe216cc2e3d"
+ integrity sha512-aP/hlLq01DWNEiDg4Jn23i+CXxW/owM4WpDLFUbpjxe4NS3BhLVZQ5i7E0ZrxuQ/vwekIeciyamgB1UIYxxM6A==
+ dependencies:
+ "@babel/types" "^7.0.0"
+
+"@babel/helper-module-transforms@^7.1.0":
+ version "7.1.0"
+ resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.1.0.tgz#470d4f9676d9fad50b324cdcce5fbabbc3da5787"
+ integrity sha512-0JZRd2yhawo79Rcm4w0LwSMILFmFXjugG3yqf+P/UsKsRS1mJCmMwwlHDlMg7Avr9LrvSpp4ZSULO9r8jpCzcw==
+ dependencies:
+ "@babel/helper-module-imports" "^7.0.0"
+ "@babel/helper-simple-access" "^7.1.0"
+ "@babel/helper-split-export-declaration" "^7.0.0"
+ "@babel/template" "^7.1.0"
+ "@babel/types" "^7.0.0"
+ lodash "^4.17.10"
+
+"@babel/helper-optimise-call-expression@^7.0.0":
+ version "7.0.0"
+ resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.0.0.tgz#a2920c5702b073c15de51106200aa8cad20497d5"
+ integrity sha512-u8nd9NQePYNQV8iPWu/pLLYBqZBa4ZaY1YWRFMuxrid94wKI1QNt67NEZ7GAe5Kc/0LLScbim05xZFWkAdrj9g==
+ dependencies:
+ "@babel/types" "^7.0.0"
+
+"@babel/helper-plugin-utils@^7.0.0":
+ version "7.0.0"
+ resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.0.0.tgz#bbb3fbee98661c569034237cc03967ba99b4f250"
+ integrity sha512-CYAOUCARwExnEixLdB6sDm2dIJ/YgEAKDM1MOeMeZu9Ld/bDgVo8aiWrXwcY7OBh+1Ea2uUcVRcxKk0GJvW7QA==
+
+"@babel/helper-regex@^7.0.0":
+ version "7.0.0"
+ resolved "https://registry.yarnpkg.com/@babel/helper-regex/-/helper-regex-7.0.0.tgz#2c1718923b57f9bbe64705ffe5640ac64d9bdb27"
+ integrity sha512-TR0/N0NDCcUIUEbqV6dCO+LptmmSQFQ7q70lfcEB4URsjD0E1HzicrwUH+ap6BAQ2jhCX9Q4UqZy4wilujWlkg==
+ dependencies:
+ lodash "^4.17.10"
+
+"@babel/helper-remap-async-to-generator@^7.1.0":
+ version "7.1.0"
+ resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.1.0.tgz#361d80821b6f38da75bd3f0785ece20a88c5fe7f"
+ integrity sha512-3fOK0L+Fdlg8S5al8u/hWE6vhufGSn0bN09xm2LXMy//REAF8kDCrYoOBKYmA8m5Nom+sV9LyLCwrFynA8/slg==
+ dependencies:
+ "@babel/helper-annotate-as-pure" "^7.0.0"
+ "@babel/helper-wrap-function" "^7.1.0"
+ "@babel/template" "^7.1.0"
+ "@babel/traverse" "^7.1.0"
+ "@babel/types" "^7.0.0"
+
+"@babel/helper-replace-supers@^7.1.0":
+ version "7.1.0"
+ resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.1.0.tgz#5fc31de522ec0ef0899dc9b3e7cf6a5dd655f362"
+ integrity sha512-BvcDWYZRWVuDeXTYZWxekQNO5D4kO55aArwZOTFXw6rlLQA8ZaDicJR1sO47h+HrnCiDFiww0fSPV0d713KBGQ==
+ dependencies:
+ "@babel/helper-member-expression-to-functions" "^7.0.0"
+ "@babel/helper-optimise-call-expression" "^7.0.0"
+ "@babel/traverse" "^7.1.0"
+ "@babel/types" "^7.0.0"
+
+"@babel/helper-simple-access@^7.1.0":
+ version "7.1.0"
+ resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.1.0.tgz#65eeb954c8c245beaa4e859da6188f39d71e585c"
+ integrity sha512-Vk+78hNjRbsiu49zAPALxTb+JUQCz1aolpd8osOF16BGnLtseD21nbHgLPGUwrXEurZgiCOUmvs3ExTu4F5x6w==
+ dependencies:
+ "@babel/template" "^7.1.0"
+ "@babel/types" "^7.0.0"
+
+"@babel/helper-split-export-declaration@^7.0.0":
+ version "7.0.0"
+ resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.0.0.tgz#3aae285c0311c2ab095d997b8c9a94cad547d813"
+ integrity sha512-MXkOJqva62dfC0w85mEf/LucPPS/1+04nmmRMPEBUB++hiiThQ2zPtX/mEWQ3mtzCEjIJvPY8nuwxXtQeQwUag==
+ dependencies:
+ "@babel/types" "^7.0.0"
+
+"@babel/helper-wrap-function@^7.1.0":
+ version "7.1.0"
+ resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.1.0.tgz#8cf54e9190706067f016af8f75cb3df829cc8c66"
+ integrity sha512-R6HU3dete+rwsdAfrOzTlE9Mcpk4RjU3aX3gi9grtmugQY0u79X7eogUvfXA5sI81Mfq1cn6AgxihfN33STjJA==
+ dependencies:
+ "@babel/helper-function-name" "^7.1.0"
+ "@babel/template" "^7.1.0"
+ "@babel/traverse" "^7.1.0"
+ "@babel/types" "^7.0.0"
+
+"@babel/helpers@^7.1.2":
+ version "7.1.2"
+ resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.1.2.tgz#ab752e8c35ef7d39987df4e8586c63b8846234b5"
+ integrity sha512-Myc3pUE8eswD73aWcartxB16K6CGmHDv9KxOmD2CeOs/FaEAQodr3VYGmlvOmog60vNQ2w8QbatuahepZwrHiA==
+ dependencies:
+ "@babel/template" "^7.1.2"
+ "@babel/traverse" "^7.1.0"
+ "@babel/types" "^7.1.2"
+
+"@babel/highlight@^7.0.0":
+ version "7.0.0"
+ resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.0.0.tgz#f710c38c8d458e6dd9a201afb637fcb781ce99e4"
+ integrity sha512-UFMC4ZeFC48Tpvj7C8UgLvtkaUuovQX+5xNWrsIoMG8o2z+XFKjKaN9iVmS84dPwVN00W4wPmqvYoZF3EGAsfw==
+ dependencies:
+ chalk "^2.0.0"
+ esutils "^2.0.2"
+ js-tokens "^4.0.0"
+
+"@babel/parser@^7.0.0", "@babel/parser@^7.1.0", "@babel/parser@^7.1.2":
+ version "7.1.2"
+ resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.1.2.tgz#85c5c47af6d244fab77bce6b9bd830e38c978409"
+ integrity sha512-x5HFsW+E/nQalGMw7hu+fvPqnBeBaIr0lWJ2SG0PPL2j+Pm9lYvCrsZJGIgauPIENx0v10INIyFjmSNUD/gSqQ==
+
+"@babel/plugin-proposal-async-generator-functions@^7.1.0":
+ version "7.1.0"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.1.0.tgz#41c1a702e10081456e23a7b74d891922dd1bb6ce"
+ integrity sha512-Fq803F3Jcxo20MXUSDdmZZXrPe6BWyGcWBPPNB/M7WaUYESKDeKMOGIxEzQOjGSmW/NWb6UaPZrtTB2ekhB/ew==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.0.0"
+ "@babel/helper-remap-async-to-generator" "^7.1.0"
+ "@babel/plugin-syntax-async-generators" "^7.0.0"
+
+"@babel/plugin-proposal-class-properties@^7.0.0-beta.39":
+ version "7.1.0"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.1.0.tgz#9af01856b1241db60ec8838d84691aa0bd1e8df4"
+ integrity sha512-/PCJWN+CKt5v1xcGn4vnuu13QDoV+P7NcICP44BoonAJoPSGwVkgrXihFIQGiEjjPlUDBIw1cM7wYFLARS2/hw==
+ dependencies:
+ "@babel/helper-function-name" "^7.1.0"
+ "@babel/helper-member-expression-to-functions" "^7.0.0"
+ "@babel/helper-optimise-call-expression" "^7.0.0"
+ "@babel/helper-plugin-utils" "^7.0.0"
+ "@babel/helper-replace-supers" "^7.1.0"
+ "@babel/plugin-syntax-class-properties" "^7.0.0"
+
+"@babel/plugin-proposal-json-strings@^7.0.0":
+ version "7.0.0"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.0.0.tgz#3b4d7b5cf51e1f2e70f52351d28d44fc2970d01e"
+ integrity sha512-kfVdUkIAGJIVmHmtS/40i/fg/AGnw/rsZBCaapY5yjeO5RA9m165Xbw9KMOu2nqXP5dTFjEjHdfNdoVcHv133Q==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.0.0"
+ "@babel/plugin-syntax-json-strings" "^7.0.0"
+
+"@babel/plugin-proposal-object-rest-spread@^7.0.0", "@babel/plugin-proposal-object-rest-spread@^7.0.0-beta.39":
+ version "7.0.0"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.0.0.tgz#9a17b547f64d0676b6c9cecd4edf74a82ab85e7e"
+ integrity sha512-14fhfoPcNu7itSen7Py1iGN0gEm87hX/B+8nZPqkdmANyyYWYMY2pjA3r8WXbWVKMzfnSNS0xY8GVS0IjXi/iw==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.0.0"
+ "@babel/plugin-syntax-object-rest-spread" "^7.0.0"
+
+"@babel/plugin-proposal-optional-catch-binding@^7.0.0":
+ version "7.0.0"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.0.0.tgz#b610d928fe551ff7117d42c8bb410eec312a6425"
+ integrity sha512-JPqAvLG1s13B/AuoBjdBYvn38RqW6n1TzrQO839/sIpqLpbnXKacsAgpZHzLD83Sm8SDXMkkrAvEnJ25+0yIpw==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.0.0"
+ "@babel/plugin-syntax-optional-catch-binding" "^7.0.0"
+
+"@babel/plugin-proposal-unicode-property-regex@^7.0.0":
+ version "7.0.0"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.0.0.tgz#498b39cd72536cd7c4b26177d030226eba08cd33"
+ integrity sha512-tM3icA6GhC3ch2SkmSxv7J/hCWKISzwycub6eGsDrFDgukD4dZ/I+x81XgW0YslS6mzNuQ1Cbzh5osjIMgepPQ==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.0.0"
+ "@babel/helper-regex" "^7.0.0"
+ regexpu-core "^4.2.0"
+
+"@babel/plugin-syntax-async-generators@^7.0.0":
+ version "7.0.0"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.0.0.tgz#bf0891dcdbf59558359d0c626fdc9490e20bc13c"
+ integrity sha512-im7ged00ddGKAjcZgewXmp1vxSZQQywuQXe2B1A7kajjZmDeY/ekMPmWr9zJgveSaQH0k7BcGrojQhcK06l0zA==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.0.0"
+
+"@babel/plugin-syntax-class-properties@^7.0.0":
+ version "7.0.0"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.0.0.tgz#e051af5d300cbfbcec4a7476e37a803489881634"
+ integrity sha512-cR12g0Qzn4sgkjrbrzWy2GE7m9vMl/sFkqZ3gIpAQdrvPDnLM8180i+ANDFIXfjHo9aqp0ccJlQ0QNZcFUbf9w==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.0.0"
+
+"@babel/plugin-syntax-flow@^7.0.0":
+ version "7.0.0"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.0.0.tgz#70638aeaad9ee426bc532e51523cff8ff02f6f17"
+ integrity sha512-zGcuZWiWWDa5qTZ6iAnpG0fnX/GOu49pGR5PFvkQ9GmKNaSphXQnlNXh/LG20sqWtNrx/eB6krzfEzcwvUyeFA==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.0.0"
+
+"@babel/plugin-syntax-json-strings@^7.0.0":
+ version "7.0.0"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.0.0.tgz#0d259a68090e15b383ce3710e01d5b23f3770cbd"
+ integrity sha512-UlSfNydC+XLj4bw7ijpldc1uZ/HB84vw+U6BTuqMdIEmz/LDe63w/GHtpQMdXWdqQZFeAI9PjnHe/vDhwirhKA==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.0.0"
+
+"@babel/plugin-syntax-jsx@^7.0.0":
+ version "7.0.0"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.0.0.tgz#034d5e2b4e14ccaea2e4c137af7e4afb39375ffd"
+ integrity sha512-PdmL2AoPsCLWxhIr3kG2+F9v4WH06Q3z+NoGVpQgnUNGcagXHq5sB3OXxkSahKq9TLdNMN/AJzFYSOo8UKDMHg==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.0.0"
+
+"@babel/plugin-syntax-object-rest-spread@^7.0.0":
+ version "7.0.0"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.0.0.tgz#37d8fbcaf216bd658ea1aebbeb8b75e88ebc549b"
+ integrity sha512-5A0n4p6bIiVe5OvQPxBnesezsgFJdHhSs3uFSvaPdMqtsovajLZ+G2vZyvNe10EzJBWWo3AcHGKhAFUxqwp2dw==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.0.0"
+
+"@babel/plugin-syntax-optional-catch-binding@^7.0.0":
+ version "7.0.0"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.0.0.tgz#886f72008b3a8b185977f7cb70713b45e51ee475"
+ integrity sha512-Wc+HVvwjcq5qBg1w5RG9o9RVzmCaAg/Vp0erHCKpAYV8La6I94o4GQAmFYNmkzoMO6gzoOSulpKeSSz6mPEoZw==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.0.0"
+
+"@babel/plugin-transform-arrow-functions@^7.0.0":
+ version "7.0.0"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.0.0.tgz#a6c14875848c68a3b4b3163a486535ef25c7e749"
+ integrity sha512-2EZDBl1WIO/q4DIkIp4s86sdp4ZifL51MoIviLY/gG/mLSuOIEg7J8o6mhbxOTvUJkaN50n+8u41FVsr5KLy/w==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.0.0"
+
+"@babel/plugin-transform-async-to-generator@^7.1.0":
+ version "7.1.0"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.1.0.tgz#109e036496c51dd65857e16acab3bafdf3c57811"
+ integrity sha512-rNmcmoQ78IrvNCIt/R9U+cixUHeYAzgusTFgIAv+wQb9HJU4szhpDD6e5GCACmj/JP5KxuCwM96bX3L9v4ZN/g==
+ dependencies:
+ "@babel/helper-module-imports" "^7.0.0"
+ "@babel/helper-plugin-utils" "^7.0.0"
+ "@babel/helper-remap-async-to-generator" "^7.1.0"
+
+"@babel/plugin-transform-block-scoped-functions@^7.0.0":
+ version "7.0.0"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.0.0.tgz#482b3f75103927e37288b3b67b65f848e2aa0d07"
+ integrity sha512-AOBiyUp7vYTqz2Jibe1UaAWL0Hl9JUXEgjFvvvcSc9MVDItv46ViXFw2F7SVt1B5k+KWjl44eeXOAk3UDEaJjQ==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.0.0"
+
+"@babel/plugin-transform-block-scoping@^7.0.0":
+ version "7.0.0"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.0.0.tgz#1745075edffd7cdaf69fab2fb6f9694424b7e9bc"
+ integrity sha512-GWEMCrmHQcYWISilUrk9GDqH4enf3UmhOEbNbNrlNAX1ssH3MsS1xLOS6rdjRVPgA7XXVPn87tRkdTEoA/dxEg==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.0.0"
+ lodash "^4.17.10"
+
+"@babel/plugin-transform-classes@^7.1.0":
+ version "7.1.0"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.1.0.tgz#ab3f8a564361800cbc8ab1ca6f21108038432249"
+ integrity sha512-rNaqoD+4OCBZjM7VaskladgqnZ1LO6o2UxuWSDzljzW21pN1KXkB7BstAVweZdxQkHAujps5QMNOTWesBciKFg==
+ dependencies:
+ "@babel/helper-annotate-as-pure" "^7.0.0"
+ "@babel/helper-define-map" "^7.1.0"
+ "@babel/helper-function-name" "^7.1.0"
+ "@babel/helper-optimise-call-expression" "^7.0.0"
+ "@babel/helper-plugin-utils" "^7.0.0"
+ "@babel/helper-replace-supers" "^7.1.0"
+ "@babel/helper-split-export-declaration" "^7.0.0"
+ globals "^11.1.0"
+
+"@babel/plugin-transform-computed-properties@^7.0.0":
+ version "7.0.0"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.0.0.tgz#2fbb8900cd3e8258f2a2ede909b90e7556185e31"
+ integrity sha512-ubouZdChNAv4AAWAgU7QKbB93NU5sHwInEWfp+/OzJKA02E6Woh9RVoX4sZrbRwtybky/d7baTUqwFx+HgbvMA==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.0.0"
+
+"@babel/plugin-transform-destructuring@^7.0.0":
+ version "7.1.2"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.1.2.tgz#5fa77d473f5a0a3f5266ad7ce2e8c995a164d60a"
+ integrity sha512-cvToXvp/OsYxtEn57XJu9BvsGSEYjAh9UeUuXpoi7x6QHB7YdWyQ4lRU/q0Fu1IJNT0o0u4FQ1DMQBzJ8/8vZg==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.0.0"
+
+"@babel/plugin-transform-dotall-regex@^7.0.0":
+ version "7.0.0"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.0.0.tgz#73a24da69bc3c370251f43a3d048198546115e58"
+ integrity sha512-00THs8eJxOJUFVx1w8i1MBF4XH4PsAjKjQ1eqN/uCH3YKwP21GCKfrn6YZFZswbOk9+0cw1zGQPHVc1KBlSxig==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.0.0"
+ "@babel/helper-regex" "^7.0.0"
+ regexpu-core "^4.1.3"
+
+"@babel/plugin-transform-duplicate-keys@^7.0.0":
+ version "7.0.0"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.0.0.tgz#a0601e580991e7cace080e4cf919cfd58da74e86"
+ integrity sha512-w2vfPkMqRkdxx+C71ATLJG30PpwtTpW7DDdLqYt2acXU7YjztzeWW2Jk1T6hKqCLYCcEA5UQM/+xTAm+QCSnuQ==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.0.0"
+
+"@babel/plugin-transform-exponentiation-operator@^7.1.0":
+ version "7.1.0"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.1.0.tgz#9c34c2ee7fd77e02779cfa37e403a2e1003ccc73"
+ integrity sha512-uZt9kD1Pp/JubkukOGQml9tqAeI8NkE98oZnHZ2qHRElmeKCodbTZgOEUtujSCSLhHSBWbzNiFSDIMC4/RBTLQ==
+ dependencies:
+ "@babel/helper-builder-binary-assignment-operator-visitor" "^7.1.0"
+ "@babel/helper-plugin-utils" "^7.0.0"
+
+"@babel/plugin-transform-flow-strip-types@^7.0.0", "@babel/plugin-transform-flow-strip-types@^7.0.0-beta.39":
+ version "7.0.0"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.0.0.tgz#c40ced34c2783985d90d9f9ac77a13e6fb396a01"
+ integrity sha512-WhXUNb4It5a19RsgKKbQPrjmy4yWOY1KynpEbNw7bnd1QTcrT/EIl3MJvnGgpgvrKyKbqX7nUNOJfkpLOnoDKA==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.0.0"
+ "@babel/plugin-syntax-flow" "^7.0.0"
+
+"@babel/plugin-transform-for-of@^7.0.0":
+ version "7.0.0"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.0.0.tgz#f2ba4eadb83bd17dc3c7e9b30f4707365e1c3e39"
+ integrity sha512-TlxKecN20X2tt2UEr2LNE6aqA0oPeMT1Y3cgz8k4Dn1j5ObT8M3nl9aA37LLklx0PBZKETC9ZAf9n/6SujTuXA==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.0.0"
+
+"@babel/plugin-transform-function-name@^7.1.0":
+ version "7.1.0"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.1.0.tgz#29c5550d5c46208e7f730516d41eeddd4affadbb"
+ integrity sha512-VxOa1TMlFMtqPW2IDYZQaHsFrq/dDoIjgN098NowhexhZcz3UGlvPgZXuE1jEvNygyWyxRacqDpCZt+par1FNg==
+ dependencies:
+ "@babel/helper-function-name" "^7.1.0"
+ "@babel/helper-plugin-utils" "^7.0.0"
+
+"@babel/plugin-transform-literals@^7.0.0":
+ version "7.0.0"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.0.0.tgz#2aec1d29cdd24c407359c930cdd89e914ee8ff86"
+ integrity sha512-1NTDBWkeNXgpUcyoVFxbr9hS57EpZYXpje92zv0SUzjdu3enaRwF/l3cmyRnXLtIdyJASyiS6PtybK+CgKf7jA==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.0.0"
+
+"@babel/plugin-transform-modules-amd@^7.1.0":
+ version "7.1.0"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.1.0.tgz#f9e0a7072c12e296079b5a59f408ff5b97bf86a8"
+ integrity sha512-wt8P+xQ85rrnGNr2x1iV3DW32W8zrB6ctuBkYBbf5/ZzJY99Ob4MFgsZDFgczNU76iy9PWsy4EuxOliDjdKw6A==
+ dependencies:
+ "@babel/helper-module-transforms" "^7.1.0"
+ "@babel/helper-plugin-utils" "^7.0.0"
+
+"@babel/plugin-transform-modules-commonjs@^7.0.0", "@babel/plugin-transform-modules-commonjs@^7.1.0":
+ version "7.1.0"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.1.0.tgz#0a9d86451cbbfb29bd15186306897c67f6f9a05c"
+ integrity sha512-wtNwtMjn1XGwM0AXPspQgvmE6msSJP15CX2RVfpTSTNPLhKhaOjaIfBaVfj4iUZ/VrFSodcFedwtPg/NxwQlPA==
+ dependencies:
+ "@babel/helper-module-transforms" "^7.1.0"
+ "@babel/helper-plugin-utils" "^7.0.0"
+ "@babel/helper-simple-access" "^7.1.0"
+
+"@babel/plugin-transform-modules-systemjs@^7.0.0":
+ version "7.0.0"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.0.0.tgz#8873d876d4fee23209decc4d1feab8f198cf2df4"
+ integrity sha512-8EDKMAsitLkiF/D4Zhe9CHEE2XLh4bfLbb9/Zf3FgXYQOZyZYyg7EAel/aT2A7bHv62jwHf09q2KU/oEexr83g==
+ dependencies:
+ "@babel/helper-hoist-variables" "^7.0.0"
+ "@babel/helper-plugin-utils" "^7.0.0"
+
+"@babel/plugin-transform-modules-umd@^7.1.0":
+ version "7.1.0"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.1.0.tgz#a29a7d85d6f28c3561c33964442257cc6a21f2a8"
+ integrity sha512-enrRtn5TfRhMmbRwm7F8qOj0qEYByqUvTttPEGimcBH4CJHphjyK1Vg7sdU7JjeEmgSpM890IT/efS2nMHwYig==
+ dependencies:
+ "@babel/helper-module-transforms" "^7.1.0"
+ "@babel/helper-plugin-utils" "^7.0.0"
+
+"@babel/plugin-transform-new-target@^7.0.0":
+ version "7.0.0"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.0.0.tgz#ae8fbd89517fa7892d20e6564e641e8770c3aa4a"
+ integrity sha512-yin069FYjah+LbqfGeTfzIBODex/e++Yfa0rH0fpfam9uTbuEeEOx5GLGr210ggOV77mVRNoeqSYqeuaqSzVSw==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.0.0"
+
+"@babel/plugin-transform-object-super@^7.1.0":
+ version "7.1.0"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.1.0.tgz#b1ae194a054b826d8d4ba7ca91486d4ada0f91bb"
+ integrity sha512-/O02Je1CRTSk2SSJaq0xjwQ8hG4zhZGNjE8psTsSNPXyLRCODv7/PBozqT5AmQMzp7MI3ndvMhGdqp9c96tTEw==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.0.0"
+ "@babel/helper-replace-supers" "^7.1.0"
+
+"@babel/plugin-transform-parameters@^7.1.0":
+ version "7.1.0"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.1.0.tgz#44f492f9d618c9124026e62301c296bf606a7aed"
+ integrity sha512-vHV7oxkEJ8IHxTfRr3hNGzV446GAb+0hgbA7o/0Jd76s+YzccdWuTU296FOCOl/xweU4t/Ya4g41yWz80RFCRw==
+ dependencies:
+ "@babel/helper-call-delegate" "^7.1.0"
+ "@babel/helper-get-function-arity" "^7.0.0"
+ "@babel/helper-plugin-utils" "^7.0.0"
+
+"@babel/plugin-transform-react-jsx@^7.0.0", "@babel/plugin-transform-react-jsx@^7.0.0-beta.39":
+ version "7.0.0"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.0.0.tgz#524379e4eca5363cd10c4446ba163f093da75f3e"
+ integrity sha512-0TMP21hXsSUjIQJmu/r7RiVxeFrXRcMUigbKu0BLegJK9PkYodHstaszcig7zxXfaBji2LYUdtqIkHs+hgYkJQ==
+ dependencies:
+ "@babel/helper-builder-react-jsx" "^7.0.0"
+ "@babel/helper-plugin-utils" "^7.0.0"
+ "@babel/plugin-syntax-jsx" "^7.0.0"
+
+"@babel/plugin-transform-regenerator@^7.0.0":
+ version "7.0.0"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.0.0.tgz#5b41686b4ed40bef874d7ed6a84bdd849c13e0c1"
+ integrity sha512-sj2qzsEx8KDVv1QuJc/dEfilkg3RRPvPYx/VnKLtItVQRWt1Wqf5eVCOLZm29CiGFfYYsA3VPjfizTCV0S0Dlw==
+ dependencies:
+ regenerator-transform "^0.13.3"
+
+"@babel/plugin-transform-shorthand-properties@^7.0.0":
+ version "7.0.0"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.0.0.tgz#85f8af592dcc07647541a0350e8c95c7bf419d15"
+ integrity sha512-g/99LI4vm5iOf5r1Gdxq5Xmu91zvjhEG5+yZDJW268AZELAu4J1EiFLnkSG3yuUsZyOipVOVUKoGPYwfsTymhw==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.0.0"
+
+"@babel/plugin-transform-spread@^7.0.0":
+ version "7.0.0"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.0.0.tgz#93583ce48dd8c85e53f3a46056c856e4af30b49b"
+ integrity sha512-L702YFy2EvirrR4shTj0g2xQp7aNwZoWNCkNu2mcoU0uyzMl0XRwDSwzB/xp6DSUFiBmEXuyAyEN16LsgVqGGQ==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.0.0"
+
+"@babel/plugin-transform-sticky-regex@^7.0.0":
+ version "7.0.0"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.0.0.tgz#30a9d64ac2ab46eec087b8530535becd90e73366"
+ integrity sha512-LFUToxiyS/WD+XEWpkx/XJBrUXKewSZpzX68s+yEOtIbdnsRjpryDw9U06gYc6klYEij/+KQVRnD3nz3AoKmjw==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.0.0"
+ "@babel/helper-regex" "^7.0.0"
+
+"@babel/plugin-transform-template-literals@^7.0.0":
+ version "7.0.0"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.0.0.tgz#084f1952efe5b153ddae69eb8945f882c7a97c65"
+ integrity sha512-vA6rkTCabRZu7Nbl9DfLZE1imj4tzdWcg5vtdQGvj+OH9itNNB6hxuRMHuIY8SGnEt1T9g5foqs9LnrHzsqEFg==
+ dependencies:
+ "@babel/helper-annotate-as-pure" "^7.0.0"
+ "@babel/helper-plugin-utils" "^7.0.0"
+
+"@babel/plugin-transform-typeof-symbol@^7.0.0":
+ version "7.0.0"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.0.0.tgz#4dcf1e52e943e5267b7313bff347fdbe0f81cec9"
+ integrity sha512-1r1X5DO78WnaAIvs5uC48t41LLckxsYklJrZjNKcevyz83sF2l4RHbw29qrCPr/6ksFsdfRpT/ZgxNWHXRnffg==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.0.0"
+
+"@babel/plugin-transform-unicode-regex@^7.0.0":
+ version "7.0.0"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.0.0.tgz#c6780e5b1863a76fe792d90eded9fcd5b51d68fc"
+ integrity sha512-uJBrJhBOEa3D033P95nPHu3nbFwFE9ZgXsfEitzoIXIwqAZWk7uXcg06yFKXz9FSxBH5ucgU/cYdX0IV8ldHKw==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.0.0"
+ "@babel/helper-regex" "^7.0.0"
+ regexpu-core "^4.1.3"
+
+"@babel/preset-env@^7.0.0", "@babel/preset-env@^7.0.0-beta.39":
+ version "7.1.0"
+ resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.1.0.tgz#e67ea5b0441cfeab1d6f41e9b5c79798800e8d11"
+ integrity sha512-ZLVSynfAoDHB/34A17/JCZbyrzbQj59QC1Anyueb4Bwjh373nVPq5/HMph0z+tCmcDjXDe+DlKQq9ywQuvWrQg==
+ dependencies:
+ "@babel/helper-module-imports" "^7.0.0"
+ "@babel/helper-plugin-utils" "^7.0.0"
+ "@babel/plugin-proposal-async-generator-functions" "^7.1.0"
+ "@babel/plugin-proposal-json-strings" "^7.0.0"
+ "@babel/plugin-proposal-object-rest-spread" "^7.0.0"
+ "@babel/plugin-proposal-optional-catch-binding" "^7.0.0"
+ "@babel/plugin-proposal-unicode-property-regex" "^7.0.0"
+ "@babel/plugin-syntax-async-generators" "^7.0.0"
+ "@babel/plugin-syntax-object-rest-spread" "^7.0.0"
+ "@babel/plugin-syntax-optional-catch-binding" "^7.0.0"
+ "@babel/plugin-transform-arrow-functions" "^7.0.0"
+ "@babel/plugin-transform-async-to-generator" "^7.1.0"
+ "@babel/plugin-transform-block-scoped-functions" "^7.0.0"
+ "@babel/plugin-transform-block-scoping" "^7.0.0"
+ "@babel/plugin-transform-classes" "^7.1.0"
+ "@babel/plugin-transform-computed-properties" "^7.0.0"
+ "@babel/plugin-transform-destructuring" "^7.0.0"
+ "@babel/plugin-transform-dotall-regex" "^7.0.0"
+ "@babel/plugin-transform-duplicate-keys" "^7.0.0"
+ "@babel/plugin-transform-exponentiation-operator" "^7.1.0"
+ "@babel/plugin-transform-for-of" "^7.0.0"
+ "@babel/plugin-transform-function-name" "^7.1.0"
+ "@babel/plugin-transform-literals" "^7.0.0"
+ "@babel/plugin-transform-modules-amd" "^7.1.0"
+ "@babel/plugin-transform-modules-commonjs" "^7.1.0"
+ "@babel/plugin-transform-modules-systemjs" "^7.0.0"
+ "@babel/plugin-transform-modules-umd" "^7.1.0"
+ "@babel/plugin-transform-new-target" "^7.0.0"
+ "@babel/plugin-transform-object-super" "^7.1.0"
+ "@babel/plugin-transform-parameters" "^7.1.0"
+ "@babel/plugin-transform-regenerator" "^7.0.0"
+ "@babel/plugin-transform-shorthand-properties" "^7.0.0"
+ "@babel/plugin-transform-spread" "^7.0.0"
+ "@babel/plugin-transform-sticky-regex" "^7.0.0"
+ "@babel/plugin-transform-template-literals" "^7.0.0"
+ "@babel/plugin-transform-typeof-symbol" "^7.0.0"
+ "@babel/plugin-transform-unicode-regex" "^7.0.0"
+ browserslist "^4.1.0"
+ invariant "^2.2.2"
+ js-levenshtein "^1.1.3"
+ semver "^5.3.0"
+
+"@babel/runtime@^7.0.0":
+ version "7.1.2"
+ resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.1.2.tgz#81c89935f4647706fc54541145e6b4ecfef4b8e3"
+ integrity sha512-Y3SCjmhSupzFB6wcv1KmmFucH6gDVnI30WjOcicV10ju0cZjak3Jcs67YLIXBrmZYw1xCrVeJPbycFwrqNyxpg==
+ dependencies:
+ regenerator-runtime "^0.12.0"
+
+"@babel/template@^7.0.0", "@babel/template@^7.1.0", "@babel/template@^7.1.2":
+ version "7.1.2"
+ resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.1.2.tgz#090484a574fef5a2d2d7726a674eceda5c5b5644"
+ integrity sha512-SY1MmplssORfFiLDcOETrW7fCLl+PavlwMh92rrGcikQaRq4iWPVH0MpwPpY3etVMx6RnDjXtr6VZYr/IbP/Ag==
+ dependencies:
+ "@babel/code-frame" "^7.0.0"
+ "@babel/parser" "^7.1.2"
+ "@babel/types" "^7.1.2"
+
+"@babel/traverse@^7.0.0", "@babel/traverse@^7.1.0":
+ version "7.1.0"
+ resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.1.0.tgz#503ec6669387efd182c3888c4eec07bcc45d91b2"
+ integrity sha512-bwgln0FsMoxm3pLOgrrnGaXk18sSM9JNf1/nHC/FksmNGFbYnPWY4GYCfLxyP1KRmfsxqkRpfoa6xr6VuuSxdw==
+ dependencies:
+ "@babel/code-frame" "^7.0.0"
+ "@babel/generator" "^7.0.0"
+ "@babel/helper-function-name" "^7.1.0"
+ "@babel/helper-split-export-declaration" "^7.0.0"
+ "@babel/parser" "^7.1.0"
+ "@babel/types" "^7.0.0"
+ debug "^3.1.0"
+ globals "^11.1.0"
+ lodash "^4.17.10"
+
+"@babel/types@^7.0.0", "@babel/types@^7.1.2":
+ version "7.1.2"
+ resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.1.2.tgz#183e7952cf6691628afdc2e2b90d03240bac80c0"
+ integrity sha512-pb1I05sZEKiSlMUV9UReaqsCPUpgbHHHu2n1piRm7JkuBkm6QxcaIzKu6FMnMtCbih/cEYTR+RGYYC96Yk9HAg==
+ dependencies:
+ esutils "^2.0.2"
+ lodash "^4.17.10"
+ to-fast-properties "^2.0.0"
+
+"@mrmlnc/readdir-enhanced@^2.2.1":
+ version "2.2.1"
+ resolved "https://registry.yarnpkg.com/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz#524af240d1a360527b730475ecfa1344aa540dde"
+ integrity sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g==
+ dependencies:
+ call-me-maybe "^1.0.1"
+ glob-to-regexp "^0.3.0"
+
+"@nodelib/fs.stat@^1.0.1":
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-1.1.2.tgz#54c5a964462be3d4d78af631363c18d6fa91ac26"
+ integrity sha512-yprFYuno9FtNsSHVlSWd+nRlmGoAbqbeCwOryP6sC/zoCjhpArcRMYp19EvpSUSizJAlsXEwJv+wcWS9XaXdMw==
+
+"@types/acorn@^4.0.3":
+ version "4.0.3"
+ resolved "https://registry.yarnpkg.com/@types/acorn/-/acorn-4.0.3.tgz#d1f3e738dde52536f9aad3d3380d14e448820afd"
+ integrity sha512-gou/kWQkGPMZjdCKNZGDpqxLm9+ErG/pFZKPX4tvCjr0Xf4FCYYX3nAsu7aDVKJV3KUe27+mvqqyWT/9VZoM/A==
+ dependencies:
+ "@types/estree" "*"
+
+"@types/commander@^2.11.0":
+ version "2.12.2"
+ resolved "https://registry.yarnpkg.com/@types/commander/-/commander-2.12.2.tgz#183041a23842d4281478fa5d23c5ca78e6fd08ae"
+ integrity sha512-0QEFiR8ljcHp9bAbWxecjVRuAMr16ivPiGOw6KFQBVrVd0RQIcM3xKdRisH2EDWgVWujiYtHwhSkSUoAAGzH7Q==
+ dependencies:
+ commander "*"
+
+"@types/estree@*":
+ version "0.0.39"
+ resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.39.tgz#e177e699ee1b8c22d23174caaa7422644389509f"
+ integrity sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==
+
+"@types/estree@0.0.38":
+ version "0.0.38"
+ resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.38.tgz#c1be40aa933723c608820a99a373a16d215a1ca2"
+ integrity sha512-F/v7t1LwS4vnXuPooJQGBRKRGIoxWUTmA4VHfqjOccFsNDThD5bfUNpITive6s352O7o384wcpEaDV8rHCehDA==
+
+"@types/semver@^5.4.0":
+ version "5.5.0"
+ resolved "https://registry.yarnpkg.com/@types/semver/-/semver-5.5.0.tgz#146c2a29ee7d3bae4bf2fcb274636e264c813c45"
+ integrity sha512-41qEJgBH/TWgo5NFSvBCJ1qkoi3Q6ONSF2avrHq1LVEZfYpdHmj0y9SuTK+u9ZhG1sYQKBL1AWXKyLWP4RaUoQ==
+
+"@vue/component-compiler-utils@^1.0.0":
+ version "1.3.1"
+ resolved "https://registry.yarnpkg.com/@vue/component-compiler-utils/-/component-compiler-utils-1.3.1.tgz#686f0b913d59590ae327b2a1cb4b6d9b931bbe0e"
+ integrity sha512-IyjJW6ToMitgAhp3xh22QiEW8JvHfLyzlyY/J+GjJ71miod9tNsy6xT2ckm/VirlhPMfeM43kgYZe34jhmmzpw==
+ dependencies:
+ consolidate "^0.15.1"
+ hash-sum "^1.0.2"
+ lru-cache "^4.1.2"
+ merge-source-map "^1.1.0"
+ postcss "^6.0.20"
+ postcss-selector-parser "^3.1.1"
+ prettier "^1.13.0"
+ source-map "^0.5.6"
+ vue-template-es2015-compiler "^1.6.0"
+
+abbrev@1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8"
+ integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==
+
+acorn-dynamic-import@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/acorn-dynamic-import/-/acorn-dynamic-import-3.0.0.tgz#901ceee4c7faaef7e07ad2a47e890675da50a278"
+ integrity sha512-zVWV8Z8lislJoOKKqdNMOB+s6+XV5WERty8MnKBeFgwA+19XJjJHs2RP5dzM57FftIs+jQnRToLiWazKr6sSWg==
+ dependencies:
+ acorn "^5.0.0"
+
+acorn-es7-plugin@^1.1.7:
+ version "1.1.7"
+ resolved "https://registry.yarnpkg.com/acorn-es7-plugin/-/acorn-es7-plugin-1.1.7.tgz#f2ee1f3228a90eead1245f9ab1922eb2e71d336b"
+ integrity sha1-8u4fMiipDurRJF+asZIusucdM2s=
+
+acorn-jsx@^4.1.1:
+ version "4.1.1"
+ resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-4.1.1.tgz#e8e41e48ea2fe0c896740610ab6a4ffd8add225e"
+ integrity sha512-JY+iV6r+cO21KtntVvFkD+iqjtdpRUpGqKWgfkCdZq1R+kbreEl8EcdcJR4SmiIgsIQT33s6QzheQ9a275Q8xw==
+ dependencies:
+ acorn "^5.0.3"
+
+"acorn@>= 2.5.2 <= 5.7.3", acorn@^5.0.0, acorn@^5.0.3, acorn@^5.4.1, acorn@^5.5.3:
+ version "5.7.3"
+ resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.7.3.tgz#67aa231bf8812974b85235a96771eb6bd07ea279"
+ integrity sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw==
+
+alphanum-sort@^1.0.0, alphanum-sort@^1.0.1, alphanum-sort@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/alphanum-sort/-/alphanum-sort-1.0.2.tgz#97a1119649b211ad33691d9f9f486a8ec9fbe0a3"
+ integrity sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM=
+
+ansi-align@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/ansi-align/-/ansi-align-2.0.0.tgz#c36aeccba563b89ceb556f3690f0b1d9e3547f7f"
+ integrity sha1-w2rsy6VjuJzrVW82kPCx2eNUf38=
+ dependencies:
+ string-width "^2.0.0"
+
+ansi-escapes@^3.0.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.1.0.tgz#f73207bb81207d75fd6c83f125af26eea378ca30"
+ integrity sha512-UgAb8H9D41AQnu/PbWlCofQVcnV4Gs2bBJi9eZPxfU/hgglFh3SMDMENRIqdr7H6XFnXdoknctFByVsCOotTVw==
+
+ansi-regex@^2.0.0:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df"
+ integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8=
+
+ansi-regex@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998"
+ integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=
+
+ansi-styles@^2.2.1:
+ version "2.2.1"
+ resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe"
+ integrity sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=
+
+ansi-styles@^3.2.1:
+ version "3.2.1"
+ resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d"
+ integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==
+ dependencies:
+ color-convert "^1.9.0"
+
+ansi-to-html@^0.6.4:
+ version "0.6.6"
+ resolved "https://registry.yarnpkg.com/ansi-to-html/-/ansi-to-html-0.6.6.tgz#58a8d04b87ec9a85e3ad273c12a5fbc7147b9c42"
+ integrity sha512-90M/2sZna3OsoOEbSyXK46poFnlClBC53Rx6etNKQK7iShsX5fI5E/M9Ld6FurtLaxAWLuAPi0Jp8p3y5oAkxg==
+ dependencies:
+ entities "^1.1.1"
+
+anymatch@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb"
+ integrity sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==
+ dependencies:
+ micromatch "^3.1.4"
+ normalize-path "^2.1.1"
+
+aproba@^1.0.3:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a"
+ integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==
+
+are-we-there-yet@~1.1.2:
+ version "1.1.5"
+ resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz#4b35c2944f062a8bfcda66410760350fe9ddfc21"
+ integrity sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==
+ dependencies:
+ delegates "^1.0.0"
+ readable-stream "^2.0.6"
+
+argparse@^1.0.7:
+ version "1.0.10"
+ resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911"
+ integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==
+ dependencies:
+ sprintf-js "~1.0.2"
+
+arr-diff@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-2.0.0.tgz#8f3b827f955a8bd669697e4a4256ac3ceae356cf"
+ integrity sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=
+ dependencies:
+ arr-flatten "^1.0.1"
+
+arr-diff@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520"
+ integrity sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=
+
+arr-flatten@^1.0.1, arr-flatten@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1"
+ integrity sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==
+
+arr-union@^3.1.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4"
+ integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=
+
+array-union@^1.0.1:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39"
+ integrity sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=
+ dependencies:
+ array-uniq "^1.0.1"
+
+array-uniq@^1.0.1:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6"
+ integrity sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=
+
+array-unique@^0.2.1:
+ version "0.2.1"
+ resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.2.1.tgz#a1d97ccafcbc2625cc70fadceb36a50c58b01a53"
+ integrity sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=
+
+array-unique@^0.3.2:
+ version "0.3.2"
+ resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428"
+ integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=
+
+arrify@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d"
+ integrity sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=
+
+asn1.js@^4.0.0:
+ version "4.10.1"
+ resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-4.10.1.tgz#b9c2bf5805f1e64aadeed6df3a2bfafb5a73f5a0"
+ integrity sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==
+ dependencies:
+ bn.js "^4.0.0"
+ inherits "^2.0.1"
+ minimalistic-assert "^1.0.0"
+
+assert@^1.1.1:
+ version "1.4.1"
+ resolved "https://registry.yarnpkg.com/assert/-/assert-1.4.1.tgz#99912d591836b5a6f5b345c0f07eefc08fc65d91"
+ integrity sha1-mZEtWRg2tab1s0XA8H7vwI/GXZE=
+ dependencies:
+ util "0.10.3"
+
+assign-symbols@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367"
+ integrity sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=
+
+async-each@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.1.tgz#19d386a1d9edc6e7c1c85d388aedbcc56d33602d"
+ integrity sha1-GdOGodntxufByF04iu28xW0zYC0=
+
+async-limiter@~1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.0.tgz#78faed8c3d074ab81f22b4e985d79e8738f720f8"
+ integrity sha512-jp/uFnooOiO+L211eZOoSyzpOITMXx1rBITauYykG3BRYPu8h0UcxsPNB04RR5vo4Tyz3+ay17tR6JVf9qzYWg==
+
+atob@^2.1.1:
+ version "2.1.2"
+ resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9"
+ integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==
+
+autoprefixer@^6.3.1:
+ version "6.7.7"
+ resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-6.7.7.tgz#1dbd1c835658e35ce3f9984099db00585c782014"
+ integrity sha1-Hb0cg1ZY41zj+ZhAmdsAWFx4IBQ=
+ dependencies:
+ browserslist "^1.7.6"
+ caniuse-db "^1.0.30000634"
+ normalize-range "^0.1.2"
+ num2fraction "^1.2.2"
+ postcss "^5.2.16"
+ postcss-value-parser "^3.2.3"
+
+babel-plugin-alter-object-assign@^1.0.1:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/babel-plugin-alter-object-assign/-/babel-plugin-alter-object-assign-1.0.2.tgz#eb73f6c18b391093a2be8849ee2f8351d7751f3f"
+ integrity sha512-16m4iTnj1FQ439wM4bisjfnd10Kk9ArY6x7oLbZ3OyaNckyXzhmuQWQ/ntdDaZxhrkBGJZiJtUNH/k3kLRxD+Q==
+
+babel-plugin-transform-vue-jsx@^4:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/babel-plugin-transform-vue-jsx/-/babel-plugin-transform-vue-jsx-4.0.1.tgz#2c8bddce87a6ef09eaa59869ff1bfbeeafc5f88d"
+ integrity sha512-wbOz7ITB5cloLSjKUU1hWn8zhR+Dwah/RZiTiJY/CQliCwhowmzu6m7NEF+y5EJX/blDzGjRtZvC10Vdb3Q7vw==
+ dependencies:
+ esutils "^2.0.2"
+
+babel-runtime@^6.11.6, babel-runtime@^6.26.0:
+ version "6.26.0"
+ resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe"
+ integrity sha1-llxwWGaOgrVde/4E/yM3vItWR/4=
+ dependencies:
+ core-js "^2.4.0"
+ regenerator-runtime "^0.11.0"
+
+babel-types@^6.15.0:
+ version "6.26.0"
+ resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.26.0.tgz#a3b073f94ab49eb6fa55cd65227a334380632497"
+ integrity sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=
+ dependencies:
+ babel-runtime "^6.26.0"
+ esutils "^2.0.2"
+ lodash "^4.17.4"
+ to-fast-properties "^1.0.3"
+
+babylon-walk@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/babylon-walk/-/babylon-walk-1.0.2.tgz#3b15a5ddbb482a78b4ce9c01c8ba181702d9d6ce"
+ integrity sha1-OxWl3btIKni0zpwByLoYFwLZ1s4=
+ dependencies:
+ babel-runtime "^6.11.6"
+ babel-types "^6.15.0"
+ lodash.clone "^4.5.0"
+
+balanced-match@^0.4.2:
+ version "0.4.2"
+ resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-0.4.2.tgz#cb3f3e3c732dc0f01ee70b403f302e61d7709838"
+ integrity sha1-yz8+PHMtwPAe5wtAPzAuYddwmDg=
+
+balanced-match@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767"
+ integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c=
+
+base64-js@^1.0.2:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.3.0.tgz#cab1e6118f051095e58b5281aea8c1cd22bfc0e3"
+ integrity sha512-ccav/yGvoa80BQDljCxsmmQ3Xvx60/UpBIij5QN21W3wBi/hhIC9OoO+KLpu9IJTS9j4DRVJ3aDDF9cMSoa2lw==
+
+base@^0.11.1:
+ version "0.11.2"
+ resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f"
+ integrity sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==
+ dependencies:
+ 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"
+
+big.js@^3.1.3:
+ version "3.2.0"
+ resolved "https://registry.yarnpkg.com/big.js/-/big.js-3.2.0.tgz#a5fc298b81b9e0dca2e458824784b65c52ba588e"
+ integrity sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q==
+
+bili@^3.1.2:
+ version "3.1.2"
+ resolved "https://registry.yarnpkg.com/bili/-/bili-3.1.2.tgz#0888ef9f479331c5f213899e2821a2e3ea35c72a"
+ integrity sha1-CIjvn0eTMcXyE4meKCGi4+o1xyo=
+ dependencies:
+ "@babel/core" "^7.0.0-beta.39"
+ "@babel/plugin-proposal-class-properties" "^7.0.0-beta.39"
+ "@babel/plugin-proposal-object-rest-spread" "^7.0.0-beta.39"
+ "@babel/plugin-transform-flow-strip-types" "^7.0.0-beta.39"
+ "@babel/plugin-transform-react-jsx" "^7.0.0-beta.39"
+ "@babel/preset-env" "^7.0.0-beta.39"
+ babel-plugin-alter-object-assign "^1.0.1"
+ babel-plugin-transform-vue-jsx "^4"
+ boxen "^1.3.0"
+ bytes "^3.0.0"
+ cac "^4.2.4"
+ camelcase "^4.1.0"
+ chalk "^2.3.0"
+ fast-async "^6.3.0"
+ find-babel-config "^1.1.0"
+ first-commit-date "^0.2.0"
+ fs-extra "^5.0.0"
+ globby "^7.1.1"
+ gzip-size "^4.1.0"
+ is-builtin-module "^2.0.0"
+ is-ci "^1.1.0"
+ log-update "^2.3.0"
+ parse-package-name "^0.1.0"
+ resolve-from "^4.0.0"
+ rollup "^0.57.1"
+ rollup-plugin-alias "^1.4.0"
+ rollup-plugin-babel "^4.0.0-beta.2"
+ rollup-plugin-buble "^0.19.2"
+ rollup-plugin-commonjs "^9.1.0"
+ rollup-plugin-hashbang "^1.0.1"
+ rollup-plugin-json "^2.3.0"
+ rollup-plugin-node-resolve "^3.3.0"
+ rollup-plugin-postcss "^1.2.3"
+ rollup-plugin-replace "^2.0.0"
+ rollup-plugin-uglify "^3.0.0"
+ string-width "^2.1.1"
+ stringify-author "^0.1.3"
+ text-table "^0.2.0"
+ use-config "^2.0.4"
+
+binary-extensions@^1.0.0:
+ version "1.12.0"
+ resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.12.0.tgz#c2d780f53d45bba8317a8902d4ceeaf3a6385b14"
+ integrity sha512-DYWGk01lDcxeS/K9IHPGWfT8PsJmbXRtRd2Sx72Tnb8pcYZQFF1oSDb8hJtS1vhp212q1Rzi5dUf9+nq0o9UIg==
+
+bindings@~1.2.1:
+ version "1.2.1"
+ resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.2.1.tgz#14ad6113812d2d37d72e67b4cacb4bb726505f11"
+ integrity sha1-FK1hE4EtLTfXLme0ystLtyZQXxE=
+
+bluebird@^3.1.1:
+ version "3.5.2"
+ resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.2.tgz#1be0908e054a751754549c270489c1505d4ab15a"
+ integrity sha512-dhHTWMI7kMx5whMQntl7Vr9C6BvV10lFXDAasnqnrMYhXVCzzk6IO9Fo2L75jXHT07WrOngL1WDXOp+yYS91Yg==
+
+bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.1.1, bn.js@^4.4.0:
+ version "4.11.8"
+ resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.8.tgz#2cde09eb5ee341f484746bb0309b3253b1b1442f"
+ integrity sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==
+
+boolbase@^1.0.0, boolbase@~1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e"
+ integrity sha1-aN/1++YMUes3cl6p4+0xDcwed24=
+
+boxen@^1.3.0:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/boxen/-/boxen-1.3.0.tgz#55c6c39a8ba58d9c61ad22cd877532deb665a20b"
+ integrity sha512-TNPjfTr432qx7yOjQyaXm3dSR0MH9vXp7eT1BFSl/C51g+EFnOR9hTg1IreahGBmDNCehscshe45f+C1TBZbLw==
+ dependencies:
+ 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"
+
+brace-expansion@^1.1.7:
+ version "1.1.11"
+ resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd"
+ integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==
+ dependencies:
+ balanced-match "^1.0.0"
+ concat-map "0.0.1"
+
+braces@^1.8.2:
+ version "1.8.5"
+ resolved "https://registry.yarnpkg.com/braces/-/braces-1.8.5.tgz#ba77962e12dff969d6b76711e914b737857bf6a7"
+ integrity sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=
+ dependencies:
+ expand-range "^1.8.1"
+ preserve "^0.2.0"
+ repeat-element "^1.1.2"
+
+braces@^2.3.0, braces@^2.3.1:
+ version "2.3.2"
+ resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729"
+ integrity sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==
+ dependencies:
+ 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"
+
+brfs@^1.2.0:
+ version "1.6.1"
+ resolved "https://registry.yarnpkg.com/brfs/-/brfs-1.6.1.tgz#b78ce2336d818e25eea04a0947cba6d4fb8849c3"
+ integrity sha512-OfZpABRQQf+Xsmju8XE9bDjs+uU4vLREGolP7bDgcpsI17QREyZ4Bl+2KLxxx1kCgA0fAIhKQBaBYh+PEcCqYQ==
+ dependencies:
+ quote-stream "^1.0.1"
+ resolve "^1.1.5"
+ static-module "^2.2.0"
+ through2 "^2.0.0"
+
+brorand@^1.0.1:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f"
+ integrity sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=
+
+browserify-aes@^1.0.0, browserify-aes@^1.0.4:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.2.0.tgz#326734642f403dabc3003209853bb70ad428ef48"
+ integrity sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==
+ dependencies:
+ 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@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/browserify-cipher/-/browserify-cipher-1.0.1.tgz#8d6474c1b870bfdabcd3bcfcc1934a10e94f15f0"
+ integrity sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==
+ dependencies:
+ browserify-aes "^1.0.4"
+ browserify-des "^1.0.0"
+ evp_bytestokey "^1.0.0"
+
+browserify-des@^1.0.0:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/browserify-des/-/browserify-des-1.0.2.tgz#3af4f1f59839403572f1c66204375f7a7f703e9c"
+ integrity sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==
+ dependencies:
+ cipher-base "^1.0.1"
+ des.js "^1.0.0"
+ inherits "^2.0.1"
+ safe-buffer "^5.1.2"
+
+browserify-rsa@^4.0.0:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.0.1.tgz#21e0abfaf6f2029cf2fafb133567a701d4135524"
+ integrity sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=
+ dependencies:
+ bn.js "^4.1.0"
+ randombytes "^2.0.1"
+
+browserify-sign@^4.0.0:
+ version "4.0.4"
+ resolved "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.0.4.tgz#aa4eb68e5d7b658baa6bf6a57e630cbd7a93d298"
+ integrity sha1-qk62jl17ZYuqa/alfmMMvXqT0pg=
+ dependencies:
+ 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@^0.2.0:
+ version "0.2.0"
+ resolved "https://registry.yarnpkg.com/browserify-zlib/-/browserify-zlib-0.2.0.tgz#2869459d9aa3be245fe8fe2ca1f46e2e7f54d73f"
+ integrity sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==
+ dependencies:
+ pako "~1.0.5"
+
+browserslist@^1.3.6, browserslist@^1.5.2, browserslist@^1.7.6:
+ version "1.7.7"
+ resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-1.7.7.tgz#0bd76704258be829b2398bb50e4b62d1a166b0b9"
+ integrity sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk=
+ dependencies:
+ caniuse-db "^1.0.30000639"
+ electron-to-chromium "^1.2.7"
+
+browserslist@^4.0.0, browserslist@^4.1.0:
+ version "4.2.0"
+ resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.2.0.tgz#3e5e5edf7fa9758ded0885cf88c1e4be753a591c"
+ integrity sha512-Berls1CHL7qfQz8Lct6QxYA5d2Tvt4doDWHcjvAISybpd+EKZVppNtXgXhaN6SdrPKo7YLTSZuYBs5cYrSWN8w==
+ dependencies:
+ caniuse-lite "^1.0.30000889"
+ electron-to-chromium "^1.3.73"
+ node-releases "^1.0.0-alpha.12"
+
+buble@^0.19.4:
+ version "0.19.4"
+ resolved "https://registry.yarnpkg.com/buble/-/buble-0.19.4.tgz#0b51466592555ee34ff5fbe1030a97f3812e4d0a"
+ integrity sha512-xaTfnWdx80TiajGDZoSYB17nEDqjGnVxeug5W7tvXIAMn61yMa5AfTuWu3F4nLL2Fv/hK8T6GktZvQ6yvPZMpA==
+ dependencies:
+ acorn "^5.4.1"
+ acorn-dynamic-import "^3.0.0"
+ acorn-jsx "^4.1.1"
+ chalk "^2.3.1"
+ magic-string "^0.22.4"
+ minimist "^1.2.0"
+ os-homedir "^1.0.1"
+ regexpu-core "^4.1.3"
+ vlq "^1.0.0"
+
+buffer-equal@0.0.1:
+ version "0.0.1"
+ resolved "https://registry.yarnpkg.com/buffer-equal/-/buffer-equal-0.0.1.tgz#91bc74b11ea405bc916bc6aa908faafa5b4aac4b"
+ integrity sha1-kbx0sR6kBbyRa8aqkI+q+ltKrEs=
+
+buffer-from@^1.0.0:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef"
+ integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==
+
+buffer-xor@^1.0.3:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9"
+ integrity sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=
+
+buffer@^4.3.0:
+ version "4.9.1"
+ resolved "https://registry.yarnpkg.com/buffer/-/buffer-4.9.1.tgz#6d1bb601b07a4efced97094132093027c95bc298"
+ integrity sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg=
+ dependencies:
+ base64-js "^1.0.2"
+ ieee754 "^1.1.4"
+ isarray "^1.0.0"
+
+builtin-modules@^1.0.0:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f"
+ integrity sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=
+
+builtin-modules@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-2.0.0.tgz#60b7ef5ae6546bd7deefa74b08b62a43a232648e"
+ integrity sha512-3U5kUA5VPsRUA3nofm/BXX7GVHKfxz0hOBAPxXrIvHzlDRkQVqEn6yi8QJegxl4LzOHLdvb7XF5dVawa/VVYBg==
+
+builtin-status-codes@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8"
+ integrity sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=
+
+bytes@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048"
+ integrity sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=
+
+cac@^4.2.4:
+ version "4.4.4"
+ resolved "https://registry.yarnpkg.com/cac/-/cac-4.4.4.tgz#dec5f3f6aae29ce988d7654e1fb3c6e8077924b1"
+ integrity sha1-3sXz9qrinOmI12VOH7PG6Ad5JLE=
+ dependencies:
+ chalk "^2.0.1"
+ minimost "^1.0.0"
+ read-pkg-up "^2.0.0"
+ redent "^2.0.0"
+ string-width "^2.1.1"
+ text-table "^0.2.0"
+
+cache-base@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2"
+ integrity sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==
+ dependencies:
+ 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"
+
+call-me-maybe@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/call-me-maybe/-/call-me-maybe-1.0.1.tgz#26d208ea89e37b5cbde60250a15f031c16a4d66b"
+ integrity sha1-JtII6onje1y95gJQoV8DHBak1ms=
+
+camelcase@^4.0.0, camelcase@^4.1.0:
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd"
+ integrity sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=
+
+caniuse-api@^1.5.2:
+ version "1.6.1"
+ resolved "https://registry.yarnpkg.com/caniuse-api/-/caniuse-api-1.6.1.tgz#b534e7c734c4f81ec5fbe8aca2ad24354b962c6c"
+ integrity sha1-tTTnxzTE+B7F++isoq0kNUuWLGw=
+ dependencies:
+ browserslist "^1.3.6"
+ caniuse-db "^1.0.30000529"
+ lodash.memoize "^4.1.2"
+ lodash.uniq "^4.5.0"
+
+caniuse-api@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/caniuse-api/-/caniuse-api-3.0.0.tgz#5e4d90e2274961d46291997df599e3ed008ee4c0"
+ integrity sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==
+ dependencies:
+ browserslist "^4.0.0"
+ caniuse-lite "^1.0.0"
+ lodash.memoize "^4.1.2"
+ lodash.uniq "^4.5.0"
+
+caniuse-db@^1.0.30000529, caniuse-db@^1.0.30000634, caniuse-db@^1.0.30000639:
+ version "1.0.30000890"
+ resolved "https://registry.yarnpkg.com/caniuse-db/-/caniuse-db-1.0.30000890.tgz#b406595db8b631975b8dc5fa174f32925c23778b"
+ integrity sha512-aO5uw1Taw8GkNMMXIWOz/WJz3y6tR1ETUAdH/pvO5EoJ3I1Po9vNJd9aMjY1GKucS/OXWMiQbXRbk3O1sgCbRA==
+
+caniuse-lite@^1.0.0, caniuse-lite@^1.0.30000889:
+ version "1.0.30000890"
+ resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000890.tgz#86a18ffcc65d79ec6a437e985761b8bf1c4efeaf"
+ integrity sha512-4NI3s4Y6ROm+SgZN5sLUG4k7nVWQnedis3c/RWkynV5G6cHSY7+a8fwFyn2yoBDE3E6VswhTNNwR3PvzGqlTkg==
+
+chalk@^1.1.3:
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98"
+ integrity sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=
+ dependencies:
+ ansi-styles "^2.2.1"
+ escape-string-regexp "^1.0.2"
+ has-ansi "^2.0.0"
+ strip-ansi "^3.0.0"
+ supports-color "^2.0.0"
+
+chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.3.0, chalk@^2.3.1, chalk@^2.4.1:
+ version "2.4.1"
+ resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.1.tgz#18c49ab16a037b6eb0152cc83e3471338215b66e"
+ integrity sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==
+ dependencies:
+ ansi-styles "^3.2.1"
+ escape-string-regexp "^1.0.5"
+ supports-color "^5.3.0"
+
+chokidar@^2.0.3:
+ version "2.0.4"
+ resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.0.4.tgz#356ff4e2b0e8e43e322d18a372460bbcf3accd26"
+ integrity sha512-z9n7yt9rOvIJrMhvDtDictKrkFHeihkNl6uWMmZlmL6tJtX9Cs+87oK+teBx+JIgzvbX3yZHT3eF8vpbDxHJXQ==
+ dependencies:
+ anymatch "^2.0.0"
+ async-each "^1.0.0"
+ braces "^2.3.0"
+ glob-parent "^3.1.0"
+ inherits "^2.0.1"
+ is-binary-path "^1.0.0"
+ is-glob "^4.0.0"
+ lodash.debounce "^4.0.8"
+ normalize-path "^2.1.1"
+ path-is-absolute "^1.0.0"
+ readdirp "^2.0.0"
+ upath "^1.0.5"
+ optionalDependencies:
+ fsevents "^1.2.2"
+
+chownr@^1.0.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.1.tgz#54726b8b8fff4df053c42187e801fb4412df1494"
+ integrity sha512-j38EvO5+LHX84jlo6h4UzmOwi0UgW61WRyPtJz4qaadK5eY3BTS5TY/S1Stc3Uk2lIM6TPevAlULiEJwie860g==
+
+ci-info@^1.5.0:
+ version "1.6.0"
+ resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-1.6.0.tgz#2ca20dbb9ceb32d4524a683303313f0304b1e497"
+ integrity sha512-vsGdkwSCDpWmP80ncATX7iea5DWQemg1UgCW5J8tqjU3lYw4FBYuj89J0CTVomA7BEfvSZd84GmHko+MxFQU2A==
+
+cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de"
+ integrity sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==
+ dependencies:
+ inherits "^2.0.1"
+ safe-buffer "^5.0.1"
+
+clap@^1.0.9:
+ version "1.2.3"
+ resolved "https://registry.yarnpkg.com/clap/-/clap-1.2.3.tgz#4f36745b32008492557f46412d66d50cb99bce51"
+ integrity sha512-4CoL/A3hf90V3VIEjeuhSvlGFEHKzOz+Wfc2IVZc+FaUgU0ZQafJTP49fvnULipOPcAfqhyI2duwQyns6xqjYA==
+ dependencies:
+ chalk "^1.1.3"
+
+class-utils@^0.3.5:
+ version "0.3.6"
+ resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463"
+ integrity sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==
+ dependencies:
+ arr-union "^3.1.0"
+ define-property "^0.2.5"
+ isobject "^3.0.0"
+ static-extend "^0.1.1"
+
+cli-boxes@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-1.0.0.tgz#4fa917c3e59c94a004cd61f8ee509da651687143"
+ integrity sha1-T6kXw+WclKAEzWH47lCdplFocUM=
+
+cli-cursor@^2.0.0, cli-cursor@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5"
+ integrity sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=
+ dependencies:
+ restore-cursor "^2.0.0"
+
+cli-spinners@^1.1.0:
+ version "1.3.1"
+ resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-1.3.1.tgz#002c1990912d0d59580c93bd36c056de99e4259a"
+ integrity sha512-1QL4544moEsDVH9T/l6Cemov/37iv1RtoKf7NJ04A60+4MREXNfx/QvavbH6QoGdsD4N4Mwy49cmaINR/o2mdg==
+
+clone@^1.0.2:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e"
+ integrity sha1-2jCcwmPfFZlMaIypAheco8fNfH4=
+
+clone@^2.1.1:
+ version "2.1.2"
+ resolved "https://registry.yarnpkg.com/clone/-/clone-2.1.2.tgz#1b7f4b9f591f1e8f83670401600345a02887435f"
+ integrity sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=
+
+clones@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/clones/-/clones-1.1.0.tgz#87e904132d6140c5c0b72006c08c0d05bd7b63b3"
+ integrity sha1-h+kEEy1hQMXAtyAGwIwNBb17Y7M=
+
+coa@~1.0.1:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/coa/-/coa-1.0.4.tgz#a9ef153660d6a86a8bdec0289a5c684d217432fd"
+ integrity sha1-qe8VNmDWqGqL3sAomlxoTSF0Mv0=
+ dependencies:
+ q "^1.1.2"
+
+coa@~2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/coa/-/coa-2.0.1.tgz#f3f8b0b15073e35d70263fb1042cb2c023db38af"
+ integrity sha512-5wfTTO8E2/ja4jFSxePXlG5nRu5bBtL/r1HCIpJW/lzT6yDtKl0u0Z4o/Vpz32IpKmBn7HerheEZQgA9N2DarQ==
+ dependencies:
+ q "^1.1.2"
+
+code-point-at@^1.0.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77"
+ integrity sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=
+
+collection-visit@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0"
+ integrity sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=
+ dependencies:
+ map-visit "^1.0.0"
+ object-visit "^1.0.0"
+
+color-convert@^1.3.0, color-convert@^1.9.0, color-convert@^1.9.1:
+ version "1.9.3"
+ resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8"
+ integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==
+ dependencies:
+ color-name "1.1.3"
+
+color-name@1.1.3:
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25"
+ integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=
+
+color-name@^1.0.0:
+ version "1.1.4"
+ resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2"
+ integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==
+
+color-string@^0.3.0:
+ version "0.3.0"
+ resolved "https://registry.yarnpkg.com/color-string/-/color-string-0.3.0.tgz#27d46fb67025c5c2fa25993bfbf579e47841b991"
+ integrity sha1-J9RvtnAlxcL6JZk7+/V55HhBuZE=
+ dependencies:
+ color-name "^1.0.0"
+
+color-string@^1.5.2:
+ version "1.5.3"
+ resolved "https://registry.yarnpkg.com/color-string/-/color-string-1.5.3.tgz#c9bbc5f01b58b5492f3d6857459cb6590ce204cc"
+ integrity sha512-dC2C5qeWoYkxki5UAXapdjqO672AM4vZuPGRQfO8b5HKuKGBbKWpITyDYN7TOFKvRW7kOgAn3746clDBMDJyQw==
+ dependencies:
+ color-name "^1.0.0"
+ simple-swizzle "^0.2.2"
+
+color@^0.11.0:
+ version "0.11.4"
+ resolved "https://registry.yarnpkg.com/color/-/color-0.11.4.tgz#6d7b5c74fb65e841cd48792ad1ed5e07b904d764"
+ integrity sha1-bXtcdPtl6EHNSHkq0e1eB7kE12Q=
+ dependencies:
+ clone "^1.0.2"
+ color-convert "^1.3.0"
+ color-string "^0.3.0"
+
+color@^3.0.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/color/-/color-3.1.0.tgz#d8e9fb096732875774c84bf922815df0308d0ffc"
+ integrity sha512-CwyopLkuRYO5ei2EpzpIh6LqJMt6Mt+jZhO5VI5f/wJLZriXQE32/SSqzmrh+QB+AZT81Cj8yv+7zwToW8ahZg==
+ dependencies:
+ color-convert "^1.9.1"
+ color-string "^1.5.2"
+
+colormin@^1.0.5:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/colormin/-/colormin-1.1.2.tgz#ea2f7420a72b96881a38aae59ec124a6f7298133"
+ integrity sha1-6i90IKcrlogaOKrlnsEkpvcpgTM=
+ dependencies:
+ color "^0.11.0"
+ css-color-names "0.0.4"
+ has "^1.0.1"
+
+colors@~1.1.2:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/colors/-/colors-1.1.2.tgz#168a4701756b6a7f51a12ce0c97bfa28c084ed63"
+ integrity sha1-FopHAXVran9RoSzgyXv6KMCE7WM=
+
+command-exists@^1.2.6:
+ version "1.2.7"
+ resolved "https://registry.yarnpkg.com/command-exists/-/command-exists-1.2.7.tgz#16828f0c3ff2b0c58805861ef211b64fc15692a8"
+ integrity sha512-doWDvhXCcW5LK0cIUWrOQ8oMFXJv3lEQCkJpGVjM8v9SV0uhqYXB943538tEA2CiaWqSyuYUGAm5ezDwEx9xlw==
+
+commander@*, commander@^2.11.0:
+ version "2.19.0"
+ resolved "https://registry.yarnpkg.com/commander/-/commander-2.19.0.tgz#f6198aa84e5b83c46054b94ddedbfed5ee9ff12a"
+ integrity sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg==
+
+commander@~2.13.0:
+ version "2.13.0"
+ resolved "https://registry.yarnpkg.com/commander/-/commander-2.13.0.tgz#6964bca67685df7c1f1430c584f07d7597885b9c"
+ integrity sha512-MVuS359B+YzaWqjCL/c+22gfryv+mCBPHAv3zyVI2GN8EY6IRP8VwtasXn8jyyhvvq84R4ImN1OKRtcbIasjYA==
+
+commander@~2.17.1:
+ version "2.17.1"
+ resolved "https://registry.yarnpkg.com/commander/-/commander-2.17.1.tgz#bd77ab7de6de94205ceacc72f1716d29f20a77bf"
+ integrity sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg==
+
+component-emitter@^1.2.1:
+ version "1.2.1"
+ resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.2.1.tgz#137918d6d78283f7df7a6b7c5a63e140e69425e6"
+ integrity sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=
+
+concat-map@0.0.1:
+ version "0.0.1"
+ resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
+ integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=
+
+concat-stream@~1.6.0:
+ version "1.6.2"
+ resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34"
+ integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==
+ dependencies:
+ buffer-from "^1.0.0"
+ inherits "^2.0.3"
+ readable-stream "^2.2.2"
+ typedarray "^0.0.6"
+
+concat-with-sourcemaps@^1.0.5:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/concat-with-sourcemaps/-/concat-with-sourcemaps-1.1.0.tgz#d4ea93f05ae25790951b99e7b3b09e3908a4082e"
+ integrity sha512-4gEjHJFT9e+2W/77h/DS5SGUgwDaOwprX8L/gl5+3ixnzkVJJsZWDSelmN3Oilw3LNDZjZV0yqH1hLG3k6nghg==
+ dependencies:
+ source-map "^0.6.1"
+
+config-chain@~1.1.5:
+ version "1.1.12"
+ resolved "https://registry.yarnpkg.com/config-chain/-/config-chain-1.1.12.tgz#0fde8d091200eb5e808caf25fe618c02f48e4efa"
+ integrity sha512-a1eOIcu8+7lUInge4Rpf/n4Krkf3Dd9lqhljRzII1/Zno/kRtUWnznPO3jOKBmTEktkt3fkxisUcivoj0ebzoA==
+ dependencies:
+ ini "^1.3.4"
+ proto-list "~1.2.1"
+
+console-browserify@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.1.0.tgz#f0241c45730a9fc6323b206dbf38edc741d0bb10"
+ integrity sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=
+ dependencies:
+ date-now "^0.1.4"
+
+console-control-strings@^1.0.0, console-control-strings@~1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e"
+ integrity sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=
+
+consolidate@^0.15.1:
+ version "0.15.1"
+ resolved "https://registry.yarnpkg.com/consolidate/-/consolidate-0.15.1.tgz#21ab043235c71a07d45d9aad98593b0dba56bab7"
+ integrity sha512-DW46nrsMJgy9kqAbPt5rKaCr7uFtpo4mSUvLHIUbJEjm0vo+aY5QLwBUq3FK4tRnJr/X0Psc0C4jf/h+HtXSMw==
+ dependencies:
+ bluebird "^3.1.1"
+
+constants-browserify@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75"
+ integrity sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=
+
+convert-source-map@^1.1.0, convert-source-map@^1.5.1:
+ version "1.6.0"
+ resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.6.0.tgz#51b537a8c43e0f04dec1993bffcdd504e758ac20"
+ integrity sha512-eFu7XigvxdZ1ETfbgPBohgyQ/Z++C0eEhTor0qRwBw9unw+L0/6V8wkSuGgzdThkiS5lSpdptOQPD8Ak40a+7A==
+ dependencies:
+ safe-buffer "~5.1.1"
+
+copy-descriptor@^0.1.0:
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d"
+ integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=
+
+core-js@^2.4.0:
+ version "2.5.7"
+ resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.5.7.tgz#f972608ff0cead68b841a16a932d0b183791814e"
+ integrity sha512-RszJCAxg/PP6uzXVXL6BsxSXx/B05oJAQ2vkJRjyjrEcNVycaqOmNb5OTxZPE3xa5gwZduqza6L9JOCenh/Ecw==
+
+core-util-is@~1.0.0:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7"
+ integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=
+
+cosmiconfig@^2.1.0, cosmiconfig@^2.1.1:
+ version "2.2.2"
+ resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-2.2.2.tgz#6173cebd56fac042c1f4390edf7af6c07c7cb892"
+ integrity sha512-GiNXLwAFPYHy25XmTPpafYvn3CLAkJ8FLsscq78MQd1Kh0OU6Yzhn4eV2MVF4G9WEQZoWEGltatdR+ntGPMl5A==
+ dependencies:
+ is-directory "^0.3.1"
+ js-yaml "^3.4.3"
+ minimist "^1.2.0"
+ object-assign "^4.1.0"
+ os-homedir "^1.0.1"
+ parse-json "^2.2.0"
+ require-from-string "^1.1.0"
+
+cosmiconfig@^5.0.0:
+ version "5.0.6"
+ resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-5.0.6.tgz#dca6cf680a0bd03589aff684700858c81abeeb39"
+ integrity sha512-6DWfizHriCrFWURP1/qyhsiFvYdlJzbCzmtFWh744+KyWsJo5+kPzUZZaMRSSItoYc0pxFX7gEO7ZC1/gN/7AQ==
+ dependencies:
+ is-directory "^0.3.1"
+ js-yaml "^3.9.0"
+ parse-json "^4.0.0"
+
+create-ecdh@^4.0.0:
+ version "4.0.3"
+ resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.3.tgz#c9111b6f33045c4697f144787f9254cdc77c45ff"
+ integrity sha512-GbEHQPMOswGpKXM9kCWVrremUcBmjteUaQ01T9rkKCPDXfUHX0IoP9LpHYo2NPFampa4e+/pFDc3jQdxrxQLaw==
+ dependencies:
+ bn.js "^4.1.0"
+ elliptic "^6.0.0"
+
+create-hash@^1.1.0, create-hash@^1.1.2:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.2.0.tgz#889078af11a63756bcfb59bd221996be3a9ef196"
+ integrity sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==
+ dependencies:
+ 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@^1.1.0, create-hmac@^1.1.2, create-hmac@^1.1.4:
+ version "1.1.7"
+ resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.7.tgz#69170c78b3ab957147b2b8b04572e47ead2243ff"
+ integrity sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==
+ dependencies:
+ 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@^5.0.1:
+ version "5.1.0"
+ resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449"
+ integrity sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=
+ dependencies:
+ lru-cache "^4.0.1"
+ shebang-command "^1.2.0"
+ which "^1.2.9"
+
+cross-spawn@^6.0.4:
+ version "6.0.5"
+ resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4"
+ integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==
+ dependencies:
+ 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@^3.11.0:
+ version "3.12.0"
+ resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec"
+ integrity sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==
+ dependencies:
+ 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"
+
+css-color-names@0.0.4, css-color-names@^0.0.4:
+ version "0.0.4"
+ resolved "https://registry.yarnpkg.com/css-color-names/-/css-color-names-0.0.4.tgz#808adc2e79cf84738069b646cb20ec27beb629e0"
+ integrity sha1-gIrcLnnPhHOAabZGyyDsJ762KeA=
+
+css-declaration-sorter@^4.0.1:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/css-declaration-sorter/-/css-declaration-sorter-4.0.1.tgz#c198940f63a76d7e36c1e71018b001721054cb22"
+ integrity sha512-BcxQSKTSEEQUftYpBVnsH4SF05NTuBokb19/sBt6asXGKZ/6VP7PLG1CBCkFDYOnhXhPh0jMhO6xZ71oYHXHBA==
+ dependencies:
+ postcss "^7.0.1"
+ timsort "^0.3.0"
+
+css-modules-loader-core@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/css-modules-loader-core/-/css-modules-loader-core-1.1.0.tgz#5908668294a1becd261ae0a4ce21b0b551f21d16"
+ integrity sha1-WQhmgpShvs0mGuCkziGwtVHyHRY=
+ dependencies:
+ icss-replace-symbols "1.1.0"
+ postcss "6.0.1"
+ postcss-modules-extract-imports "1.1.0"
+ postcss-modules-local-by-default "1.2.0"
+ postcss-modules-scope "1.1.0"
+ postcss-modules-values "1.3.0"
+
+css-select-base-adapter@~0.1.0:
+ version "0.1.0"
+ resolved "https://registry.yarnpkg.com/css-select-base-adapter/-/css-select-base-adapter-0.1.0.tgz#0102b3d14630df86c3eb9fa9f5456270106cf990"
+ integrity sha1-AQKz0UYw34bD65+p9UVicBBs+ZA=
+
+css-select@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/css-select/-/css-select-2.0.0.tgz#7aa2921392114831f68db175c0b6a555df74bbd5"
+ integrity sha512-MGhoq1S9EyPgZIGnts8Yz5WwUOyHmPMdlqeifsYs/xFX7AAm3hY0RJe1dqVlXtYPI66Nsk39R/sa5/ree6L2qg==
+ dependencies:
+ boolbase "^1.0.0"
+ css-what "2.1"
+ domutils "^1.7.0"
+ nth-check "^1.0.1"
+
+css-selector-tokenizer@^0.7.0:
+ version "0.7.0"
+ resolved "https://registry.yarnpkg.com/css-selector-tokenizer/-/css-selector-tokenizer-0.7.0.tgz#e6988474ae8c953477bf5e7efecfceccd9cf4c86"
+ integrity sha1-5piEdK6MlTR3v15+/s/OzNnPTIY=
+ dependencies:
+ cssesc "^0.1.0"
+ fastparse "^1.1.1"
+ regexpu-core "^1.0.0"
+
+css-tree@1.0.0-alpha.28:
+ version "1.0.0-alpha.28"
+ resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.0.0-alpha.28.tgz#8e8968190d886c9477bc8d61e96f61af3f7ffa7f"
+ integrity sha512-joNNW1gCp3qFFzj4St6zk+Wh/NBv0vM5YbEreZk0SD4S23S+1xBKb6cLDg2uj4P4k/GUMlIm6cKIDqIG+vdt0w==
+ dependencies:
+ mdn-data "~1.1.0"
+ source-map "^0.5.3"
+
+css-tree@1.0.0-alpha.29:
+ version "1.0.0-alpha.29"
+ resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.0.0-alpha.29.tgz#3fa9d4ef3142cbd1c301e7664c1f352bd82f5a39"
+ integrity sha512-sRNb1XydwkW9IOci6iB2xmy8IGCj6r/fr+JWitvJ2JxQRPzN3T4AGGVWCMlVmVwM1gtgALJRmGIlWv5ppnGGkg==
+ dependencies:
+ mdn-data "~1.1.0"
+ source-map "^0.5.3"
+
+css-unit-converter@^1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/css-unit-converter/-/css-unit-converter-1.1.1.tgz#d9b9281adcfd8ced935bdbaba83786897f64e996"
+ integrity sha1-2bkoGtz9jO2TW9urqDeGiX9k6ZY=
+
+css-url-regex@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/css-url-regex/-/css-url-regex-1.1.0.tgz#83834230cc9f74c457de59eebd1543feeb83b7ec"
+ integrity sha1-g4NCMMyfdMRX3lnuvRVD/uuDt+w=
+
+css-what@2.1:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/css-what/-/css-what-2.1.0.tgz#9467d032c38cfaefb9f2d79501253062f87fa1bd"
+ integrity sha1-lGfQMsOM+u+58teVASUwYvh/ob0=
+
+cssesc@^0.1.0:
+ version "0.1.0"
+ resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-0.1.0.tgz#c814903e45623371a0477b40109aaafbeeaddbb4"
+ integrity sha1-yBSQPkViM3GgR3tAEJqq++6t27Q=
+
+cssnano-preset-default@^4.0.2:
+ version "4.0.2"
+ resolved "https://registry.yarnpkg.com/cssnano-preset-default/-/cssnano-preset-default-4.0.2.tgz#1de3f27e73b7f0fbf87c1d7fd7a63ae980ac3774"
+ integrity sha512-zO9PeP84l1E4kbrdyF7NSLtA/JrJY1paX5FHy5+w/ziIXO2kDqDMfJ/mosXkaHHSa3RPiIY3eB6aEgwx3IiGqA==
+ dependencies:
+ css-declaration-sorter "^4.0.1"
+ cssnano-util-raw-cache "^4.0.1"
+ postcss "^7.0.0"
+ postcss-calc "^6.0.2"
+ postcss-colormin "^4.0.2"
+ postcss-convert-values "^4.0.1"
+ postcss-discard-comments "^4.0.1"
+ postcss-discard-duplicates "^4.0.2"
+ postcss-discard-empty "^4.0.1"
+ postcss-discard-overridden "^4.0.1"
+ postcss-merge-longhand "^4.0.6"
+ postcss-merge-rules "^4.0.2"
+ postcss-minify-font-values "^4.0.2"
+ postcss-minify-gradients "^4.0.1"
+ postcss-minify-params "^4.0.1"
+ postcss-minify-selectors "^4.0.1"
+ postcss-normalize-charset "^4.0.1"
+ postcss-normalize-display-values "^4.0.1"
+ postcss-normalize-positions "^4.0.1"
+ postcss-normalize-repeat-style "^4.0.1"
+ postcss-normalize-string "^4.0.1"
+ postcss-normalize-timing-functions "^4.0.1"
+ postcss-normalize-unicode "^4.0.1"
+ postcss-normalize-url "^4.0.1"
+ postcss-normalize-whitespace "^4.0.1"
+ postcss-ordered-values "^4.1.1"
+ postcss-reduce-initial "^4.0.2"
+ postcss-reduce-transforms "^4.0.1"
+ postcss-svgo "^4.0.1"
+ postcss-unique-selectors "^4.0.1"
+
+cssnano-util-get-arguments@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/cssnano-util-get-arguments/-/cssnano-util-get-arguments-4.0.0.tgz#ed3a08299f21d75741b20f3b81f194ed49cc150f"
+ integrity sha1-7ToIKZ8h11dBsg87gfGU7UnMFQ8=
+
+cssnano-util-get-match@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/cssnano-util-get-match/-/cssnano-util-get-match-4.0.0.tgz#c0e4ca07f5386bb17ec5e52250b4f5961365156d"
+ integrity sha1-wOTKB/U4a7F+xeUiULT1lhNlFW0=
+
+cssnano-util-raw-cache@^4.0.1:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/cssnano-util-raw-cache/-/cssnano-util-raw-cache-4.0.1.tgz#b26d5fd5f72a11dfe7a7846fb4c67260f96bf282"
+ integrity sha512-qLuYtWK2b2Dy55I8ZX3ky1Z16WYsx544Q0UWViebptpwn/xDBmog2TLg4f+DBMg1rJ6JDWtn96WHbOKDWt1WQA==
+ dependencies:
+ postcss "^7.0.0"
+
+cssnano-util-same-parent@^4.0.0:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/cssnano-util-same-parent/-/cssnano-util-same-parent-4.0.1.tgz#574082fb2859d2db433855835d9a8456ea18bbf3"
+ integrity sha512-WcKx5OY+KoSIAxBW6UBBRay1U6vkYheCdjyVNDm85zt5K9mHoGOfsOsqIszfAqrQQFIIKgjh2+FDgIj/zsl21Q==
+
+cssnano@^3.10.0, cssnano@^3.4.0:
+ version "3.10.0"
+ resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-3.10.0.tgz#4f38f6cea2b9b17fa01490f23f1dc68ea65c1c38"
+ integrity sha1-Tzj2zqK5sX+gFJDyPx3GjqZcHDg=
+ dependencies:
+ autoprefixer "^6.3.1"
+ decamelize "^1.1.2"
+ defined "^1.0.0"
+ has "^1.0.1"
+ object-assign "^4.0.1"
+ postcss "^5.0.14"
+ postcss-calc "^5.2.0"
+ postcss-colormin "^2.1.8"
+ postcss-convert-values "^2.3.4"
+ postcss-discard-comments "^2.0.4"
+ postcss-discard-duplicates "^2.0.1"
+ postcss-discard-empty "^2.0.1"
+ postcss-discard-overridden "^0.1.1"
+ postcss-discard-unused "^2.2.1"
+ postcss-filter-plugins "^2.0.0"
+ postcss-merge-idents "^2.1.5"
+ postcss-merge-longhand "^2.0.1"
+ postcss-merge-rules "^2.0.3"
+ postcss-minify-font-values "^1.0.2"
+ postcss-minify-gradients "^1.0.1"
+ postcss-minify-params "^1.0.4"
+ postcss-minify-selectors "^2.0.4"
+ postcss-normalize-charset "^1.1.0"
+ postcss-normalize-url "^3.0.7"
+ postcss-ordered-values "^2.1.0"
+ postcss-reduce-idents "^2.2.2"
+ postcss-reduce-initial "^1.0.0"
+ postcss-reduce-transforms "^1.0.3"
+ postcss-svgo "^2.1.1"
+ postcss-unique-selectors "^2.0.2"
+ postcss-value-parser "^3.2.3"
+ postcss-zindex "^2.0.1"
+
+cssnano@^4.0.0:
+ version "4.1.4"
+ resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-4.1.4.tgz#55b71e3d8f5451dd3edc7955673415c98795788f"
+ integrity sha512-wP0wbOM9oqsek14CiNRYrK9N3w3jgadtGZKHXysgC/OMVpy0KZgWVPdNqODSZbz7txO9Gekr9taOfcCgL0pOOw==
+ dependencies:
+ cosmiconfig "^5.0.0"
+ cssnano-preset-default "^4.0.2"
+ is-resolvable "^1.0.0"
+ postcss "^7.0.0"
+
+csso@^3.5.0:
+ version "3.5.1"
+ resolved "https://registry.yarnpkg.com/csso/-/csso-3.5.1.tgz#7b9eb8be61628973c1b261e169d2f024008e758b"
+ integrity sha512-vrqULLffYU1Q2tLdJvaCYbONStnfkfimRxXNaGjxMldI0C7JPBC4rB1RyjhfdZ4m1frm8pM9uRPKH3d2knZ8gg==
+ dependencies:
+ css-tree "1.0.0-alpha.29"
+
+csso@~2.3.1:
+ version "2.3.2"
+ resolved "https://registry.yarnpkg.com/csso/-/csso-2.3.2.tgz#ddd52c587033f49e94b71fc55569f252e8ff5f85"
+ integrity sha1-3dUsWHAz9J6Utx/FVWnyUuj/X4U=
+ dependencies:
+ clap "^1.0.9"
+ source-map "^0.5.3"
+
+date-now@^0.1.4:
+ version "0.1.4"
+ resolved "https://registry.yarnpkg.com/date-now/-/date-now-0.1.4.tgz#eaf439fd4d4848ad74e5cc7dbef200672b9e345b"
+ integrity sha1-6vQ5/U1ISK105cx9vvIAZyueNFs=
+
+date-time@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/date-time/-/date-time-2.1.0.tgz#0286d1b4c769633b3ca13e1e62558d2dbdc2eba2"
+ integrity sha512-/9+C44X7lot0IeiyfgJmETtRMhBidBYM2QFFIkGa0U1k+hSyY87Nw7PY3eDqpvCBm7I3WCSfPeZskW/YYq6m4g==
+ dependencies:
+ time-zone "^1.0.0"
+
+deasync@^0.1.13:
+ version "0.1.13"
+ resolved "https://registry.yarnpkg.com/deasync/-/deasync-0.1.13.tgz#815c2b69bbd1117cae570152cd895661c09f20ea"
+ integrity sha512-/6ngYM7AapueqLtvOzjv9+11N2fHDSrkxeMF1YPE20WIfaaawiBg+HZH1E5lHrcJxlKR42t6XPOEmMmqcAsU1g==
+ dependencies:
+ bindings "~1.2.1"
+ nan "^2.0.7"
+
+debug@2.6.9, debug@^2.1.2, debug@^2.2.0, debug@^2.3.3:
+ version "2.6.9"
+ resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f"
+ integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==
+ dependencies:
+ ms "2.0.0"
+
+debug@^3.1.0:
+ version "3.2.6"
+ resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b"
+ integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==
+ dependencies:
+ ms "^2.1.1"
+
+decamelize@^1.1.2:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290"
+ integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=
+
+decode-uri-component@^0.2.0:
+ version "0.2.0"
+ resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545"
+ integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=
+
+deep-extend@^0.6.0:
+ version "0.6.0"
+ resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac"
+ integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==
+
+deep-is@~0.1.3:
+ version "0.1.3"
+ resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34"
+ integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=
+
+defaults@^1.0.3:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/defaults/-/defaults-1.0.3.tgz#c656051e9817d9ff08ed881477f3fe4019f3ef7d"
+ integrity sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=
+ dependencies:
+ clone "^1.0.2"
+
+define-properties@^1.1.2:
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1"
+ integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==
+ dependencies:
+ object-keys "^1.0.12"
+
+define-property@^0.2.5:
+ version "0.2.5"
+ resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116"
+ integrity sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=
+ dependencies:
+ is-descriptor "^0.1.0"
+
+define-property@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/define-property/-/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6"
+ integrity sha1-dp66rz9KY6rTr56NMEybvnm/sOY=
+ dependencies:
+ is-descriptor "^1.0.0"
+
+define-property@^2.0.2:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/define-property/-/define-property-2.0.2.tgz#d459689e8d654ba77e02a817f8710d702cb16e9d"
+ integrity sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==
+ dependencies:
+ is-descriptor "^1.0.2"
+ isobject "^3.0.1"
+
+defined@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/defined/-/defined-1.0.0.tgz#c98d9bcef75674188e110969151199e39b1fa693"
+ integrity sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=
+
+delegates@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a"
+ integrity sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=
+
+depd@~1.1.2:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9"
+ integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=
+
+des.js@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.0.tgz#c074d2e2aa6a8a9a07dbd61f9a15c2cd83ec8ecc"
+ integrity sha1-wHTS4qpqipoH29YfmhXCzYPsjsw=
+ dependencies:
+ inherits "^2.0.1"
+ minimalistic-assert "^1.0.0"
+
+destroy@~1.0.4:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80"
+ integrity sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=
+
+detect-libc@^1.0.2:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b"
+ integrity sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=
+
+diffie-hellman@^5.0.0:
+ version "5.0.3"
+ resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.3.tgz#40e8ee98f55a2149607146921c63e1ae5f3d2875"
+ integrity sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==
+ dependencies:
+ bn.js "^4.1.0"
+ miller-rabin "^4.0.0"
+ randombytes "^2.0.0"
+
+dir-glob@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-2.0.0.tgz#0b205d2b6aef98238ca286598a8204d29d0a0034"
+ integrity sha512-37qirFDz8cA5fimp9feo43fSuRo2gHwaIn6dXL8Ber1dGwUosDrGZeCCXq57WnIqE4aQ+u3eQZzsk1yOzhdwag==
+ dependencies:
+ arrify "^1.0.1"
+ path-type "^3.0.0"
+
+dom-serializer@0:
+ version "0.1.0"
+ resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.1.0.tgz#073c697546ce0780ce23be4a28e293e40bc30c82"
+ integrity sha1-BzxpdUbOB4DOI75KKOKT5AvDDII=
+ dependencies:
+ domelementtype "~1.1.1"
+ entities "~1.1.1"
+
+domain-browser@^1.1.1:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.2.0.tgz#3d31f50191a6749dd1375a7f522e823d42e54eda"
+ integrity sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==
+
+domelementtype@1, domelementtype@^1.3.0:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.0.tgz#b17aed82e8ab59e52dd9c19b1756e0fc187204c2"
+ integrity sha1-sXrtguirWeUt2cGbF1bg/BhyBMI=
+
+domelementtype@~1.1.1:
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.1.3.tgz#bd28773e2642881aec51544924299c5cd822185b"
+ integrity sha1-vSh3PiZCiBrsUVRJJCmcXNgiGFs=
+
+domhandler@^2.3.0:
+ version "2.4.2"
+ resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-2.4.2.tgz#8805097e933d65e85546f726d60f5eb88b44f803"
+ integrity sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==
+ dependencies:
+ domelementtype "1"
+
+domutils@^1.5.1, domutils@^1.7.0:
+ version "1.7.0"
+ resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.7.0.tgz#56ea341e834e06e6748af7a1cb25da67ea9f8c2a"
+ integrity sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==
+ dependencies:
+ dom-serializer "0"
+ domelementtype "1"
+
+dot-prop@^4.1.1:
+ version "4.2.0"
+ resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-4.2.0.tgz#1f19e0c2e1aa0e32797c49799f2837ac6af69c57"
+ integrity sha512-tUMXrxlExSW6U2EXiiKGSBVdYgtV8qlHL+C10TsW4PURY/ic+eaysnSkwB4kA/mBlCyy/IKDJ+Lc3wbWeaXtuQ==
+ dependencies:
+ is-obj "^1.0.0"
+
+dotenv-expand@^4.2.0:
+ version "4.2.0"
+ resolved "https://registry.yarnpkg.com/dotenv-expand/-/dotenv-expand-4.2.0.tgz#def1f1ca5d6059d24a766e587942c21106ce1275"
+ integrity sha1-3vHxyl1gWdJKdm5YeULCEQbOEnU=
+
+dotenv@^5.0.0:
+ version "5.0.1"
+ resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-5.0.1.tgz#a5317459bd3d79ab88cff6e44057a6a3fbb1fcef"
+ integrity sha512-4As8uPrjfwb7VXC+WnLCbXK7y+Ueb2B3zgNCePYfhxS1PYeaO1YTeplffTEcbfLhvFNGLAz90VvJs9yomG7bow==
+
+duplexer2@~0.1.4:
+ version "0.1.4"
+ resolved "https://registry.yarnpkg.com/duplexer2/-/duplexer2-0.1.4.tgz#8b12dab878c0d69e3e7891051662a32fc6bddcc1"
+ integrity sha1-ixLauHjA1p4+eJEFFmKjL8a93ME=
+ dependencies:
+ readable-stream "^2.0.2"
+
+duplexer@^0.1.1:
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.1.tgz#ace6ff808c1ce66b57d1ebf97977acb02334cfc1"
+ integrity sha1-rOb/gIwc5mtX0ev5eXessCM0z8E=
+
+editorconfig@^0.15.0:
+ version "0.15.0"
+ resolved "https://registry.yarnpkg.com/editorconfig/-/editorconfig-0.15.0.tgz#b6dd4a0b6b9e76ce48e066bdc15381aebb8804fd"
+ integrity sha512-j7JBoj/bpNzvoTQylfRZSc85MlLNKWQiq5y6gwKhmqD2h1eZ+tH4AXbkhEJD468gjDna/XMx2YtSkCxBRX9OGg==
+ dependencies:
+ "@types/commander" "^2.11.0"
+ "@types/semver" "^5.4.0"
+ commander "^2.11.0"
+ lru-cache "^4.1.1"
+ semver "^5.4.1"
+ sigmund "^1.0.1"
+
+ee-first@1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d"
+ integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=
+
+electron-to-chromium@^1.2.7, electron-to-chromium@^1.3.73:
+ version "1.3.77"
+ resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.77.tgz#9207a874a21a8fcb665bb4ff1675a11ba65517f4"
+ integrity sha512-XIfQcdU9L4qUte31fFATwptHodMH0Otf53N8y1AKxd1+79vR+2UYpLq+Z1Zbtbuy+w0xd7KwIUrvlnje/htiOg==
+
+elliptic@^6.0.0:
+ version "6.4.1"
+ resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.4.1.tgz#c2d0b7776911b86722c632c3c06c60f2f819939a"
+ integrity sha512-BsXLz5sqX8OHcsh7CqBMztyXARmGQ3LWPtGjJi6DiJHq5C/qvi9P3OqgswKSDftbu8+IoI/QDTAm2fFnQ9SZSQ==
+ dependencies:
+ 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"
+
+emojis-list@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389"
+ integrity sha1-TapNnbAPmBmIDHn6RXrlsJof04k=
+
+encodeurl@~1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59"
+ integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=
+
+entities@^1.1.1, entities@~1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/entities/-/entities-1.1.1.tgz#6e5c2d0a5621b5dadaecef80b90edfb5cd7772f0"
+ integrity sha1-blwtClYhtdra7O+AuQ7ftc13cvA=
+
+error-ex@^1.2.0, error-ex@^1.3.1:
+ version "1.3.2"
+ resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf"
+ integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==
+ dependencies:
+ is-arrayish "^0.2.1"
+
+es-abstract@^1.5.1, es-abstract@^1.6.1:
+ version "1.12.0"
+ resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.12.0.tgz#9dbbdd27c6856f0001421ca18782d786bf8a6165"
+ integrity sha512-C8Fx/0jFmV5IPoMOFPA9P9G5NtqW+4cOPit3MIuvR2t7Ag2K15EJTpxnHAYTzL+aYQJIESYeXZmDBfOBE1HcpA==
+ dependencies:
+ es-to-primitive "^1.1.1"
+ function-bind "^1.1.1"
+ has "^1.0.1"
+ is-callable "^1.1.3"
+ is-regex "^1.0.4"
+
+es-to-primitive@^1.1.1:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.0.tgz#edf72478033456e8dda8ef09e00ad9650707f377"
+ integrity sha512-qZryBOJjV//LaxLTV6UC//WewneB3LcXOL9NP++ozKVXsIIIpm/2c13UDiD9Jp2eThsecw9m3jPqDwTyobcdbg==
+ dependencies:
+ is-callable "^1.1.4"
+ is-date-object "^1.0.1"
+ is-symbol "^1.0.2"
+
+escape-html@~1.0.3:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988"
+ integrity sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=
+
+escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5:
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
+ integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=
+
+escodegen@^1.8.1:
+ version "1.11.0"
+ resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.11.0.tgz#b27a9389481d5bfd5bec76f7bb1eb3f8f4556589"
+ integrity sha512-IeMV45ReixHS53K/OmfKAIztN/igDHzTJUhZM3k1jMhIZWjk45SMwAtBsEXiJp3vSPmTcu6CXn7mDvFHRN66fw==
+ dependencies:
+ esprima "^3.1.3"
+ estraverse "^4.2.0"
+ esutils "^2.0.2"
+ optionator "^0.8.1"
+ optionalDependencies:
+ source-map "~0.6.1"
+
+escodegen@~1.9.0:
+ version "1.9.1"
+ resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.9.1.tgz#dbae17ef96c8e4bedb1356f4504fa4cc2f7cb7e2"
+ integrity sha512-6hTjO1NAWkHnDk3OqQ4YrCuwwmGHL9S3nPlzBOUG/R44rda3wLNrfvQ5fkSGjyhHFKM7ALPKcKGrwvCLe0lC7Q==
+ dependencies:
+ esprima "^3.1.3"
+ estraverse "^4.2.0"
+ esutils "^2.0.2"
+ optionator "^0.8.1"
+ optionalDependencies:
+ source-map "~0.6.1"
+
+esprima@^2.6.0:
+ version "2.7.3"
+ resolved "https://registry.yarnpkg.com/esprima/-/esprima-2.7.3.tgz#96e3b70d5779f6ad49cd032673d1c312767ba581"
+ integrity sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE=
+
+esprima@^3.1.3:
+ version "3.1.3"
+ resolved "https://registry.yarnpkg.com/esprima/-/esprima-3.1.3.tgz#fdca51cee6133895e3c88d535ce49dbff62a4633"
+ integrity sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=
+
+esprima@^4.0.0:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71"
+ integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==
+
+estraverse@^4.2.0:
+ version "4.2.0"
+ resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.2.0.tgz#0dee3fed31fcd469618ce7342099fc1afa0bdb13"
+ integrity sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=
+
+estree-walker@^0.5.2:
+ version "0.5.2"
+ resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-0.5.2.tgz#d3850be7529c9580d815600b53126515e146dd39"
+ integrity sha512-XpCnW/AE10ws/kDAs37cngSkvgIR8aN3G0MS85m7dUpuK2EREo9VJ00uvw6Dg/hXEpfsE1I1TvJOJr+Z+TL+ig==
+
+esutils@^2.0.0, esutils@^2.0.2:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b"
+ integrity sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=
+
+etag@~1.8.1:
+ version "1.8.1"
+ resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887"
+ integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=
+
+events@^1.0.0:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/events/-/events-1.1.1.tgz#9ebdb7635ad099c70dcc4c2a1f5004288e8bd924"
+ integrity sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ=
+
+evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz#7fcbdb198dc71959432efe13842684e0525acb02"
+ integrity sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==
+ dependencies:
+ md5.js "^1.3.4"
+ safe-buffer "^5.1.1"
+
+execa@^0.7.0:
+ version "0.7.0"
+ resolved "https://registry.yarnpkg.com/execa/-/execa-0.7.0.tgz#944becd34cc41ee32a63a9faf27ad5a65fc59777"
+ integrity sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=
+ dependencies:
+ 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"
+
+expand-brackets@^0.1.4:
+ version "0.1.5"
+ resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-0.1.5.tgz#df07284e342a807cd733ac5af72411e581d1177b"
+ integrity sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=
+ dependencies:
+ is-posix-bracket "^0.1.0"
+
+expand-brackets@^2.1.4:
+ version "2.1.4"
+ resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622"
+ integrity sha1-t3c14xXOMPa27/D4OwQVGiJEliI=
+ dependencies:
+ 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"
+
+expand-range@^1.8.1:
+ version "1.8.2"
+ resolved "https://registry.yarnpkg.com/expand-range/-/expand-range-1.8.2.tgz#a299effd335fe2721ebae8e257ec79644fc85337"
+ integrity sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=
+ dependencies:
+ fill-range "^2.1.0"
+
+extend-shallow@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f"
+ integrity sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=
+ dependencies:
+ is-extendable "^0.1.0"
+
+extend-shallow@^3.0.0, extend-shallow@^3.0.2:
+ version "3.0.2"
+ resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8"
+ integrity sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=
+ dependencies:
+ assign-symbols "^1.0.0"
+ is-extendable "^1.0.1"
+
+extglob@^0.3.1:
+ version "0.3.2"
+ resolved "https://registry.yarnpkg.com/extglob/-/extglob-0.3.2.tgz#2e18ff3d2f49ab2765cec9023f011daa8d8349a1"
+ integrity sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=
+ dependencies:
+ is-extglob "^1.0.0"
+
+extglob@^2.0.4:
+ version "2.0.4"
+ resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543"
+ integrity sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==
+ dependencies:
+ 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"
+
+falafel@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/falafel/-/falafel-2.1.0.tgz#96bb17761daba94f46d001738b3cedf3a67fe06c"
+ integrity sha1-lrsXdh2rqU9G0AFzizzt86Z/4Gw=
+ dependencies:
+ acorn "^5.0.0"
+ foreach "^2.0.5"
+ isarray "0.0.1"
+ object-keys "^1.0.6"
+
+fast-async@^6.3.0:
+ version "6.3.8"
+ resolved "https://registry.yarnpkg.com/fast-async/-/fast-async-6.3.8.tgz#031b9e1d5a84608b117b3e7c999ad477ed2b08a2"
+ integrity sha512-TjlooyqrYm/gOXjD2UHNwfrWkvTbzU105Nk4bvcRTeRoL+wIeK6rqbqDg3CN9z5p37cE2iXhP6SxQFz8OVIaUg==
+ dependencies:
+ nodent-compiler "^3.2.10"
+ nodent-runtime ">=3.2.1"
+
+fast-glob@^2.2.2:
+ version "2.2.3"
+ resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-2.2.3.tgz#d09d378e9ef6b0076a0fa1ba7519d9d4d9699c28"
+ integrity sha512-NiX+JXjnx43RzvVFwRWfPKo4U+1BrK5pJPsHQdKMlLoFHrrGktXglQhHliSihWAq+m1z6fHk3uwGHrtRbS9vLA==
+ dependencies:
+ "@mrmlnc/readdir-enhanced" "^2.2.1"
+ "@nodelib/fs.stat" "^1.0.1"
+ glob-parent "^3.1.0"
+ is-glob "^4.0.0"
+ merge2 "^1.2.1"
+ micromatch "^3.1.10"
+
+fast-levenshtein@~2.0.4:
+ version "2.0.6"
+ resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917"
+ integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=
+
+fastparse@^1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/fastparse/-/fastparse-1.1.1.tgz#d1e2643b38a94d7583b479060e6c4affc94071f8"
+ integrity sha1-0eJkOzipTXWDtHkGDmxK/8lAcfg=
+
+filename-regex@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/filename-regex/-/filename-regex-2.0.1.tgz#c1c4b9bee3e09725ddb106b75c1e301fe2f18b26"
+ integrity sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=
+
+filesize@^3.6.0:
+ version "3.6.1"
+ resolved "https://registry.yarnpkg.com/filesize/-/filesize-3.6.1.tgz#090bb3ee01b6f801a8a8be99d31710b3422bb317"
+ integrity sha512-7KjR1vv6qnicaPMi1iiTcI85CyYwRO/PSFCu6SvqL8jN2Wjt/NIYQTFtFs7fSDCYOstUkEWIQGFUg5YZQfjlcg==
+
+fill-range@^2.1.0:
+ version "2.2.4"
+ resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-2.2.4.tgz#eb1e773abb056dcd8df2bfdf6af59b8b3a936565"
+ integrity sha512-cnrcCbj01+j2gTG921VZPnHbjmdAf8oQV/iGeV2kZxGSyfYjjTyY79ErsK1WJWMpw6DaApEX72binqJE+/d+5Q==
+ dependencies:
+ is-number "^2.1.0"
+ isobject "^2.0.0"
+ randomatic "^3.0.0"
+ repeat-element "^1.1.2"
+ repeat-string "^1.5.2"
+
+fill-range@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7"
+ integrity sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=
+ dependencies:
+ extend-shallow "^2.0.1"
+ is-number "^3.0.0"
+ repeat-string "^1.6.1"
+ to-regex-range "^2.1.0"
+
+find-babel-config@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/find-babel-config/-/find-babel-config-1.1.0.tgz#acc01043a6749fec34429be6b64f542ebb5d6355"
+ integrity sha1-rMAQQ6Z0n+w0Qpvmtk9ULrtdY1U=
+ dependencies:
+ json5 "^0.5.1"
+ path-exists "^3.0.0"
+
+find-up@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7"
+ integrity sha1-RdG35QbHF93UgndaK3eSCjwMV6c=
+ dependencies:
+ locate-path "^2.0.0"
+
+first-commit-date@^0.2.0:
+ version "0.2.0"
+ resolved "https://registry.yarnpkg.com/first-commit-date/-/first-commit-date-0.2.0.tgz#2ee97057ed52103862a58acf4b1d244d7705e261"
+ integrity sha1-LulwV+1SEDhipYrPSx0kTXcF4mE=
+ dependencies:
+ get-first-commit "^0.2.0"
+
+flatten@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/flatten/-/flatten-1.0.2.tgz#dae46a9d78fbe25292258cc1e780a41d95c03782"
+ integrity sha1-2uRqnXj74lKSJYzB54CkHZXAN4I=
+
+for-in@^1.0.1, for-in@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80"
+ integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=
+
+for-own@^0.1.4:
+ version "0.1.5"
+ resolved "https://registry.yarnpkg.com/for-own/-/for-own-0.1.5.tgz#5265c681a4f294dabbf17c9509b6763aa84510ce"
+ integrity sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=
+ dependencies:
+ for-in "^1.0.1"
+
+foreach@^2.0.5:
+ version "2.0.5"
+ resolved "https://registry.yarnpkg.com/foreach/-/foreach-2.0.5.tgz#0bee005018aeb260d0a3af3ae658dd0136ec1b99"
+ integrity sha1-C+4AUBiusmDQo6865ljdATbsG5k=
+
+fragment-cache@^0.2.1:
+ version "0.2.1"
+ resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19"
+ integrity sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=
+ dependencies:
+ map-cache "^0.2.2"
+
+fresh@0.5.2:
+ version "0.5.2"
+ resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7"
+ integrity sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=
+
+fs-extra@7.0.0:
+ version "7.0.0"
+ resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-7.0.0.tgz#8cc3f47ce07ef7b3593a11b9fb245f7e34c041d6"
+ integrity sha512-EglNDLRpmaTWiD/qraZn6HREAEAHJcJOmxNEYwq6xeMKnVMAy3GUcFB+wXt2C6k4CNvB/mP1y/U3dzvKKj5OtQ==
+ dependencies:
+ graceful-fs "^4.1.2"
+ jsonfile "^4.0.0"
+ universalify "^0.1.0"
+
+fs-extra@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-5.0.0.tgz#414d0110cdd06705734d055652c5411260c31abd"
+ integrity sha512-66Pm4RYbjzdyeuqudYqhFiNBbCIuI9kgRqLPSHIlXHidW8NIQtVdkM1yeZ4lXwuhbTETv3EUGMNHAAw6hiundQ==
+ dependencies:
+ graceful-fs "^4.1.2"
+ jsonfile "^4.0.0"
+ universalify "^0.1.0"
+
+fs-minipass@^1.2.5:
+ version "1.2.5"
+ resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.5.tgz#06c277218454ec288df77ada54a03b8702aacb9d"
+ integrity sha512-JhBl0skXjUPCFH7x6x61gQxrKyXsxB5gcgePLZCwfyCGGsTISMoIeObbrvVeP6Xmyaudw4TT43qV2Gz+iyd2oQ==
+ dependencies:
+ minipass "^2.2.1"
+
+fs.realpath@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
+ integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8=
+
+fsevents@^1.2.2:
+ version "1.2.4"
+ resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.4.tgz#f41dcb1af2582af3692da36fc55cbd8e1041c426"
+ integrity sha512-z8H8/diyk76B7q5wg+Ud0+CqzcAF3mBBI/bA5ne5zrRUUIvNkJY//D3BqyH571KuAC4Nr7Rw7CjWX4r0y9DvNg==
+ dependencies:
+ nan "^2.9.2"
+ node-pre-gyp "^0.10.0"
+
+fswatcher-child@^1.0.5:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/fswatcher-child/-/fswatcher-child-1.1.1.tgz#264dd95f9c4b5f8615327d7d7567884591846b9b"
+ integrity sha512-FVDjVhR71TkJ+ud6vnRwCHvCgK9drGRdimWcTLqw8iN88uL5tTX+/xrwigJdcuQGrWYo3TRw9gRzk9xqR0UPPQ==
+ dependencies:
+ chokidar "^2.0.3"
+
+function-bind@^1.1.0, function-bind@^1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d"
+ integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==
+
+gauge@~2.7.3:
+ version "2.7.4"
+ resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7"
+ integrity sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=
+ dependencies:
+ 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"
+
+generic-names@^1.0.3:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/generic-names/-/generic-names-1.0.3.tgz#2d786a121aee508876796939e8e3bff836c20917"
+ integrity sha1-LXhqEhruUIh2eWk56OO/+DbCCRc=
+ dependencies:
+ loader-utils "^0.2.16"
+
+get-first-commit@^0.2.0:
+ version "0.2.0"
+ resolved "https://registry.yarnpkg.com/get-first-commit/-/get-first-commit-0.2.0.tgz#e2948c0bf7859b40ddba6b5525f383db87251396"
+ integrity sha1-4pSMC/eFm0DdumtVJfOD24clE5Y=
+ dependencies:
+ gitty "^3.2.3"
+ lazy-cache "^0.2.4"
+
+get-port@^3.2.0:
+ version "3.2.0"
+ resolved "https://registry.yarnpkg.com/get-port/-/get-port-3.2.0.tgz#dd7ce7de187c06c8bf353796ac71e099f0980ebc"
+ integrity sha1-3Xzn3hh8Bsi/NTeWrHHgmfCYDrw=
+
+get-stream@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14"
+ integrity sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=
+
+get-value@^2.0.3, get-value@^2.0.6:
+ version "2.0.6"
+ resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28"
+ integrity sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=
+
+gitty@^3.2.3:
+ version "3.6.0"
+ resolved "https://registry.yarnpkg.com/gitty/-/gitty-3.6.0.tgz#4a001a6cb2f749cc28f7fbe2ca9ed415d71c1e53"
+ integrity sha1-SgAabLL3Scwo9/viyp7UFdccHlM=
+
+glob-base@^0.3.0:
+ version "0.3.0"
+ resolved "https://registry.yarnpkg.com/glob-base/-/glob-base-0.3.0.tgz#dbb164f6221b1c0b1ccf82aea328b497df0ea3c4"
+ integrity sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=
+ dependencies:
+ glob-parent "^2.0.0"
+ is-glob "^2.0.0"
+
+glob-parent@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-2.0.0.tgz#81383d72db054fcccf5336daa902f182f6edbb28"
+ integrity sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=
+ dependencies:
+ is-glob "^2.0.0"
+
+glob-parent@^3.1.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae"
+ integrity sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=
+ dependencies:
+ is-glob "^3.1.0"
+ path-dirname "^1.0.0"
+
+glob-to-regexp@^0.3.0:
+ version "0.3.0"
+ resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz#8c5a1494d2066c570cc3bfe4496175acc4d502ab"
+ integrity sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs=
+
+glob@^7.0.5, glob@^7.1.2:
+ version "7.1.3"
+ resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.3.tgz#3960832d3f1574108342dafd3a67b332c0969df1"
+ integrity sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==
+ dependencies:
+ 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"
+
+globals@^11.1.0:
+ version "11.8.0"
+ resolved "https://registry.yarnpkg.com/globals/-/globals-11.8.0.tgz#c1ef45ee9bed6badf0663c5cb90e8d1adec1321d"
+ integrity sha512-io6LkyPVuzCHBSQV9fmOwxZkUk6nIaGmxheLDgmuFv89j0fm2aqDbIXKAGfzCMHqz3HLF2Zf8WSG6VqMh2qFmA==
+
+globby@^7.1.1:
+ version "7.1.1"
+ resolved "https://registry.yarnpkg.com/globby/-/globby-7.1.1.tgz#fb2ccff9401f8600945dfada97440cca972b8680"
+ integrity sha1-+yzP+UAfhgCUXfral0QMypcrhoA=
+ dependencies:
+ array-union "^1.0.1"
+ dir-glob "^2.0.0"
+ glob "^7.1.2"
+ ignore "^3.3.5"
+ pify "^3.0.0"
+ slash "^1.0.0"
+
+graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.6:
+ version "4.1.11"
+ resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658"
+ integrity sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=
+
+grapheme-breaker@^0.3.2:
+ version "0.3.2"
+ resolved "https://registry.yarnpkg.com/grapheme-breaker/-/grapheme-breaker-0.3.2.tgz#5b9e6b78c3832452d2ba2bb1cb830f96276410ac"
+ integrity sha1-W55reMODJFLSuiuxy4MPlidkEKw=
+ dependencies:
+ brfs "^1.2.0"
+ unicode-trie "^0.3.1"
+
+gzip-size@^4.1.0:
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/gzip-size/-/gzip-size-4.1.0.tgz#8ae096257eabe7d69c45be2b67c448124ffb517c"
+ integrity sha1-iuCWJX6r59acRb4rZ8RIEk/7UXw=
+ dependencies:
+ duplexer "^0.1.1"
+ pify "^3.0.0"
+
+has-ansi@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91"
+ integrity sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=
+ dependencies:
+ ansi-regex "^2.0.0"
+
+has-flag@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-1.0.0.tgz#9d9e793165ce017a00f00418c43f942a7b1d11fa"
+ integrity sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=
+
+has-flag@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd"
+ integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0=
+
+has-symbols@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.0.tgz#ba1a8f1af2a0fc39650f5c850367704122063b44"
+ integrity sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=
+
+has-unicode@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9"
+ integrity sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=
+
+has-value@^0.3.1:
+ version "0.3.1"
+ resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f"
+ integrity sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=
+ dependencies:
+ get-value "^2.0.3"
+ has-values "^0.1.4"
+ isobject "^2.0.0"
+
+has-value@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/has-value/-/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177"
+ integrity sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=
+ dependencies:
+ get-value "^2.0.6"
+ has-values "^1.0.0"
+ isobject "^3.0.0"
+
+has-values@^0.1.4:
+ version "0.1.4"
+ resolved "https://registry.yarnpkg.com/has-values/-/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771"
+ integrity sha1-bWHeldkd/Km5oCCJrThL/49it3E=
+
+has-values@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f"
+ integrity sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=
+ dependencies:
+ is-number "^3.0.0"
+ kind-of "^4.0.0"
+
+has@^1.0.0, has@^1.0.1:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796"
+ integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==
+ dependencies:
+ function-bind "^1.1.1"
+
+hash-base@^3.0.0:
+ version "3.0.4"
+ resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.0.4.tgz#5fc8686847ecd73499403319a6b0a3f3f6ae4918"
+ integrity sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=
+ dependencies:
+ inherits "^2.0.1"
+ safe-buffer "^5.0.1"
+
+hash-sum@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/hash-sum/-/hash-sum-1.0.2.tgz#33b40777754c6432573c120cc3808bbd10d47f04"
+ integrity sha1-M7QHd3VMZDJXPBIMw4CLvRDUfwQ=
+
+hash.js@^1.0.0, hash.js@^1.0.3:
+ version "1.1.5"
+ resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.5.tgz#e38ab4b85dfb1e0c40fe9265c0e9b54854c23812"
+ integrity sha512-eWI5HG9Np+eHV1KQhisXWwM+4EPPYe5dFX1UZZH7k/E3JzDEazVH+VGlZi6R94ZqImq+A3D1mCEtrFIfg/E7sA==
+ dependencies:
+ inherits "^2.0.3"
+ minimalistic-assert "^1.0.1"
+
+hex-color-regex@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/hex-color-regex/-/hex-color-regex-1.1.0.tgz#4c06fccb4602fe2602b3c93df82d7e7dbf1a8a8e"
+ integrity sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ==
+
+hmac-drbg@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1"
+ integrity sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=
+ dependencies:
+ hash.js "^1.0.3"
+ minimalistic-assert "^1.0.0"
+ minimalistic-crypto-utils "^1.0.1"
+
+hosted-git-info@^2.1.4:
+ version "2.7.1"
+ resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.7.1.tgz#97f236977bd6e125408930ff6de3eec6281ec047"
+ integrity sha512-7T/BxH19zbcCTa8XkMlbK5lTo1WtgkFi3GvdWEyNuc4Vex7/9Dqbnpsf4JMydcfj9HCg4zUWFTL3Za6lapg5/w==
+
+hsl-regex@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/hsl-regex/-/hsl-regex-1.0.0.tgz#d49330c789ed819e276a4c0d272dffa30b18fe6e"
+ integrity sha1-1JMwx4ntgZ4nakwNJy3/owsY/m4=
+
+hsla-regex@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/hsla-regex/-/hsla-regex-1.0.0.tgz#c1ce7a3168c8c6614033a4b5f7877f3b225f9c38"
+ integrity sha1-wc56MWjIxmFAM6S194d/OyJfnDg=
+
+html-comment-regex@^1.1.0:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/html-comment-regex/-/html-comment-regex-1.1.2.tgz#97d4688aeb5c81886a364faa0cad1dda14d433a7"
+ integrity sha512-P+M65QY2JQ5Y0G9KKdlDpo0zK+/OHptU5AaBwUfAIDJZk1MYf32Frm84EcOytfJE0t5JvkAnKlmjsXDnWzCJmQ==
+
+htmlnano@^0.1.9:
+ version "0.1.10"
+ resolved "https://registry.yarnpkg.com/htmlnano/-/htmlnano-0.1.10.tgz#a0a548eb4c76ae2cf2423ec7a25c881734d3dea6"
+ integrity sha512-eTEUzz8VdWYp+w/KUdb99kwao4reR64epUySyZkQeepcyzPQ2n2EPWzibf6QDxmkGy10Kr+CKxYqI3izSbmhJQ==
+ dependencies:
+ cssnano "^3.4.0"
+ object-assign "^4.0.1"
+ posthtml "^0.11.3"
+ posthtml-render "^1.1.4"
+ svgo "^1.0.5"
+ terser "^3.8.1"
+
+htmlparser2@^3.9.2:
+ version "3.9.2"
+ resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-3.9.2.tgz#1bdf87acca0f3f9e53fa4fcceb0f4b4cbb00b338"
+ integrity sha1-G9+HrMoPP55T+k/M6w9LTLsAszg=
+ dependencies:
+ domelementtype "^1.3.0"
+ domhandler "^2.3.0"
+ domutils "^1.5.1"
+ entities "^1.1.1"
+ inherits "^2.0.1"
+ readable-stream "^2.0.2"
+
+http-errors@~1.6.2:
+ version "1.6.3"
+ resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.3.tgz#8b55680bb4be283a0b5bf4ea2e38580be1d9320d"
+ integrity sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=
+ dependencies:
+ depd "~1.1.2"
+ inherits "2.0.3"
+ setprototypeof "1.1.0"
+ statuses ">= 1.4.0 < 2"
+
+https-browserify@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73"
+ integrity sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=
+
+iconv-lite@^0.4.4:
+ version "0.4.24"
+ resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b"
+ integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==
+ dependencies:
+ safer-buffer ">= 2.1.2 < 3"
+
+icss-replace-symbols@1.1.0, icss-replace-symbols@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz#06ea6f83679a7749e386cfe1fe812ae5db223ded"
+ integrity sha1-Bupvg2ead0njhs/h/oEq5dsiPe0=
+
+ieee754@^1.1.4:
+ version "1.1.12"
+ resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.12.tgz#50bf24e5b9c8bb98af4964c941cdb0918da7b60b"
+ integrity sha512-GguP+DRY+pJ3soyIiGPTvdiVXjZ+DbXOxGpXn3eMvNW4x4irjqXm4wHKscC+TfxSJ0yw/S1F24tqdMNsMZTiLA==
+
+ignore-walk@^3.0.1:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-3.0.1.tgz#a83e62e7d272ac0e3b551aaa82831a19b69f82f8"
+ integrity sha512-DTVlMx3IYPe0/JJcYP7Gxg7ttZZu3IInhuEhbchuqneY9wWe5Ojy2mXLBaQFUQmo0AW2r3qG7m1mg86js+gnlQ==
+ dependencies:
+ minimatch "^3.0.4"
+
+ignore@^3.3.5:
+ version "3.3.10"
+ resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.10.tgz#0a97fb876986e8081c631160f8f9f389157f0043"
+ integrity sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug==
+
+import-cwd@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/import-cwd/-/import-cwd-2.1.0.tgz#aa6cf36e722761285cb371ec6519f53e2435b0a9"
+ integrity sha1-qmzzbnInYShcs3HsZRn1PiQ1sKk=
+ dependencies:
+ import-from "^2.1.0"
+
+import-from@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/import-from/-/import-from-2.1.0.tgz#335db7f2a7affd53aaa471d4b8021dee36b7f3b1"
+ integrity sha1-M1238qev/VOqpHHUuAId7ja387E=
+ dependencies:
+ resolve-from "^3.0.0"
+
+indent-string@^3.0.0:
+ version "3.2.0"
+ resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-3.2.0.tgz#4a5fd6d27cc332f37e5419a504dbb837105c9289"
+ integrity sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok=
+
+indexes-of@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/indexes-of/-/indexes-of-1.0.1.tgz#f30f716c8e2bd346c7b67d3df3915566a7c05607"
+ integrity sha1-8w9xbI4r00bHtn0985FVZqfAVgc=
+
+indexof@0.0.1:
+ version "0.0.1"
+ resolved "https://registry.yarnpkg.com/indexof/-/indexof-0.0.1.tgz#82dc336d232b9062179d05ab3293a66059fd435d"
+ integrity sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=
+
+inflight@^1.0.4:
+ version "1.0.6"
+ resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9"
+ integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=
+ dependencies:
+ once "^1.3.0"
+ wrappy "1"
+
+inherits@2, inherits@2.0.3, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.1, inherits@~2.0.3:
+ version "2.0.3"
+ resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de"
+ integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=
+
+inherits@2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1"
+ integrity sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=
+
+ini@^1.3.4, ini@~1.3.0:
+ version "1.3.5"
+ resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927"
+ integrity sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==
+
+invariant@^2.2.2:
+ version "2.2.4"
+ resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6"
+ integrity sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==
+ dependencies:
+ loose-envify "^1.0.0"
+
+is-absolute-url@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/is-absolute-url/-/is-absolute-url-2.1.0.tgz#50530dfb84fcc9aa7dbe7852e83a37b93b9f2aa6"
+ integrity sha1-UFMN+4T8yap9vnhS6Do3uTufKqY=
+
+is-accessor-descriptor@^0.1.6:
+ version "0.1.6"
+ resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6"
+ integrity sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=
+ dependencies:
+ kind-of "^3.0.2"
+
+is-accessor-descriptor@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz#169c2f6d3df1f992618072365c9b0ea1f6878656"
+ integrity sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==
+ dependencies:
+ kind-of "^6.0.0"
+
+is-arrayish@^0.2.1:
+ version "0.2.1"
+ resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d"
+ integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=
+
+is-arrayish@^0.3.1:
+ version "0.3.2"
+ resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.3.2.tgz#4574a2ae56f7ab206896fb431eaeed066fdf8f03"
+ integrity sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==
+
+is-binary-path@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898"
+ integrity sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=
+ dependencies:
+ binary-extensions "^1.0.0"
+
+is-buffer@^1.1.5:
+ version "1.1.6"
+ resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be"
+ integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==
+
+is-builtin-module@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/is-builtin-module/-/is-builtin-module-1.0.0.tgz#540572d34f7ac3119f8f76c30cbc1b1e037affbe"
+ integrity sha1-VAVy0096wxGfj3bDDLwbHgN6/74=
+ dependencies:
+ builtin-modules "^1.0.0"
+
+is-builtin-module@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/is-builtin-module/-/is-builtin-module-2.0.0.tgz#431104b3b4ba838ec7a17d82bb3bccd2233e8cd9"
+ integrity sha512-G2jLHphOywpgrL/AaJKWDXpdpGR9X4V1PCkB+EwG5Z28z8EukgdWnAUFAS2wdBtIpwHhHBIiq0NBOWEbSXN0Rg==
+ dependencies:
+ builtin-modules "^2.0.0"
+
+is-callable@^1.1.3, is-callable@^1.1.4:
+ version "1.1.4"
+ resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.4.tgz#1e1adf219e1eeb684d691f9d6a05ff0d30a24d75"
+ integrity sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA==
+
+is-ci@^1.1.0:
+ version "1.2.1"
+ resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-1.2.1.tgz#e3779c8ee17fccf428488f6e281187f2e632841c"
+ integrity sha512-s6tfsaQaQi3JNciBH6shVqEDvhGut0SUXr31ag8Pd8BBbVVlcGfWhpPmEOoM6RJ5TFhbypvf5yyRw/VXW1IiWg==
+ dependencies:
+ ci-info "^1.5.0"
+
+is-color-stop@^1.0.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/is-color-stop/-/is-color-stop-1.1.0.tgz#cfff471aee4dd5c9e158598fbe12967b5cdad345"
+ integrity sha1-z/9HGu5N1cnhWFmPvhKWe1za00U=
+ dependencies:
+ css-color-names "^0.0.4"
+ hex-color-regex "^1.1.0"
+ hsl-regex "^1.0.0"
+ hsla-regex "^1.0.0"
+ rgb-regex "^1.0.1"
+ rgba-regex "^1.0.0"
+
+is-data-descriptor@^0.1.4:
+ version "0.1.4"
+ resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56"
+ integrity sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=
+ dependencies:
+ kind-of "^3.0.2"
+
+is-data-descriptor@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz#d84876321d0e7add03990406abbbbd36ba9268c7"
+ integrity sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==
+ dependencies:
+ kind-of "^6.0.0"
+
+is-date-object@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.1.tgz#9aa20eb6aeebbff77fbd33e74ca01b33581d3a16"
+ integrity sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=
+
+is-descriptor@^0.1.0:
+ version "0.1.6"
+ resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca"
+ integrity sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==
+ dependencies:
+ is-accessor-descriptor "^0.1.6"
+ is-data-descriptor "^0.1.4"
+ kind-of "^5.0.0"
+
+is-descriptor@^1.0.0, is-descriptor@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.2.tgz#3b159746a66604b04f8c81524ba365c5f14d86ec"
+ integrity sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==
+ dependencies:
+ is-accessor-descriptor "^1.0.0"
+ is-data-descriptor "^1.0.0"
+ kind-of "^6.0.2"
+
+is-directory@^0.3.1:
+ version "0.3.1"
+ resolved "https://registry.yarnpkg.com/is-directory/-/is-directory-0.3.1.tgz#61339b6f2475fc772fd9c9d83f5c8575dc154ae1"
+ integrity sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=
+
+is-dotfile@^1.0.0:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/is-dotfile/-/is-dotfile-1.0.3.tgz#a6a2f32ffd2dfb04f5ca25ecd0f6b83cf798a1e1"
+ integrity sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=
+
+is-equal-shallow@^0.1.3:
+ version "0.1.3"
+ resolved "https://registry.yarnpkg.com/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz#2238098fc221de0bcfa5d9eac4c45d638aa1c534"
+ integrity sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=
+ dependencies:
+ is-primitive "^2.0.0"
+
+is-extendable@^0.1.0, is-extendable@^0.1.1:
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89"
+ integrity sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=
+
+is-extendable@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4"
+ integrity sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==
+ dependencies:
+ is-plain-object "^2.0.4"
+
+is-extglob@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-1.0.0.tgz#ac468177c4943405a092fc8f29760c6ffc6206c0"
+ integrity sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=
+
+is-extglob@^2.1.0, is-extglob@^2.1.1:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2"
+ integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=
+
+is-fullwidth-code-point@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb"
+ integrity sha1-754xOG8DGn8NZDr4L95QxFfvAMs=
+ dependencies:
+ number-is-nan "^1.0.0"
+
+is-fullwidth-code-point@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f"
+ integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=
+
+is-glob@^2.0.0, is-glob@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-2.0.1.tgz#d096f926a3ded5600f3fdfd91198cb0888c2d863"
+ integrity sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=
+ dependencies:
+ is-extglob "^1.0.0"
+
+is-glob@^3.1.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a"
+ integrity sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=
+ dependencies:
+ is-extglob "^2.1.0"
+
+is-glob@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.0.tgz#9521c76845cc2610a85203ddf080a958c2ffabc0"
+ integrity sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A=
+ dependencies:
+ is-extglob "^2.1.1"
+
+is-module@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/is-module/-/is-module-1.0.0.tgz#3258fb69f78c14d5b815d664336b4cffb6441591"
+ integrity sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE=
+
+is-number@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/is-number/-/is-number-2.1.0.tgz#01fcbbb393463a548f2f466cce16dece49db908f"
+ integrity sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=
+ dependencies:
+ kind-of "^3.0.2"
+
+is-number@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195"
+ integrity sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=
+ dependencies:
+ kind-of "^3.0.2"
+
+is-number@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/is-number/-/is-number-4.0.0.tgz#0026e37f5454d73e356dfe6564699867c6a7f0ff"
+ integrity sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==
+
+is-obj@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f"
+ integrity sha1-PkcprB9f3gJc19g6iW2rn09n2w8=
+
+is-plain-obj@^1.0.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e"
+ integrity sha1-caUMhCnfync8kqOQpKA7OfzVHT4=
+
+is-plain-object@^2.0.1, is-plain-object@^2.0.3, is-plain-object@^2.0.4:
+ version "2.0.4"
+ resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677"
+ integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==
+ dependencies:
+ isobject "^3.0.1"
+
+is-posix-bracket@^0.1.0:
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz#3334dc79774368e92f016e6fbc0a88f5cd6e6bc4"
+ integrity sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=
+
+is-primitive@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/is-primitive/-/is-primitive-2.0.0.tgz#207bab91638499c07b2adf240a41a87210034575"
+ integrity sha1-IHurkWOEmcB7Kt8kCkGochADRXU=
+
+is-reference@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/is-reference/-/is-reference-1.1.0.tgz#50e6ef3f64c361e2c53c0416cdc9420037f2685b"
+ integrity sha512-h37O/IX4efe56o9k41II1ECMqKwtqHa7/12dLDEzJIFux2x15an4WCDb0/eKdmUgRpLJ3bR0DrzDc7vOrVgRDw==
+ dependencies:
+ "@types/estree" "0.0.38"
+
+is-regex@^1.0.4:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.4.tgz#5517489b547091b0930e095654ced25ee97e9491"
+ integrity sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=
+ dependencies:
+ has "^1.0.1"
+
+is-resolvable@^1.0.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/is-resolvable/-/is-resolvable-1.1.0.tgz#fb18f87ce1feb925169c9a407c19318a3206ed88"
+ integrity sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==
+
+is-stream@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44"
+ integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ=
+
+is-svg@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/is-svg/-/is-svg-2.1.0.tgz#cf61090da0d9efbcab8722deba6f032208dbb0e9"
+ integrity sha1-z2EJDaDZ77yrhyLeum8DIgjbsOk=
+ dependencies:
+ html-comment-regex "^1.1.0"
+
+is-svg@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/is-svg/-/is-svg-3.0.0.tgz#9321dbd29c212e5ca99c4fa9794c714bcafa2f75"
+ integrity sha512-gi4iHK53LR2ujhLVVj+37Ykh9GLqYHX6JOVXbLAucaG/Cqw9xwdFOjDM2qeifLs1sF1npXXFvDu0r5HNgCMrzQ==
+ dependencies:
+ html-comment-regex "^1.1.0"
+
+is-symbol@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.2.tgz#a055f6ae57192caee329e7a860118b497a950f38"
+ integrity sha512-HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw==
+ dependencies:
+ has-symbols "^1.0.0"
+
+is-url@^1.2.2:
+ version "1.2.4"
+ resolved "https://registry.yarnpkg.com/is-url/-/is-url-1.2.4.tgz#04a4df46d28c4cff3d73d01ff06abeb318a1aa52"
+ integrity sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww==
+
+is-windows@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d"
+ integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==
+
+is-wsl@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-1.1.0.tgz#1f16e4aa22b04d1336b66188a66af3c600c3a66d"
+ integrity sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=
+
+isarray@0.0.1:
+ version "0.0.1"
+ resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf"
+ integrity sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=
+
+isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11"
+ integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=
+
+isexe@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10"
+ integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=
+
+isobject@^2.0.0, isobject@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89"
+ integrity sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=
+ dependencies:
+ isarray "1.0.0"
+
+isobject@^3.0.0, isobject@^3.0.1:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df"
+ integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8=
+
+js-base64@^2.1.9:
+ version "2.4.9"
+ resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-2.4.9.tgz#748911fb04f48a60c4771b375cac45a80df11c03"
+ integrity sha512-xcinL3AuDJk7VSzsHgb9DvvIXayBbadtMZ4HFPx8rUszbW1MuNMlwYVC4zzCZ6e1sqZpnNS5ZFYOhXqA39T7LQ==
+
+js-beautify@^1.7.5:
+ version "1.8.6"
+ resolved "https://registry.yarnpkg.com/js-beautify/-/js-beautify-1.8.6.tgz#6a7e61e47a6e45fb58c5e22499eed350f8607d98"
+ integrity sha512-TYDZa+lg8vEC5U0OmGQEEwiZ0XFBfvZAUeNOtqflLe+woKuIqF4JzlsBx/C1KVYW5lUewZy2ODL4Obq6sH7a4Q==
+ dependencies:
+ config-chain "~1.1.5"
+ editorconfig "^0.15.0"
+ mkdirp "~0.5.0"
+ nopt "~4.0.1"
+
+js-levenshtein@^1.1.3:
+ version "1.1.4"
+ resolved "https://registry.yarnpkg.com/js-levenshtein/-/js-levenshtein-1.1.4.tgz#3a56e3cbf589ca0081eb22cd9ba0b1290a16d26e"
+ integrity sha512-PxfGzSs0ztShKrUYPIn5r0MtyAhYcCwmndozzpz8YObbPnD1jFxzlBGbRnX2mIu6Z13xN6+PTu05TQFnZFlzow==
+
+"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499"
+ integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==
+
+js-yaml@^3.10.0, js-yaml@^3.12.0, js-yaml@^3.4.3, js-yaml@^3.9.0:
+ version "3.12.0"
+ resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.12.0.tgz#eaed656ec8344f10f527c6bfa1b6e2244de167d1"
+ integrity sha512-PIt2cnwmPfL4hKNwqeiuz4bKfnzHTBv6HyVgjahA6mPLwPDzjDWrplJBMjHUFxku/N3FlmrbyPclad+I+4mJ3A==
+ dependencies:
+ argparse "^1.0.7"
+ esprima "^4.0.0"
+
+js-yaml@~3.7.0:
+ version "3.7.0"
+ resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.7.0.tgz#5c967ddd837a9bfdca5f2de84253abe8a1c03b80"
+ integrity sha1-XJZ93YN6m/3KXy3oQlOr6KHAO4A=
+ dependencies:
+ argparse "^1.0.7"
+ esprima "^2.6.0"
+
+jsesc@^2.5.1:
+ version "2.5.1"
+ resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.1.tgz#e421a2a8e20d6b0819df28908f782526b96dd1fe"
+ integrity sha1-5CGiqOINawgZ3yiQj3glJrlt0f4=
+
+jsesc@~0.5.0:
+ version "0.5.0"
+ resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d"
+ integrity sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=
+
+json-parse-better-errors@^1.0.1:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9"
+ integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==
+
+json5@^0.5.0, json5@^0.5.1:
+ version "0.5.1"
+ resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821"
+ integrity sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=
+
+json5@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.1.tgz#779fb0018604fa854eacbf6252180d83543e3dbe"
+ integrity sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==
+ dependencies:
+ minimist "^1.2.0"
+
+jsonfile@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb"
+ integrity sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=
+ optionalDependencies:
+ graceful-fs "^4.1.6"
+
+kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0:
+ version "3.2.2"
+ resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64"
+ integrity sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=
+ dependencies:
+ is-buffer "^1.1.5"
+
+kind-of@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57"
+ integrity sha1-IIE989cSkosgc3hpGkUGb65y3Vc=
+ dependencies:
+ is-buffer "^1.1.5"
+
+kind-of@^5.0.0:
+ version "5.1.0"
+ resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d"
+ integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==
+
+kind-of@^6.0.0, kind-of@^6.0.2:
+ version "6.0.2"
+ resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.2.tgz#01146b36a6218e64e58f3a8d66de5d7fc6f6d051"
+ integrity sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==
+
+lazy-cache@^0.2.4:
+ version "0.2.7"
+ resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-0.2.7.tgz#7feddf2dcb6edb77d11ef1d117ab5ffdf0ab1b65"
+ integrity sha1-f+3fLctu23fRHvHRF6tf/fCrG2U=
+
+levn@~0.3.0:
+ version "0.3.0"
+ resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee"
+ integrity sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=
+ dependencies:
+ prelude-ls "~1.1.2"
+ type-check "~0.3.2"
+
+load-json-file@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-2.0.0.tgz#7947e42149af80d696cbf797bcaabcfe1fe29ca8"
+ integrity sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=
+ dependencies:
+ graceful-fs "^4.1.2"
+ parse-json "^2.2.0"
+ pify "^2.0.0"
+ strip-bom "^3.0.0"
+
+loader-utils@^0.2.16:
+ version "0.2.17"
+ resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-0.2.17.tgz#f86e6374d43205a6e6c60e9196f17c0299bfb348"
+ integrity sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g=
+ dependencies:
+ big.js "^3.1.3"
+ emojis-list "^2.0.0"
+ json5 "^0.5.0"
+ object-assign "^4.0.1"
+
+locate-character@^2.0.5:
+ version "2.0.5"
+ resolved "https://registry.yarnpkg.com/locate-character/-/locate-character-2.0.5.tgz#f2d2614d49820ecb3c92d80d193b8db755f74c0f"
+ integrity sha512-n2GmejDXtOPBAZdIiEFy5dJ5N38xBCXLNOtw2WpB9kGh6pnrEuKlwYI+Tkpofc4wDtVXHtoAOJaMRlYG/oYaxg==
+
+locate-path@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e"
+ integrity sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=
+ dependencies:
+ p-locate "^2.0.0"
+ path-exists "^3.0.0"
+
+lodash.camelcase@^4.3.0:
+ version "4.3.0"
+ resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6"
+ integrity sha1-soqmKIorn8ZRA1x3EfZathkDMaY=
+
+lodash.clone@^4.5.0:
+ version "4.5.0"
+ resolved "https://registry.yarnpkg.com/lodash.clone/-/lodash.clone-4.5.0.tgz#195870450f5a13192478df4bc3d23d2dea1907b6"
+ integrity sha1-GVhwRQ9aExkkeN9Lw9I9LeoZB7Y=
+
+lodash.debounce@^4.0.8:
+ version "4.0.8"
+ resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af"
+ integrity sha1-gteb/zCmfEAF/9XiUVMArZyk168=
+
+lodash.memoize@^4.1.2:
+ version "4.1.2"
+ resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe"
+ integrity sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=
+
+lodash.uniq@^4.5.0:
+ version "4.5.0"
+ resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773"
+ integrity sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=
+
+lodash@^4.17.10, lodash@^4.17.4:
+ version "4.17.11"
+ resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.11.tgz#b39ea6229ef607ecd89e2c8df12536891cac9b8d"
+ integrity sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==
+
+log-symbols@^2.2.0:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-2.2.0.tgz#5740e1c5d6f0dfda4ad9323b5332107ef6b4c40a"
+ integrity sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==
+ dependencies:
+ chalk "^2.0.1"
+
+log-update@^2.3.0:
+ version "2.3.0"
+ resolved "https://registry.yarnpkg.com/log-update/-/log-update-2.3.0.tgz#88328fd7d1ce7938b29283746f0b1bc126b24708"
+ integrity sha1-iDKP19HOeTiykoN0bwsbwSayRwg=
+ dependencies:
+ ansi-escapes "^3.0.0"
+ cli-cursor "^2.0.0"
+ wrap-ansi "^3.0.1"
+
+loose-envify@^1.0.0:
+ version "1.4.0"
+ resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf"
+ integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==
+ dependencies:
+ js-tokens "^3.0.0 || ^4.0.0"
+
+lru-cache@^4.0.1, lru-cache@^4.1.1, lru-cache@^4.1.2:
+ version "4.1.3"
+ resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.3.tgz#a1175cf3496dfc8436c156c334b4955992bce69c"
+ integrity sha512-fFEhvcgzuIoJVUF8fYr5KR0YqxD238zgObTps31YdADwPPAp82a4M8TrckkWyx7ekNlf9aBcVn81cFwwXngrJA==
+ dependencies:
+ pseudomap "^1.0.2"
+ yallist "^2.1.2"
+
+magic-string@^0.22.4:
+ version "0.22.5"
+ resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.22.5.tgz#8e9cf5afddf44385c1da5bc2a6a0dbd10b03657e"
+ integrity sha512-oreip9rJZkzvA8Qzk9HFs8fZGF/u7H/gtrE8EN6RjKJ9kh2HlC+yQ2QezifqTZfGyiuAV0dRv5a+y/8gBb1m9w==
+ dependencies:
+ vlq "^0.2.2"
+
+magic-string@^0.25.1:
+ version "0.25.1"
+ resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.25.1.tgz#b1c248b399cd7485da0fe7385c2fc7011843266e"
+ integrity sha512-sCuTz6pYom8Rlt4ISPFn6wuFodbKMIHUMv4Qko9P17dpxb7s52KJTmRuZZqHdGmLCK9AOcDare039nRIcfdkEg==
+ dependencies:
+ sourcemap-codec "^1.4.1"
+
+map-cache@^0.2.2:
+ version "0.2.2"
+ resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf"
+ integrity sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=
+
+map-visit@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f"
+ integrity sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=
+ dependencies:
+ object-visit "^1.0.0"
+
+math-expression-evaluator@^1.2.14:
+ version "1.2.17"
+ resolved "https://registry.yarnpkg.com/math-expression-evaluator/-/math-expression-evaluator-1.2.17.tgz#de819fdbcd84dccd8fae59c6aeb79615b9d266ac"
+ integrity sha1-3oGf282E3M2PrlnGrreWFbnSZqw=
+
+math-random@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/math-random/-/math-random-1.0.1.tgz#8b3aac588b8a66e4975e3cdea67f7bb329601fac"
+ integrity sha1-izqsWIuKZuSXXjzepn97sylgH6w=
+
+md5.js@^1.3.4:
+ version "1.3.5"
+ resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f"
+ integrity sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==
+ dependencies:
+ hash-base "^3.0.0"
+ inherits "^2.0.1"
+ safe-buffer "^5.1.2"
+
+mdn-data@~1.1.0:
+ version "1.1.4"
+ resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-1.1.4.tgz#50b5d4ffc4575276573c4eedb8780812a8419f01"
+ integrity sha512-FSYbp3lyKjyj3E7fMl6rYvUdX0FBXaluGqlFoYESWQlyUTq8R+wp0rkFxoYFqZlHCvsUXGjyJmLQSnXToYhOSA==
+
+merge-source-map@1.0.4:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/merge-source-map/-/merge-source-map-1.0.4.tgz#a5de46538dae84d4114cc5ea02b4772a6346701f"
+ integrity sha1-pd5GU42uhNQRTMXqArR3KmNGcB8=
+ dependencies:
+ source-map "^0.5.6"
+
+merge-source-map@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/merge-source-map/-/merge-source-map-1.1.0.tgz#2fdde7e6020939f70906a68f2d7ae685e4c8c646"
+ integrity sha512-Qkcp7P2ygktpMPh2mCQZaf3jhN6D3Z/qVZHSdWvQ+2Ef5HgRAPBO57A77+ENm0CPx2+1Ce/MYKi3ymqdfuqibw==
+ dependencies:
+ source-map "^0.6.1"
+
+merge2@^1.2.1:
+ version "1.2.2"
+ resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.2.2.tgz#03212e3da8d86c4d8523cebd6318193414f94e34"
+ integrity sha512-bgM8twH86rWni21thii6WCMQMRMmwqqdW3sGWi9IipnVAszdLXRjwDwAnyrVXo6DuP3AjRMMttZKUB48QWIFGg==
+
+micromatch@^2.3.11:
+ version "2.3.11"
+ resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-2.3.11.tgz#86677c97d1720b363431d04d0d15293bd38c1565"
+ integrity sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=
+ dependencies:
+ arr-diff "^2.0.0"
+ array-unique "^0.2.1"
+ braces "^1.8.2"
+ expand-brackets "^0.1.4"
+ extglob "^0.3.1"
+ filename-regex "^2.0.0"
+ is-extglob "^1.0.0"
+ is-glob "^2.0.1"
+ kind-of "^3.0.2"
+ normalize-path "^2.0.1"
+ object.omit "^2.0.0"
+ parse-glob "^3.0.4"
+ regex-cache "^0.4.2"
+
+micromatch@^3.0.4, micromatch@^3.1.10, micromatch@^3.1.4:
+ version "3.1.10"
+ resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23"
+ integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==
+ dependencies:
+ 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"
+
+miller-rabin@^4.0.0:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.1.tgz#f080351c865b0dc562a8462966daa53543c78a4d"
+ integrity sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==
+ dependencies:
+ bn.js "^4.0.0"
+ brorand "^1.0.1"
+
+mime@1.4.1:
+ version "1.4.1"
+ resolved "https://registry.yarnpkg.com/mime/-/mime-1.4.1.tgz#121f9ebc49e3766f311a76e1fa1c8003c4b03aa6"
+ integrity sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==
+
+mimic-fn@^1.0.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022"
+ integrity sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==
+
+minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7"
+ integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==
+
+minimalistic-crypto-utils@^1.0.0, minimalistic-crypto-utils@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a"
+ integrity sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=
+
+minimatch@^3.0.2, minimatch@^3.0.4:
+ version "3.0.4"
+ resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083"
+ integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==
+ dependencies:
+ brace-expansion "^1.1.7"
+
+minimist@0.0.8:
+ version "0.0.8"
+ resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d"
+ integrity sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=
+
+minimist@^1.1.3, minimist@^1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284"
+ integrity sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=
+
+minimost@^1.0.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/minimost/-/minimost-1.1.0.tgz#b0356d50fec059c965743d72ce4d202d262a9705"
+ integrity sha1-sDVtUP7AWclldD1yzk0gLSYqlwU=
+ dependencies:
+ minimist "^1.2.0"
+
+minipass@^2.2.1, minipass@^2.3.3:
+ version "2.3.4"
+ resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.3.4.tgz#4768d7605ed6194d6d576169b9e12ef71e9d9957"
+ integrity sha512-mlouk1OHlaUE8Odt1drMtG1bAJA4ZA6B/ehysgV0LUIrDHdKgo1KorZq3pK0b/7Z7LJIQ12MNM6aC+Tn6lUZ5w==
+ dependencies:
+ safe-buffer "^5.1.2"
+ yallist "^3.0.0"
+
+minizlib@^1.1.0:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.1.1.tgz#6734acc045a46e61d596a43bb9d9cd326e19cc42"
+ integrity sha512-TrfjCjk4jLhcJyGMYymBH6oTXcWjYbUAXTHDbtnWHjZC25h0cdajHuPE1zxb4DVmu8crfh+HwH/WMuyLG0nHBg==
+ dependencies:
+ minipass "^2.2.1"
+
+mixin-deep@^1.2.0:
+ version "1.3.1"
+ resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.1.tgz#a49e7268dce1a0d9698e45326c5626df3543d0fe"
+ integrity sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ==
+ dependencies:
+ for-in "^1.0.2"
+ is-extendable "^1.0.1"
+
+mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.0, mkdirp@~0.5.1:
+ version "0.5.1"
+ resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903"
+ integrity sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=
+ dependencies:
+ minimist "0.0.8"
+
+ms@2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8"
+ integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=
+
+ms@^2.1.1:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a"
+ integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==
+
+nan@^2.0.7, nan@^2.9.2:
+ version "2.11.1"
+ resolved "https://registry.yarnpkg.com/nan/-/nan-2.11.1.tgz#90e22bccb8ca57ea4cd37cc83d3819b52eea6766"
+ integrity sha512-iji6k87OSXa0CcrLl9z+ZiYSuR2o+c0bGuNmXdrhTQTakxytAFsC56SArGYoiHlJlFoHSnvmhpceZJaXkVuOtA==
+
+nanomatch@^1.2.9:
+ version "1.2.13"
+ resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119"
+ integrity sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==
+ dependencies:
+ 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"
+
+needle@^2.2.1:
+ version "2.2.4"
+ resolved "https://registry.yarnpkg.com/needle/-/needle-2.2.4.tgz#51931bff82533b1928b7d1d69e01f1b00ffd2a4e"
+ integrity sha512-HyoqEb4wr/rsoaIDfTH2aVL9nWtQqba2/HvMv+++m8u0dz808MaagKILxtfeSN7QU7nvbQ79zk3vYOJp9zsNEA==
+ dependencies:
+ debug "^2.1.2"
+ iconv-lite "^0.4.4"
+ sax "^1.2.4"
+
+nice-try@^1.0.4:
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366"
+ integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==
+
+node-forge@^0.7.1:
+ version "0.7.6"
+ resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.7.6.tgz#fdf3b418aee1f94f0ef642cd63486c77ca9724ac"
+ integrity sha512-sol30LUpz1jQFBjOKwbjxijiE3b6pjd74YwfD0fJOKPjF+fONKb2Yg8rYgS6+bK6VDl+/wfr4IYpC7jDzLUIfw==
+
+node-libs-browser@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/node-libs-browser/-/node-libs-browser-2.1.0.tgz#5f94263d404f6e44767d726901fff05478d600df"
+ integrity sha512-5AzFzdoIMb89hBGMZglEegffzgRg+ZFoUmisQ8HI4j1KDdpx13J0taNp2y9xPbur6W61gepGDDotGBVQ7mfUCg==
+ dependencies:
+ 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 "^1.0.0"
+ https-browserify "^1.0.0"
+ os-browserify "^0.3.0"
+ path-browserify "0.0.0"
+ 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.10.3"
+ vm-browserify "0.0.4"
+
+node-pre-gyp@^0.10.0:
+ version "0.10.3"
+ resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.10.3.tgz#3070040716afdc778747b61b6887bf78880b80fc"
+ integrity sha512-d1xFs+C/IPS8Id0qPTZ4bUT8wWryfR/OzzAFxweG+uLN85oPzyo2Iw6bVlLQ/JOdgNonXLCoRyqDzDWq4iw72A==
+ dependencies:
+ 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"
+
+node-releases@^1.0.0-alpha.12:
+ version "1.0.0-alpha.12"
+ resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.0.0-alpha.12.tgz#32e461b879ea76ac674e511d9832cf29da345268"
+ integrity sha512-VPB4rTPqpVyWKBHbSa4YPFme3+8WHsOSpvbp0Mfj0bWsC8TEjt4HQrLl1hsBDELlp1nB4lflSgSuGTYiuyaP7Q==
+ dependencies:
+ semver "^5.3.0"
+
+nodent-compiler@^3.2.10:
+ version "3.2.11"
+ resolved "https://registry.yarnpkg.com/nodent-compiler/-/nodent-compiler-3.2.11.tgz#8f4bc703d7d8d0e563f5e09ea22efdce04dbaf9b"
+ integrity sha512-rfDrGWdgIJYomPUzR8nXiWNuIhJ7cVodPeZP3Ho65LEycuaX2uVNZ0ytpcfrmUKzdFeLRtye9+pHe8OynPZuPQ==
+ dependencies:
+ acorn ">= 2.5.2 <= 5.7.3"
+ acorn-es7-plugin "^1.1.7"
+ nodent-transform "^3.2.9"
+ source-map "^0.5.7"
+
+nodent-runtime@>=3.2.1:
+ version "3.2.1"
+ resolved "https://registry.yarnpkg.com/nodent-runtime/-/nodent-runtime-3.2.1.tgz#9e2755d85e39f764288f0d4752ebcfe3e541e00e"
+ integrity sha512-7Ws63oC+215smeKJQCxzrK21VFVlCFBkwl0MOObt0HOpVQXs3u483sAmtkF33nNqZ5rSOQjB76fgyPBmAUrtCA==
+
+nodent-transform@^3.2.9:
+ version "3.2.9"
+ resolved "https://registry.yarnpkg.com/nodent-transform/-/nodent-transform-3.2.9.tgz#ec11a6116b5476e60bc212371cf6b8e4c74f40b6"
+ integrity sha512-4a5FH4WLi+daH/CGD5o/JWRR8W5tlCkd3nrDSkxbOzscJTyTUITltvOJeQjg3HJ1YgEuNyiPhQbvbtRjkQBByQ==
+
+nopt@^4.0.1, nopt@~4.0.1:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.1.tgz#d0d4685afd5415193c8c7505602d0d17cd64474d"
+ integrity sha1-0NRoWv1UFRk8jHUFYC0NF81kR00=
+ dependencies:
+ abbrev "1"
+ osenv "^0.1.4"
+
+normalize-package-data@^2.3.2:
+ version "2.4.0"
+ resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.4.0.tgz#12f95a307d58352075a04907b84ac8be98ac012f"
+ integrity sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==
+ dependencies:
+ hosted-git-info "^2.1.4"
+ is-builtin-module "^1.0.0"
+ semver "2 || 3 || 4 || 5"
+ validate-npm-package-license "^3.0.1"
+
+normalize-path@^2.0.1, normalize-path@^2.1.1:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9"
+ integrity sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=
+ dependencies:
+ remove-trailing-separator "^1.0.1"
+
+normalize-range@^0.1.2:
+ version "0.1.2"
+ resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942"
+ integrity sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=
+
+normalize-url@^1.4.0:
+ version "1.9.1"
+ resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-1.9.1.tgz#2cc0d66b31ea23036458436e3620d85954c66c3c"
+ integrity sha1-LMDWazHqIwNkWENuNiDYWVTGbDw=
+ dependencies:
+ object-assign "^4.0.1"
+ prepend-http "^1.0.0"
+ query-string "^4.1.0"
+ sort-keys "^1.0.0"
+
+normalize-url@^3.0.0:
+ version "3.3.0"
+ resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-3.3.0.tgz#b2e1c4dc4f7c6d57743df733a4f5978d18650559"
+ integrity sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg==
+
+npm-bundled@^1.0.1:
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.0.5.tgz#3c1732b7ba936b3a10325aef616467c0ccbcc979"
+ integrity sha512-m/e6jgWu8/v5niCUKQi9qQl8QdeEduFA96xHDDzFGqly0OOjI7c+60KM/2sppfnUU9JJagf+zs+yGhqSOFj71g==
+
+npm-packlist@^1.1.6:
+ version "1.1.12"
+ resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.1.12.tgz#22bde2ebc12e72ca482abd67afc51eb49377243a"
+ integrity sha512-WJKFOVMeAlsU/pjXuqVdzU0WfgtIBCupkEVwn+1Y0ERAbUfWw8R4GjgVbaKnUjRoD2FoQbHOCbOyT5Mbs9Lw4g==
+ dependencies:
+ ignore-walk "^3.0.1"
+ npm-bundled "^1.0.1"
+
+npm-run-path@^2.0.0:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f"
+ integrity sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=
+ dependencies:
+ path-key "^2.0.0"
+
+npmlog@^4.0.2:
+ version "4.1.2"
+ resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b"
+ integrity sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==
+ dependencies:
+ are-we-there-yet "~1.1.2"
+ console-control-strings "~1.1.0"
+ gauge "~2.7.3"
+ set-blocking "~2.0.0"
+
+nth-check@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-1.0.1.tgz#9929acdf628fc2c41098deab82ac580cf149aae4"
+ integrity sha1-mSms32KPwsQQmN6rgqxYDPFJquQ=
+ dependencies:
+ boolbase "~1.0.0"
+
+num2fraction@^1.2.2:
+ version "1.2.2"
+ resolved "https://registry.yarnpkg.com/num2fraction/-/num2fraction-1.2.2.tgz#6f682b6a027a4e9ddfa4564cd2589d1d4e669ede"
+ integrity sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4=
+
+number-is-nan@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d"
+ integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=
+
+object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1:
+ version "4.1.1"
+ resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863"
+ integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=
+
+object-copy@^0.1.0:
+ version "0.1.0"
+ resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c"
+ integrity sha1-fn2Fi3gb18mRpBupde04EnVOmYw=
+ dependencies:
+ copy-descriptor "^0.1.0"
+ define-property "^0.2.5"
+ kind-of "^3.0.3"
+
+object-inspect@~1.4.0:
+ version "1.4.1"
+ resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.4.1.tgz#37ffb10e71adaf3748d05f713b4c9452f402cbc4"
+ integrity sha512-wqdhLpfCUbEsoEwl3FXwGyv8ief1k/1aUdIPCqVnupM6e8l63BEJdiF/0swtn04/8p05tG/T0FrpTlfwvljOdw==
+
+object-keys@^1.0.12, object-keys@^1.0.6:
+ version "1.0.12"
+ resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.0.12.tgz#09c53855377575310cca62f55bb334abff7b3ed2"
+ integrity sha512-FTMyFUm2wBcGHnH2eXmz7tC6IwlqQZ6mVZ+6dm6vZ4IQIHjs6FdNsQBuKGPuUUUY6NfJw2PshC08Tn6LzLDOag==
+
+object-visit@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb"
+ integrity sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=
+ dependencies:
+ isobject "^3.0.0"
+
+object.getownpropertydescriptors@^2.0.3:
+ version "2.0.3"
+ resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.0.3.tgz#8758c846f5b407adab0f236e0986f14b051caa16"
+ integrity sha1-h1jIRvW0B62rDyNuCYbxSwUcqhY=
+ dependencies:
+ define-properties "^1.1.2"
+ es-abstract "^1.5.1"
+
+object.omit@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/object.omit/-/object.omit-2.0.1.tgz#1a9c744829f39dbb858c76ca3579ae2a54ebd1fa"
+ integrity sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=
+ dependencies:
+ for-own "^0.1.4"
+ is-extendable "^0.1.1"
+
+object.pick@^1.3.0:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747"
+ integrity sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=
+ dependencies:
+ isobject "^3.0.1"
+
+object.values@^1.0.4:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.0.4.tgz#e524da09b4f66ff05df457546ec72ac99f13069a"
+ integrity sha1-5STaCbT2b/Bd9FdUbscqyZ8TBpo=
+ dependencies:
+ define-properties "^1.1.2"
+ es-abstract "^1.6.1"
+ function-bind "^1.1.0"
+ has "^1.0.1"
+
+on-finished@~2.3.0:
+ version "2.3.0"
+ resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947"
+ integrity sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=
+ dependencies:
+ ee-first "1.1.1"
+
+once@^1.3.0:
+ version "1.4.0"
+ resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"
+ integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E=
+ dependencies:
+ wrappy "1"
+
+onetime@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/onetime/-/onetime-2.0.1.tgz#067428230fd67443b2794b22bba528b6867962d4"
+ integrity sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=
+ dependencies:
+ mimic-fn "^1.0.0"
+
+opn@^5.1.0:
+ version "5.4.0"
+ resolved "https://registry.yarnpkg.com/opn/-/opn-5.4.0.tgz#cb545e7aab78562beb11aa3bfabc7042e1761035"
+ integrity sha512-YF9MNdVy/0qvJvDtunAOzFw9iasOQHpVthTCvGzxt61Il64AYSGdK+rYwld7NAfk9qJ7dt+hymBNSc9LNYS+Sw==
+ dependencies:
+ is-wsl "^1.1.0"
+
+optionator@^0.8.1:
+ version "0.8.2"
+ resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.2.tgz#364c5e409d3f4d6301d6c0b4c05bba50180aeb64"
+ integrity sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=
+ dependencies:
+ deep-is "~0.1.3"
+ fast-levenshtein "~2.0.4"
+ levn "~0.3.0"
+ prelude-ls "~1.1.2"
+ type-check "~0.3.2"
+ wordwrap "~1.0.0"
+
+ora@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/ora/-/ora-2.1.0.tgz#6caf2830eb924941861ec53a173799e008b51e5b"
+ integrity sha512-hNNlAd3gfv/iPmsNxYoAPLvxg7HuPozww7fFonMZvL84tP6Ox5igfk5j/+a9rtJJwqMgKK+JgWsAQik5o0HTLA==
+ dependencies:
+ chalk "^2.3.1"
+ cli-cursor "^2.1.0"
+ cli-spinners "^1.1.0"
+ log-symbols "^2.2.0"
+ strip-ansi "^4.0.0"
+ wcwidth "^1.0.1"
+
+os-browserify@^0.3.0:
+ version "0.3.0"
+ resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.3.0.tgz#854373c7f5c2315914fc9bfc6bd8238fdda1ec27"
+ integrity sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=
+
+os-homedir@^1.0.0, os-homedir@^1.0.1:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3"
+ integrity sha1-/7xJiDNuDoM94MFox+8VISGqf7M=
+
+os-tmpdir@^1.0.0:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274"
+ integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=
+
+osenv@^0.1.4:
+ version "0.1.5"
+ resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.5.tgz#85cdfafaeb28e8677f416e287592b5f3f49ea410"
+ integrity sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==
+ dependencies:
+ os-homedir "^1.0.0"
+ os-tmpdir "^1.0.0"
+
+p-finally@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae"
+ integrity sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=
+
+p-limit@^1.1.0:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8"
+ integrity sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==
+ dependencies:
+ p-try "^1.0.0"
+
+p-locate@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43"
+ integrity sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=
+ dependencies:
+ p-limit "^1.1.0"
+
+p-queue@^2.4.2:
+ version "2.4.2"
+ resolved "https://registry.yarnpkg.com/p-queue/-/p-queue-2.4.2.tgz#03609826682b743be9a22dba25051bd46724fc34"
+ integrity sha512-n8/y+yDJwBjoLQe1GSJbbaYQLTI7QHNZI2+rpmCDbe++WLf9HC3gf6iqj5yfPAV71W4UF3ql5W1+UBPXoXTxng==
+
+p-try@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3"
+ integrity sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=
+
+pako@^0.2.5:
+ version "0.2.9"
+ resolved "https://registry.yarnpkg.com/pako/-/pako-0.2.9.tgz#f3f7522f4ef782348da8161bad9ecfd51bf83a75"
+ integrity sha1-8/dSL073gjSNqBYbrZ7P1Rv4OnU=
+
+pako@~1.0.5:
+ version "1.0.6"
+ resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.6.tgz#0101211baa70c4bca4a0f63f2206e97b7dfaf258"
+ integrity sha512-lQe48YPsMJAig+yngZ87Lus+NF+3mtu7DVOBu6b/gHO1YpKwIj5AWjZ/TOS7i46HD/UixzWb1zeWDZfGZ3iYcg==
+
+parcel-bundler@^1.10.2:
+ version "1.10.2"
+ resolved "https://registry.yarnpkg.com/parcel-bundler/-/parcel-bundler-1.10.2.tgz#be8448de155552d43ba9b44c2f81389812586b78"
+ integrity sha512-n6DZ2W/rqxBy2snZZKMUSR1W8brNpV0+n3qBdFU4EIYbHH5dqe+lB8kMWs51jtDIo/hE6KDVxfAUIfdw2nHG7A==
+ dependencies:
+ "@babel/code-frame" "^7.0.0"
+ "@babel/core" "^7.0.0"
+ "@babel/generator" "^7.0.0"
+ "@babel/parser" "^7.0.0"
+ "@babel/plugin-transform-flow-strip-types" "^7.0.0"
+ "@babel/plugin-transform-modules-commonjs" "^7.0.0"
+ "@babel/plugin-transform-react-jsx" "^7.0.0"
+ "@babel/preset-env" "^7.0.0"
+ "@babel/runtime" "^7.0.0"
+ "@babel/template" "^7.0.0"
+ "@babel/traverse" "^7.0.0"
+ "@babel/types" "^7.0.0"
+ ansi-to-html "^0.6.4"
+ babylon-walk "^1.0.2"
+ browserslist "^4.1.0"
+ chalk "^2.1.0"
+ clone "^2.1.1"
+ command-exists "^1.2.6"
+ commander "^2.11.0"
+ cross-spawn "^6.0.4"
+ cssnano "^4.0.0"
+ deasync "^0.1.13"
+ dotenv "^5.0.0"
+ dotenv-expand "^4.2.0"
+ fast-glob "^2.2.2"
+ filesize "^3.6.0"
+ fswatcher-child "^1.0.5"
+ get-port "^3.2.0"
+ grapheme-breaker "^0.3.2"
+ htmlnano "^0.1.9"
+ is-glob "^4.0.0"
+ is-url "^1.2.2"
+ js-yaml "^3.10.0"
+ json5 "^1.0.1"
+ micromatch "^3.0.4"
+ mkdirp "^0.5.1"
+ node-forge "^0.7.1"
+ node-libs-browser "^2.0.0"
+ opn "^5.1.0"
+ ora "^2.1.0"
+ physical-cpu-count "^2.0.0"
+ postcss "^6.0.19"
+ postcss-value-parser "^3.3.0"
+ posthtml "^0.11.2"
+ posthtml-parser "^0.4.0"
+ posthtml-render "^1.1.3"
+ resolve "^1.4.0"
+ semver "^5.4.1"
+ serialize-to-js "^1.1.1"
+ serve-static "^1.12.4"
+ source-map "0.6.1"
+ strip-ansi "^4.0.0"
+ terser "^3.7.3"
+ toml "^2.3.3"
+ tomlify-j0.4 "^3.0.0"
+ v8-compile-cache "^2.0.0"
+ ws "^5.1.1"
+
+parse-asn1@^5.0.0:
+ version "5.1.1"
+ resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.1.tgz#f6bf293818332bd0dab54efb16087724745e6ca8"
+ integrity sha512-KPx7flKXg775zZpnp9SxJlz00gTd4BmJ2yJufSc44gMCRrRQ7NSzAcSJQfifuOLgW6bEi+ftrALtsgALeB2Adw==
+ dependencies:
+ asn1.js "^4.0.0"
+ browserify-aes "^1.0.0"
+ create-hash "^1.1.0"
+ evp_bytestokey "^1.0.0"
+ pbkdf2 "^3.0.3"
+
+parse-glob@^3.0.4:
+ version "3.0.4"
+ resolved "https://registry.yarnpkg.com/parse-glob/-/parse-glob-3.0.4.tgz#b2c376cfb11f35513badd173ef0bb6e3a388391c"
+ integrity sha1-ssN2z7EfNVE7rdFz7wu246OIORw=
+ dependencies:
+ glob-base "^0.3.0"
+ is-dotfile "^1.0.0"
+ is-extglob "^1.0.0"
+ is-glob "^2.0.0"
+
+parse-json@^2.2.0:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9"
+ integrity sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=
+ dependencies:
+ error-ex "^1.2.0"
+
+parse-json@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0"
+ integrity sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=
+ dependencies:
+ error-ex "^1.3.1"
+ json-parse-better-errors "^1.0.1"
+
+parse-ms@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/parse-ms/-/parse-ms-1.0.1.tgz#56346d4749d78f23430ca0c713850aef91aa361d"
+ integrity sha1-VjRtR0nXjyNDDKDHE4UK75GqNh0=
+
+parse-package-name@^0.1.0:
+ version "0.1.0"
+ resolved "https://registry.yarnpkg.com/parse-package-name/-/parse-package-name-0.1.0.tgz#3f44dd838feb4c2be4bf318bae4477d7706bade4"
+ integrity sha1-P0Tdg4/rTCvkvzGLrkR313BrreQ=
+
+parseurl@~1.3.2:
+ version "1.3.2"
+ resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.2.tgz#fc289d4ed8993119460c156253262cdc8de65bf3"
+ integrity sha1-/CidTtiZMRlGDBViUyYs3I3mW/M=
+
+pascalcase@^0.1.1:
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14"
+ integrity sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=
+
+path-browserify@0.0.0:
+ version "0.0.0"
+ resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.0.tgz#a0b870729aae214005b7d5032ec2cbbb0fb4451a"
+ integrity sha1-oLhwcpquIUAFt9UDLsLLuw+0RRo=
+
+path-dirname@^1.0.0:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0"
+ integrity sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=
+
+path-exists@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515"
+ integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=
+
+path-is-absolute@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"
+ integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18=
+
+path-key@^2.0.0, path-key@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40"
+ integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=
+
+path-parse@^1.0.5:
+ version "1.0.6"
+ resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c"
+ integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==
+
+path-type@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/path-type/-/path-type-2.0.0.tgz#f012ccb8415b7096fc2daa1054c3d72389594c73"
+ integrity sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=
+ dependencies:
+ pify "^2.0.0"
+
+path-type@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/path-type/-/path-type-3.0.0.tgz#cef31dc8e0a1a3bb0d105c0cd97cf3bf47f4e36f"
+ integrity sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==
+ dependencies:
+ pify "^3.0.0"
+
+pbkdf2@^3.0.3:
+ version "3.0.17"
+ resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.0.17.tgz#976c206530617b14ebb32114239f7b09336e93a6"
+ integrity sha512-U/il5MsrZp7mGg3mSQfn742na2T+1/vHDCG5/iTI3X9MKUuYUZVLQhyRsg06mCgDBTd57TxzgZt7P+fYfjRLtA==
+ dependencies:
+ create-hash "^1.1.2"
+ create-hmac "^1.1.4"
+ ripemd160 "^2.0.1"
+ safe-buffer "^5.0.1"
+ sha.js "^2.4.8"
+
+physical-cpu-count@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/physical-cpu-count/-/physical-cpu-count-2.0.0.tgz#18de2f97e4bf7a9551ad7511942b5496f7aba660"
+ integrity sha1-GN4vl+S/epVRrXURlCtUlverpmA=
+
+pify@^2.0.0:
+ version "2.3.0"
+ resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c"
+ integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw=
+
+pify@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176"
+ integrity sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=
+
+posix-character-classes@^0.1.0:
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab"
+ integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=
+
+postcss-calc@^5.2.0:
+ version "5.3.1"
+ resolved "https://registry.yarnpkg.com/postcss-calc/-/postcss-calc-5.3.1.tgz#77bae7ca928ad85716e2fda42f261bf7c1d65b5e"
+ integrity sha1-d7rnypKK2FcW4v2kLyYb98HWW14=
+ dependencies:
+ postcss "^5.0.2"
+ postcss-message-helpers "^2.0.0"
+ reduce-css-calc "^1.2.6"
+
+postcss-calc@^6.0.2:
+ version "6.0.2"
+ resolved "https://registry.yarnpkg.com/postcss-calc/-/postcss-calc-6.0.2.tgz#4d9a43e27dbbf27d095fecb021ac6896e2318337"
+ integrity sha512-fiznXjEN5T42Qm7qqMCVJXS3roaj9r4xsSi+meaBVe7CJBl8t/QLOXu02Z2E6oWAMWIvCuF6JrvzFekmVEbOKA==
+ dependencies:
+ css-unit-converter "^1.1.1"
+ postcss "^7.0.2"
+ postcss-selector-parser "^2.2.2"
+ reduce-css-calc "^2.0.0"
+
+postcss-colormin@^2.1.8:
+ version "2.2.2"
+ resolved "https://registry.yarnpkg.com/postcss-colormin/-/postcss-colormin-2.2.2.tgz#6631417d5f0e909a3d7ec26b24c8a8d1e4f96e4b"
+ integrity sha1-ZjFBfV8OkJo9fsJrJMio0eT5bks=
+ dependencies:
+ colormin "^1.0.5"
+ postcss "^5.0.13"
+ postcss-value-parser "^3.2.3"
+
+postcss-colormin@^4.0.2:
+ version "4.0.2"
+ resolved "https://registry.yarnpkg.com/postcss-colormin/-/postcss-colormin-4.0.2.tgz#93cd1fa11280008696887db1a528048b18e7ed99"
+ integrity sha512-1QJc2coIehnVFsz0otges8kQLsryi4lo19WD+U5xCWvXd0uw/Z+KKYnbiNDCnO9GP+PvErPHCG0jNvWTngk9Rw==
+ dependencies:
+ browserslist "^4.0.0"
+ color "^3.0.0"
+ has "^1.0.0"
+ postcss "^7.0.0"
+ postcss-value-parser "^3.0.0"
+
+postcss-convert-values@^2.3.4:
+ version "2.6.1"
+ resolved "https://registry.yarnpkg.com/postcss-convert-values/-/postcss-convert-values-2.6.1.tgz#bbd8593c5c1fd2e3d1c322bb925dcae8dae4d62d"
+ integrity sha1-u9hZPFwf0uPRwyK7kl3K6Nrk1i0=
+ dependencies:
+ postcss "^5.0.11"
+ postcss-value-parser "^3.1.2"
+
+postcss-convert-values@^4.0.1:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/postcss-convert-values/-/postcss-convert-values-4.0.1.tgz#ca3813ed4da0f812f9d43703584e449ebe189a7f"
+ integrity sha512-Kisdo1y77KUC0Jmn0OXU/COOJbzM8cImvw1ZFsBgBgMgb1iL23Zs/LXRe3r+EZqM3vGYKdQ2YJVQ5VkJI+zEJQ==
+ dependencies:
+ postcss "^7.0.0"
+ postcss-value-parser "^3.0.0"
+
+postcss-discard-comments@^2.0.4:
+ version "2.0.4"
+ resolved "https://registry.yarnpkg.com/postcss-discard-comments/-/postcss-discard-comments-2.0.4.tgz#befe89fafd5b3dace5ccce51b76b81514be00e3d"
+ integrity sha1-vv6J+v1bPazlzM5Rt2uBUUvgDj0=
+ dependencies:
+ postcss "^5.0.14"
+
+postcss-discard-comments@^4.0.1:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/postcss-discard-comments/-/postcss-discard-comments-4.0.1.tgz#30697735b0c476852a7a11050eb84387a67ef55d"
+ integrity sha512-Ay+rZu1Sz6g8IdzRjUgG2NafSNpp2MSMOQUb+9kkzzzP+kh07fP0yNbhtFejURnyVXSX3FYy2nVNW1QTnNjgBQ==
+ dependencies:
+ postcss "^7.0.0"
+
+postcss-discard-duplicates@^2.0.1:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/postcss-discard-duplicates/-/postcss-discard-duplicates-2.1.0.tgz#b9abf27b88ac188158a5eb12abcae20263b91932"
+ integrity sha1-uavye4isGIFYpesSq8riAmO5GTI=
+ dependencies:
+ postcss "^5.0.4"
+
+postcss-discard-duplicates@^4.0.2:
+ version "4.0.2"
+ resolved "https://registry.yarnpkg.com/postcss-discard-duplicates/-/postcss-discard-duplicates-4.0.2.tgz#3fe133cd3c82282e550fc9b239176a9207b784eb"
+ integrity sha512-ZNQfR1gPNAiXZhgENFfEglF93pciw0WxMkJeVmw8eF+JZBbMD7jp6C67GqJAXVZP2BWbOztKfbsdmMp/k8c6oQ==
+ dependencies:
+ postcss "^7.0.0"
+
+postcss-discard-empty@^2.0.1:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/postcss-discard-empty/-/postcss-discard-empty-2.1.0.tgz#d2b4bd9d5ced5ebd8dcade7640c7d7cd7f4f92b5"
+ integrity sha1-0rS9nVztXr2Nyt52QMfXzX9PkrU=
+ dependencies:
+ postcss "^5.0.14"
+
+postcss-discard-empty@^4.0.1:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/postcss-discard-empty/-/postcss-discard-empty-4.0.1.tgz#c8c951e9f73ed9428019458444a02ad90bb9f765"
+ integrity sha512-B9miTzbznhDjTfjvipfHoqbWKwd0Mj+/fL5s1QOz06wufguil+Xheo4XpOnc4NqKYBCNqqEzgPv2aPBIJLox0w==
+ dependencies:
+ postcss "^7.0.0"
+
+postcss-discard-overridden@^0.1.1:
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/postcss-discard-overridden/-/postcss-discard-overridden-0.1.1.tgz#8b1eaf554f686fb288cd874c55667b0aa3668d58"
+ integrity sha1-ix6vVU9ob7KIzYdMVWZ7CqNmjVg=
+ dependencies:
+ postcss "^5.0.16"
+
+postcss-discard-overridden@^4.0.1:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/postcss-discard-overridden/-/postcss-discard-overridden-4.0.1.tgz#652aef8a96726f029f5e3e00146ee7a4e755ff57"
+ integrity sha512-IYY2bEDD7g1XM1IDEsUT4//iEYCxAmP5oDSFMVU/JVvT7gh+l4fmjciLqGgwjdWpQIdb0Che2VX00QObS5+cTg==
+ dependencies:
+ postcss "^7.0.0"
+
+postcss-discard-unused@^2.2.1:
+ version "2.2.3"
+ resolved "https://registry.yarnpkg.com/postcss-discard-unused/-/postcss-discard-unused-2.2.3.tgz#bce30b2cc591ffc634322b5fb3464b6d934f4433"
+ integrity sha1-vOMLLMWR/8Y0Mitfs0ZLbZNPRDM=
+ dependencies:
+ postcss "^5.0.14"
+ uniqs "^2.0.0"
+
+postcss-filter-plugins@^2.0.0:
+ version "2.0.3"
+ resolved "https://registry.yarnpkg.com/postcss-filter-plugins/-/postcss-filter-plugins-2.0.3.tgz#82245fdf82337041645e477114d8e593aa18b8ec"
+ integrity sha512-T53GVFsdinJhgwm7rg1BzbeBRomOg9y5MBVhGcsV0CxurUdVj1UlPdKtn7aqYA/c/QVkzKMjq2bSV5dKG5+AwQ==
+ dependencies:
+ postcss "^5.0.4"
+
+postcss-load-config@^1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/postcss-load-config/-/postcss-load-config-1.2.0.tgz#539e9afc9ddc8620121ebf9d8c3673e0ce50d28a"
+ integrity sha1-U56a/J3chiASHr+djDZz4M5Q0oo=
+ dependencies:
+ cosmiconfig "^2.1.0"
+ object-assign "^4.1.0"
+ postcss-load-options "^1.2.0"
+ postcss-load-plugins "^2.3.0"
+
+postcss-load-options@^1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/postcss-load-options/-/postcss-load-options-1.2.0.tgz#b098b1559ddac2df04bc0bb375f99a5cfe2b6d8c"
+ integrity sha1-sJixVZ3awt8EvAuzdfmaXP4rbYw=
+ dependencies:
+ cosmiconfig "^2.1.0"
+ object-assign "^4.1.0"
+
+postcss-load-plugins@^2.3.0:
+ version "2.3.0"
+ resolved "https://registry.yarnpkg.com/postcss-load-plugins/-/postcss-load-plugins-2.3.0.tgz#745768116599aca2f009fad426b00175049d8d92"
+ integrity sha1-dFdoEWWZrKLwCfrUJrABdQSdjZI=
+ dependencies:
+ cosmiconfig "^2.1.1"
+ object-assign "^4.1.0"
+
+postcss-merge-idents@^2.1.5:
+ version "2.1.7"
+ resolved "https://registry.yarnpkg.com/postcss-merge-idents/-/postcss-merge-idents-2.1.7.tgz#4c5530313c08e1d5b3bbf3d2bbc747e278eea270"
+ integrity sha1-TFUwMTwI4dWzu/PSu8dH4njuonA=
+ dependencies:
+ has "^1.0.1"
+ postcss "^5.0.10"
+ postcss-value-parser "^3.1.1"
+
+postcss-merge-longhand@^2.0.1:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/postcss-merge-longhand/-/postcss-merge-longhand-2.0.2.tgz#23d90cd127b0a77994915332739034a1a4f3d658"
+ integrity sha1-I9kM0Sewp3mUkVMyc5A0oaTz1lg=
+ dependencies:
+ postcss "^5.0.4"
+
+postcss-merge-longhand@^4.0.6:
+ version "4.0.6"
+ resolved "https://registry.yarnpkg.com/postcss-merge-longhand/-/postcss-merge-longhand-4.0.6.tgz#2b938fa3529c3d1657e53dc7ff0fd604dbc85ff1"
+ integrity sha512-JavnI+V4IHWsaUAfOoKeMEiJQGXTraEy1nHM0ILlE6NIQPEZrJDAnPh3lNGZ5HAk2mSSrwp66JoGhvjp6SqShA==
+ dependencies:
+ css-color-names "0.0.4"
+ postcss "^7.0.0"
+ postcss-value-parser "^3.0.0"
+ stylehacks "^4.0.0"
+
+postcss-merge-rules@^2.0.3:
+ version "2.1.2"
+ resolved "https://registry.yarnpkg.com/postcss-merge-rules/-/postcss-merge-rules-2.1.2.tgz#d1df5dfaa7b1acc3be553f0e9e10e87c61b5f721"
+ integrity sha1-0d9d+qexrMO+VT8OnhDofGG19yE=
+ dependencies:
+ browserslist "^1.5.2"
+ caniuse-api "^1.5.2"
+ postcss "^5.0.4"
+ postcss-selector-parser "^2.2.2"
+ vendors "^1.0.0"
+
+postcss-merge-rules@^4.0.2:
+ version "4.0.2"
+ resolved "https://registry.yarnpkg.com/postcss-merge-rules/-/postcss-merge-rules-4.0.2.tgz#2be44401bf19856f27f32b8b12c0df5af1b88e74"
+ integrity sha512-UiuXwCCJtQy9tAIxsnurfF0mrNHKc4NnNx6NxqmzNNjXpQwLSukUxELHTRF0Rg1pAmcoKLih8PwvZbiordchag==
+ dependencies:
+ browserslist "^4.0.0"
+ caniuse-api "^3.0.0"
+ cssnano-util-same-parent "^4.0.0"
+ postcss "^7.0.0"
+ postcss-selector-parser "^3.0.0"
+ vendors "^1.0.0"
+
+postcss-message-helpers@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/postcss-message-helpers/-/postcss-message-helpers-2.0.0.tgz#a4f2f4fab6e4fe002f0aed000478cdf52f9ba60e"
+ integrity sha1-pPL0+rbk/gAvCu0ABHjN9S+bpg4=
+
+postcss-minify-font-values@^1.0.2:
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/postcss-minify-font-values/-/postcss-minify-font-values-1.0.5.tgz#4b58edb56641eba7c8474ab3526cafd7bbdecb69"
+ integrity sha1-S1jttWZB66fIR0qzUmyv17vey2k=
+ dependencies:
+ object-assign "^4.0.1"
+ postcss "^5.0.4"
+ postcss-value-parser "^3.0.2"
+
+postcss-minify-font-values@^4.0.2:
+ version "4.0.2"
+ resolved "https://registry.yarnpkg.com/postcss-minify-font-values/-/postcss-minify-font-values-4.0.2.tgz#cd4c344cce474343fac5d82206ab2cbcb8afd5a6"
+ integrity sha512-j85oO6OnRU9zPf04+PZv1LYIYOprWm6IA6zkXkrJXyRveDEuQggG6tvoy8ir8ZwjLxLuGfNkCZEQG7zan+Hbtg==
+ dependencies:
+ postcss "^7.0.0"
+ postcss-value-parser "^3.0.0"
+
+postcss-minify-gradients@^1.0.1:
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/postcss-minify-gradients/-/postcss-minify-gradients-1.0.5.tgz#5dbda11373703f83cfb4a3ea3881d8d75ff5e6e1"
+ integrity sha1-Xb2hE3NwP4PPtKPqOIHY11/15uE=
+ dependencies:
+ postcss "^5.0.12"
+ postcss-value-parser "^3.3.0"
+
+postcss-minify-gradients@^4.0.1:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/postcss-minify-gradients/-/postcss-minify-gradients-4.0.1.tgz#6da95c6e92a809f956bb76bf0c04494953e1a7dd"
+ integrity sha512-pySEW3E6Ly5mHm18rekbWiAjVi/Wj8KKt2vwSfVFAWdW6wOIekgqxKxLU7vJfb107o3FDNPkaYFCxGAJBFyogA==
+ dependencies:
+ cssnano-util-get-arguments "^4.0.0"
+ is-color-stop "^1.0.0"
+ postcss "^7.0.0"
+ postcss-value-parser "^3.0.0"
+
+postcss-minify-params@^1.0.4:
+ version "1.2.2"
+ resolved "https://registry.yarnpkg.com/postcss-minify-params/-/postcss-minify-params-1.2.2.tgz#ad2ce071373b943b3d930a3fa59a358c28d6f1f3"
+ integrity sha1-rSzgcTc7lDs9kwo/pZo1jCjW8fM=
+ dependencies:
+ alphanum-sort "^1.0.1"
+ postcss "^5.0.2"
+ postcss-value-parser "^3.0.2"
+ uniqs "^2.0.0"
+
+postcss-minify-params@^4.0.1:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/postcss-minify-params/-/postcss-minify-params-4.0.1.tgz#5b2e2d0264dd645ef5d68f8fec0d4c38c1cf93d2"
+ integrity sha512-h4W0FEMEzBLxpxIVelRtMheskOKKp52ND6rJv+nBS33G1twu2tCyurYj/YtgU76+UDCvWeNs0hs8HFAWE2OUFg==
+ dependencies:
+ alphanum-sort "^1.0.0"
+ browserslist "^4.0.0"
+ cssnano-util-get-arguments "^4.0.0"
+ postcss "^7.0.0"
+ postcss-value-parser "^3.0.0"
+ uniqs "^2.0.0"
+
+postcss-minify-selectors@^2.0.4:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/postcss-minify-selectors/-/postcss-minify-selectors-2.1.1.tgz#b2c6a98c0072cf91b932d1a496508114311735bf"
+ integrity sha1-ssapjAByz5G5MtGkllCBFDEXNb8=
+ dependencies:
+ alphanum-sort "^1.0.2"
+ has "^1.0.1"
+ postcss "^5.0.14"
+ postcss-selector-parser "^2.0.0"
+
+postcss-minify-selectors@^4.0.1:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/postcss-minify-selectors/-/postcss-minify-selectors-4.0.1.tgz#a891c197977cc37abf60b3ea06b84248b1c1e9cd"
+ integrity sha512-8+plQkomve3G+CodLCgbhAKrb5lekAnLYuL1d7Nz+/7RANpBEVdgBkPNwljfSKvZ9xkkZTZITd04KP+zeJTJqg==
+ dependencies:
+ alphanum-sort "^1.0.0"
+ has "^1.0.0"
+ postcss "^7.0.0"
+ postcss-selector-parser "^3.0.0"
+
+postcss-modules-extract-imports@1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-1.1.0.tgz#b614c9720be6816eaee35fb3a5faa1dba6a05ddb"
+ integrity sha1-thTJcgvmgW6u41+zpfqh26agXds=
+ dependencies:
+ postcss "^6.0.1"
+
+postcss-modules-local-by-default@1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-1.2.0.tgz#f7d80c398c5a393fa7964466bd19500a7d61c069"
+ integrity sha1-99gMOYxaOT+nlkRmvRlQCn1hwGk=
+ dependencies:
+ css-selector-tokenizer "^0.7.0"
+ postcss "^6.0.1"
+
+postcss-modules-scope@1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-1.1.0.tgz#d6ea64994c79f97b62a72b426fbe6056a194bb90"
+ integrity sha1-1upkmUx5+XtipytCb75gVqGUu5A=
+ dependencies:
+ css-selector-tokenizer "^0.7.0"
+ postcss "^6.0.1"
+
+postcss-modules-values@1.3.0:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/postcss-modules-values/-/postcss-modules-values-1.3.0.tgz#ecffa9d7e192518389f42ad0e83f72aec456ea20"
+ integrity sha1-7P+p1+GSUYOJ9CrQ6D9yrsRW6iA=
+ dependencies:
+ icss-replace-symbols "^1.1.0"
+ postcss "^6.0.1"
+
+postcss-modules@^1.1.0:
+ version "1.4.1"
+ resolved "https://registry.yarnpkg.com/postcss-modules/-/postcss-modules-1.4.1.tgz#8aa35bd3461db67e27377a7ce770d77b654a84ef"
+ integrity sha512-btTrbK+Xc3NBuYF8TPBjCMRSp5h6NoQ1iVZ6WiDQENIze6KIYCSf0+UFQuV3yJ7gRHA+4AAtF8i2jRvUpbBMMg==
+ dependencies:
+ css-modules-loader-core "^1.1.0"
+ generic-names "^1.0.3"
+ lodash.camelcase "^4.3.0"
+ postcss "^7.0.1"
+ string-hash "^1.1.1"
+
+postcss-normalize-charset@^1.1.0:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/postcss-normalize-charset/-/postcss-normalize-charset-1.1.1.tgz#ef9ee71212d7fe759c78ed162f61ed62b5cb93f1"
+ integrity sha1-757nEhLX/nWceO0WL2HtYrXLk/E=
+ dependencies:
+ postcss "^5.0.5"
+
+postcss-normalize-charset@^4.0.1:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/postcss-normalize-charset/-/postcss-normalize-charset-4.0.1.tgz#8b35add3aee83a136b0471e0d59be58a50285dd4"
+ integrity sha512-gMXCrrlWh6G27U0hF3vNvR3w8I1s2wOBILvA87iNXaPvSNo5uZAMYsZG7XjCUf1eVxuPfyL4TJ7++SGZLc9A3g==
+ dependencies:
+ postcss "^7.0.0"
+
+postcss-normalize-display-values@^4.0.1:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/postcss-normalize-display-values/-/postcss-normalize-display-values-4.0.1.tgz#d9a83d47c716e8a980f22f632c8b0458cfb48a4c"
+ integrity sha512-R5mC4vaDdvsrku96yXP7zak+O3Mm9Y8IslUobk7IMP+u/g+lXvcN4jngmHY5zeJnrQvE13dfAg5ViU05ZFDwdg==
+ dependencies:
+ cssnano-util-get-match "^4.0.0"
+ postcss "^7.0.0"
+ postcss-value-parser "^3.0.0"
+
+postcss-normalize-positions@^4.0.1:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/postcss-normalize-positions/-/postcss-normalize-positions-4.0.1.tgz#ee2d4b67818c961964c6be09d179894b94fd6ba1"
+ integrity sha512-GNoOaLRBM0gvH+ZRb2vKCIujzz4aclli64MBwDuYGU2EY53LwiP7MxOZGE46UGtotrSnmarPPZ69l2S/uxdaWA==
+ dependencies:
+ cssnano-util-get-arguments "^4.0.0"
+ has "^1.0.0"
+ postcss "^7.0.0"
+ postcss-value-parser "^3.0.0"
+
+postcss-normalize-repeat-style@^4.0.1:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-4.0.1.tgz#5293f234b94d7669a9f805495d35b82a581c50e5"
+ integrity sha512-fFHPGIjBUyUiswY2rd9rsFcC0t3oRta4wxE1h3lpwfQZwFeFjXFSiDtdJ7APCmHQOnUZnqYBADNRPKPwFAONgA==
+ dependencies:
+ cssnano-util-get-arguments "^4.0.0"
+ cssnano-util-get-match "^4.0.0"
+ postcss "^7.0.0"
+ postcss-value-parser "^3.0.0"
+
+postcss-normalize-string@^4.0.1:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/postcss-normalize-string/-/postcss-normalize-string-4.0.1.tgz#23c5030c2cc24175f66c914fa5199e2e3c10fef3"
+ integrity sha512-IJoexFTkAvAq5UZVxWXAGE0yLoNN/012v7TQh5nDo6imZJl2Fwgbhy3J2qnIoaDBrtUP0H7JrXlX1jjn2YcvCQ==
+ dependencies:
+ has "^1.0.0"
+ postcss "^7.0.0"
+ postcss-value-parser "^3.0.0"
+
+postcss-normalize-timing-functions@^4.0.1:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-4.0.1.tgz#8be83e0b9cb3ff2d1abddee032a49108f05f95d7"
+ integrity sha512-1nOtk7ze36+63ONWD8RCaRDYsnzorrj+Q6fxkQV+mlY5+471Qx9kspqv0O/qQNMeApg8KNrRf496zHwJ3tBZ7w==
+ dependencies:
+ cssnano-util-get-match "^4.0.0"
+ postcss "^7.0.0"
+ postcss-value-parser "^3.0.0"
+
+postcss-normalize-unicode@^4.0.1:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/postcss-normalize-unicode/-/postcss-normalize-unicode-4.0.1.tgz#841bd48fdcf3019ad4baa7493a3d363b52ae1cfb"
+ integrity sha512-od18Uq2wCYn+vZ/qCOeutvHjB5jm57ToxRaMeNuf0nWVHaP9Hua56QyMF6fs/4FSUnVIw0CBPsU0K4LnBPwYwg==
+ dependencies:
+ browserslist "^4.0.0"
+ postcss "^7.0.0"
+ postcss-value-parser "^3.0.0"
+
+postcss-normalize-url@^3.0.7:
+ version "3.0.8"
+ resolved "https://registry.yarnpkg.com/postcss-normalize-url/-/postcss-normalize-url-3.0.8.tgz#108f74b3f2fcdaf891a2ffa3ea4592279fc78222"
+ integrity sha1-EI90s/L82viRov+j6kWSJ5/HgiI=
+ dependencies:
+ is-absolute-url "^2.0.0"
+ normalize-url "^1.4.0"
+ postcss "^5.0.14"
+ postcss-value-parser "^3.2.3"
+
+postcss-normalize-url@^4.0.1:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/postcss-normalize-url/-/postcss-normalize-url-4.0.1.tgz#10e437f86bc7c7e58f7b9652ed878daaa95faae1"
+ integrity sha512-p5oVaF4+IHwu7VpMan/SSpmpYxcJMtkGppYf0VbdH5B6hN8YNmVyJLuY9FmLQTzY3fag5ESUUHDqM+heid0UVA==
+ dependencies:
+ is-absolute-url "^2.0.0"
+ normalize-url "^3.0.0"
+ postcss "^7.0.0"
+ postcss-value-parser "^3.0.0"
+
+postcss-normalize-whitespace@^4.0.1:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/postcss-normalize-whitespace/-/postcss-normalize-whitespace-4.0.1.tgz#d14cb639b61238418ac8bc8d3b7bdd65fc86575e"
+ integrity sha512-U8MBODMB2L+nStzOk6VvWWjZgi5kQNShCyjRhMT3s+W9Jw93yIjOnrEkKYD3Ul7ChWbEcjDWmXq0qOL9MIAnAw==
+ dependencies:
+ postcss "^7.0.0"
+ postcss-value-parser "^3.0.0"
+
+postcss-ordered-values@^2.1.0:
+ version "2.2.3"
+ resolved "https://registry.yarnpkg.com/postcss-ordered-values/-/postcss-ordered-values-2.2.3.tgz#eec6c2a67b6c412a8db2042e77fe8da43f95c11d"
+ integrity sha1-7sbCpntsQSqNsgQud/6NpD+VwR0=
+ dependencies:
+ postcss "^5.0.4"
+ postcss-value-parser "^3.0.1"
+
+postcss-ordered-values@^4.1.1:
+ version "4.1.1"
+ resolved "https://registry.yarnpkg.com/postcss-ordered-values/-/postcss-ordered-values-4.1.1.tgz#2e3b432ef3e489b18333aeca1f1295eb89be9fc2"
+ integrity sha512-PeJiLgJWPzkVF8JuKSBcylaU+hDJ/TX3zqAMIjlghgn1JBi6QwQaDZoDIlqWRcCAI8SxKrt3FCPSRmOgKRB97Q==
+ dependencies:
+ cssnano-util-get-arguments "^4.0.0"
+ postcss "^7.0.0"
+ postcss-value-parser "^3.0.0"
+
+postcss-reduce-idents@^2.2.2:
+ version "2.4.0"
+ resolved "https://registry.yarnpkg.com/postcss-reduce-idents/-/postcss-reduce-idents-2.4.0.tgz#c2c6d20cc958284f6abfbe63f7609bf409059ad3"
+ integrity sha1-wsbSDMlYKE9qv75j92Cb9AkFmtM=
+ dependencies:
+ postcss "^5.0.4"
+ postcss-value-parser "^3.0.2"
+
+postcss-reduce-initial@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/postcss-reduce-initial/-/postcss-reduce-initial-1.0.1.tgz#68f80695f045d08263a879ad240df8dd64f644ea"
+ integrity sha1-aPgGlfBF0IJjqHmtJA343WT2ROo=
+ dependencies:
+ postcss "^5.0.4"
+
+postcss-reduce-initial@^4.0.2:
+ version "4.0.2"
+ resolved "https://registry.yarnpkg.com/postcss-reduce-initial/-/postcss-reduce-initial-4.0.2.tgz#bac8e325d67510ee01fa460676dc8ea9e3b40f15"
+ integrity sha512-epUiC39NonKUKG+P3eAOKKZtm5OtAtQJL7Ye0CBN1f+UQTHzqotudp+hki7zxXm7tT0ZAKDMBj1uihpPjP25ug==
+ dependencies:
+ browserslist "^4.0.0"
+ caniuse-api "^3.0.0"
+ has "^1.0.0"
+ postcss "^7.0.0"
+
+postcss-reduce-transforms@^1.0.3:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/postcss-reduce-transforms/-/postcss-reduce-transforms-1.0.4.tgz#ff76f4d8212437b31c298a42d2e1444025771ae1"
+ integrity sha1-/3b02CEkN7McKYpC0uFEQCV3GuE=
+ dependencies:
+ has "^1.0.1"
+ postcss "^5.0.8"
+ postcss-value-parser "^3.0.1"
+
+postcss-reduce-transforms@^4.0.1:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/postcss-reduce-transforms/-/postcss-reduce-transforms-4.0.1.tgz#8600d5553bdd3ad640f43bff81eb52f8760d4561"
+ integrity sha512-sZVr3QlGs0pjh6JAIe6DzWvBaqYw05V1t3d9Tp+VnFRT5j+rsqoWsysh/iSD7YNsULjq9IAylCznIwVd5oU/zA==
+ dependencies:
+ cssnano-util-get-match "^4.0.0"
+ has "^1.0.0"
+ postcss "^7.0.0"
+ postcss-value-parser "^3.0.0"
+
+postcss-selector-parser@^2.0.0, postcss-selector-parser@^2.2.2:
+ version "2.2.3"
+ resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-2.2.3.tgz#f9437788606c3c9acee16ffe8d8b16297f27bb90"
+ integrity sha1-+UN3iGBsPJrO4W/+jYsWKX8nu5A=
+ dependencies:
+ flatten "^1.0.2"
+ indexes-of "^1.0.1"
+ uniq "^1.0.1"
+
+postcss-selector-parser@^3.0.0, postcss-selector-parser@^3.1.1:
+ version "3.1.1"
+ resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-3.1.1.tgz#4f875f4afb0c96573d5cf4d74011aee250a7e865"
+ integrity sha1-T4dfSvsMllc9XPTXQBGu4lCn6GU=
+ dependencies:
+ dot-prop "^4.1.1"
+ indexes-of "^1.0.1"
+ uniq "^1.0.1"
+
+postcss-svgo@^2.1.1:
+ version "2.1.6"
+ resolved "https://registry.yarnpkg.com/postcss-svgo/-/postcss-svgo-2.1.6.tgz#b6df18aa613b666e133f08adb5219c2684ac108d"
+ integrity sha1-tt8YqmE7Zm4TPwittSGcJoSsEI0=
+ dependencies:
+ is-svg "^2.0.0"
+ postcss "^5.0.14"
+ postcss-value-parser "^3.2.3"
+ svgo "^0.7.0"
+
+postcss-svgo@^4.0.1:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/postcss-svgo/-/postcss-svgo-4.0.1.tgz#5628cdb38f015de6b588ce6d0bf0724b492b581d"
+ integrity sha512-YD5uIk5NDRySy0hcI+ZJHwqemv2WiqqzDgtvgMzO8EGSkK5aONyX8HMVFRFJSdO8wUWTuisUFn/d7yRRbBr5Qw==
+ dependencies:
+ is-svg "^3.0.0"
+ postcss "^7.0.0"
+ postcss-value-parser "^3.0.0"
+ svgo "^1.0.0"
+
+postcss-unique-selectors@^2.0.2:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/postcss-unique-selectors/-/postcss-unique-selectors-2.0.2.tgz#981d57d29ddcb33e7b1dfe1fd43b8649f933ca1d"
+ integrity sha1-mB1X0p3csz57Hf4f1DuGSfkzyh0=
+ dependencies:
+ alphanum-sort "^1.0.1"
+ postcss "^5.0.4"
+ uniqs "^2.0.0"
+
+postcss-unique-selectors@^4.0.1:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/postcss-unique-selectors/-/postcss-unique-selectors-4.0.1.tgz#9446911f3289bfd64c6d680f073c03b1f9ee4bac"
+ integrity sha512-+JanVaryLo9QwZjKrmJgkI4Fn8SBgRO6WXQBJi7KiAVPlmxikB5Jzc4EvXMT2H0/m0RjrVVm9rGNhZddm/8Spg==
+ dependencies:
+ alphanum-sort "^1.0.0"
+ postcss "^7.0.0"
+ uniqs "^2.0.0"
+
+postcss-value-parser@^3.0.0, postcss-value-parser@^3.0.1, postcss-value-parser@^3.0.2, postcss-value-parser@^3.1.1, postcss-value-parser@^3.1.2, postcss-value-parser@^3.2.3, postcss-value-parser@^3.3.0:
+ version "3.3.0"
+ resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-3.3.0.tgz#87f38f9f18f774a4ab4c8a232f5c5ce8872a9d15"
+ integrity sha1-h/OPnxj3dKSrTIojL1xc6IcqnRU=
+
+postcss-zindex@^2.0.1:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/postcss-zindex/-/postcss-zindex-2.2.0.tgz#d2109ddc055b91af67fc4cb3b025946639d2af22"
+ integrity sha1-0hCd3AVbka9n/EyzsCWUZjnSryI=
+ dependencies:
+ has "^1.0.1"
+ postcss "^5.0.4"
+ uniqs "^2.0.0"
+
+postcss@6.0.1:
+ version "6.0.1"
+ resolved "https://registry.yarnpkg.com/postcss/-/postcss-6.0.1.tgz#000dbd1f8eef217aa368b9a212c5fc40b2a8f3f2"
+ integrity sha1-AA29H47vIXqjaLmiEsX8QLKo8/I=
+ dependencies:
+ chalk "^1.1.3"
+ source-map "^0.5.6"
+ supports-color "^3.2.3"
+
+postcss@^5.0.10, postcss@^5.0.11, postcss@^5.0.12, postcss@^5.0.13, postcss@^5.0.14, postcss@^5.0.16, postcss@^5.0.2, postcss@^5.0.4, postcss@^5.0.5, postcss@^5.0.8, postcss@^5.2.16:
+ version "5.2.18"
+ resolved "https://registry.yarnpkg.com/postcss/-/postcss-5.2.18.tgz#badfa1497d46244f6390f58b319830d9107853c5"
+ integrity sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==
+ dependencies:
+ chalk "^1.1.3"
+ js-base64 "^2.1.9"
+ source-map "^0.5.6"
+ supports-color "^3.2.3"
+
+postcss@^6.0.1, postcss@^6.0.19, postcss@^6.0.20, postcss@^6.0.21:
+ version "6.0.23"
+ resolved "https://registry.yarnpkg.com/postcss/-/postcss-6.0.23.tgz#61c82cc328ac60e677645f979054eb98bc0e3324"
+ integrity sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==
+ dependencies:
+ chalk "^2.4.1"
+ source-map "^0.6.1"
+ supports-color "^5.4.0"
+
+postcss@^7.0.0, postcss@^7.0.1, postcss@^7.0.2:
+ version "7.0.5"
+ resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.5.tgz#70e6443e36a6d520b0fd4e7593fcca3635ee9f55"
+ integrity sha512-HBNpviAUFCKvEh7NZhw1e8MBPivRszIiUnhrJ+sBFVSYSqubrzwX3KG51mYgcRHX8j/cAgZJedONZcm5jTBdgQ==
+ dependencies:
+ chalk "^2.4.1"
+ source-map "^0.6.1"
+ supports-color "^5.5.0"
+
+posthtml-parser@^0.3.3:
+ version "0.3.3"
+ resolved "https://registry.yarnpkg.com/posthtml-parser/-/posthtml-parser-0.3.3.tgz#3fe986fca9f00c0f109d731ba590b192f26e776d"
+ integrity sha512-H/Z/yXGwl49A7hYQLV1iQ3h87NE0aZ/PMZhFwhw3lKeCAN+Ti4idrHvVvh4/GX10I7u77aQw+QB4vV5/Lzvv5A==
+ dependencies:
+ htmlparser2 "^3.9.2"
+ isobject "^2.1.0"
+ object-assign "^4.1.1"
+
+posthtml-parser@^0.4.0:
+ version "0.4.1"
+ resolved "https://registry.yarnpkg.com/posthtml-parser/-/posthtml-parser-0.4.1.tgz#95b78fef766fbbe0a6f861b6e95582bc3d1ff933"
+ integrity sha512-h7vXIQ21Ikz2w5wPClPakNP6mJeJCK6BT0GpqnQrNNABdR7/TchNlFyryL1Bz6Ww53YWCKkr6tdZuHlxY1AVdQ==
+ dependencies:
+ htmlparser2 "^3.9.2"
+ object-assign "^4.1.1"
+
+posthtml-render@^1.1.0, posthtml-render@^1.1.3, posthtml-render@^1.1.4:
+ version "1.1.4"
+ resolved "https://registry.yarnpkg.com/posthtml-render/-/posthtml-render-1.1.4.tgz#95dac09892f4f183fad5ac823f08f42c0256551e"
+ integrity sha512-jL6eFIzoN3xUEvbo33OAkSDE2VIKU4JQ1wENOows1DpfnrdapR/K3Q1/fB43Mq7wQlcSgRm23nFrvoioufM7eA==
+
+posthtml@^0.11.2, posthtml@^0.11.3:
+ version "0.11.3"
+ resolved "https://registry.yarnpkg.com/posthtml/-/posthtml-0.11.3.tgz#17ea2921b0555b7455f33c977bd16d8b8cb74f27"
+ integrity sha512-quMHnDckt2DQ9lRi6bYLnuyBDnVzK+McHa8+ar4kTdYbWEo/92hREOu3h70ZirudOOp/my2b3r0m5YtxY52yrA==
+ dependencies:
+ object-assign "^4.1.1"
+ posthtml-parser "^0.3.3"
+ posthtml-render "^1.1.0"
+
+prelude-ls@~1.1.2:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54"
+ integrity sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=
+
+prepend-http@^1.0.0:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc"
+ integrity sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=
+
+preserve@^0.2.0:
+ version "0.2.0"
+ resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b"
+ integrity sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=
+
+prettier@^1.13.0:
+ version "1.14.3"
+ resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.14.3.tgz#90238dd4c0684b7edce5f83b0fb7328e48bd0895"
+ integrity sha512-qZDVnCrnpsRJJq5nSsiHCE3BYMED2OtsI+cmzIzF1QIfqm5ALf8tEJcO27zV1gKNKRPdhjO0dNWnrzssDQ1tFg==
+
+pretty-ms@^3.1.0:
+ version "3.2.0"
+ resolved "https://registry.yarnpkg.com/pretty-ms/-/pretty-ms-3.2.0.tgz#87a8feaf27fc18414d75441467d411d6e6098a25"
+ integrity sha512-ZypexbfVUGTFxb0v+m1bUyy92DHe5SyYlnyY0msyms5zd3RwyvNgyxZZsXXgoyzlxjx5MiqtXUdhUfvQbe0A2Q==
+ dependencies:
+ parse-ms "^1.0.0"
+
+private@^0.1.6:
+ version "0.1.8"
+ resolved "https://registry.yarnpkg.com/private/-/private-0.1.8.tgz#2381edb3689f7a53d653190060fcf822d2f368ff"
+ integrity sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==
+
+process-nextick-args@~2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.0.tgz#a37d732f4271b4ab1ad070d35508e8290788ffaa"
+ integrity sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==
+
+process@^0.11.10:
+ version "0.11.10"
+ resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182"
+ integrity sha1-czIwDoQBYb2j5podHZGn1LwW8YI=
+
+promise.series@^0.2.0:
+ version "0.2.0"
+ resolved "https://registry.yarnpkg.com/promise.series/-/promise.series-0.2.0.tgz#2cc7ebe959fc3a6619c04ab4dbdc9e452d864bbd"
+ integrity sha1-LMfr6Vn8OmYZwEq029yeRS2GS70=
+
+proto-list@~1.2.1:
+ version "1.2.4"
+ resolved "https://registry.yarnpkg.com/proto-list/-/proto-list-1.2.4.tgz#212d5bfe1318306a420f6402b8e26ff39647a849"
+ integrity sha1-IS1b/hMYMGpCD2QCuOJv85ZHqEk=
+
+pseudomap@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3"
+ integrity sha1-8FKijacOYYkX7wqKw0wa5aaChrM=
+
+public-encrypt@^4.0.0:
+ version "4.0.3"
+ resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.3.tgz#4fcc9d77a07e48ba7527e7cbe0de33d0701331e0"
+ integrity sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==
+ dependencies:
+ 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"
+
+punycode@1.3.2:
+ version "1.3.2"
+ resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d"
+ integrity sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=
+
+punycode@^1.2.4:
+ version "1.4.1"
+ resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e"
+ integrity sha1-wNWmOycYgArY4esPpSachN1BhF4=
+
+pupa@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/pupa/-/pupa-1.0.0.tgz#9a9568a5af7e657b8462a6e9d5328743560ceff6"
+ integrity sha1-mpVopa9+ZXuEYqbp1TKHQ1YM7/Y=
+
+q@^1.1.2:
+ version "1.5.1"
+ resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7"
+ integrity sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=
+
+query-string@^4.1.0:
+ version "4.3.4"
+ resolved "https://registry.yarnpkg.com/query-string/-/query-string-4.3.4.tgz#bbb693b9ca915c232515b228b1a02b609043dbeb"
+ integrity sha1-u7aTucqRXCMlFbIosaArYJBD2+s=
+ dependencies:
+ object-assign "^4.1.0"
+ strict-uri-encode "^1.0.0"
+
+querystring-es3@^0.2.0:
+ version "0.2.1"
+ resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73"
+ integrity sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=
+
+querystring@0.2.0:
+ version "0.2.0"
+ resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620"
+ integrity sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=
+
+quote-stream@^1.0.1, quote-stream@~1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/quote-stream/-/quote-stream-1.0.2.tgz#84963f8c9c26b942e153feeb53aae74652b7e0b2"
+ integrity sha1-hJY/jJwmuULhU/7rU6rnRlK34LI=
+ dependencies:
+ buffer-equal "0.0.1"
+ minimist "^1.1.3"
+ through2 "^2.0.0"
+
+randomatic@^3.0.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/randomatic/-/randomatic-3.1.0.tgz#36f2ca708e9e567f5ed2ec01949026d50aa10116"
+ integrity sha512-KnGPVE0lo2WoXxIZ7cPR8YBpiol4gsSuOwDSg410oHh80ZMp5EiypNqL2K4Z77vJn6lB5rap7IkAmcUlalcnBQ==
+ dependencies:
+ is-number "^4.0.0"
+ kind-of "^6.0.0"
+ math-random "^1.0.1"
+
+randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5:
+ version "2.0.6"
+ resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.0.6.tgz#d302c522948588848a8d300c932b44c24231da80"
+ integrity sha512-CIQ5OFxf4Jou6uOKe9t1AOgqpeU5fd70A8NPdHSGeYXqXsPe6peOwI0cUl88RWZ6sP1vPMV3avd/R6cZ5/sP1A==
+ dependencies:
+ safe-buffer "^5.1.0"
+
+randomfill@^1.0.3:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/randomfill/-/randomfill-1.0.4.tgz#c92196fc86ab42be983f1bf31778224931d61458"
+ integrity sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==
+ dependencies:
+ randombytes "^2.0.5"
+ safe-buffer "^5.1.0"
+
+range-parser@~1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.0.tgz#f49be6b487894ddc40dcc94a322f611092e00d5e"
+ integrity sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4=
+
+rc@^1.2.7:
+ version "1.2.8"
+ resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed"
+ integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==
+ dependencies:
+ deep-extend "^0.6.0"
+ ini "~1.3.0"
+ minimist "^1.2.0"
+ strip-json-comments "~2.0.1"
+
+read-pkg-up@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-2.0.0.tgz#6b72a8048984e0c41e79510fd5e9fa99b3b549be"
+ integrity sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=
+ dependencies:
+ find-up "^2.0.0"
+ read-pkg "^2.0.0"
+
+read-pkg@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-2.0.0.tgz#8ef1c0623c6a6db0dc6713c4bfac46332b2368f8"
+ integrity sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=
+ dependencies:
+ load-json-file "^2.0.0"
+ normalize-package-data "^2.3.2"
+ path-type "^2.0.0"
+
+readable-stream@^2.0.2, readable-stream@^2.0.6, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.3, readable-stream@^2.3.6, readable-stream@~2.3.3:
+ version "2.3.6"
+ resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf"
+ integrity sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==
+ dependencies:
+ 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@^2.0.0:
+ version "2.2.1"
+ resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.2.1.tgz#0e87622a3325aa33e892285caf8b4e846529a525"
+ integrity sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==
+ dependencies:
+ graceful-fs "^4.1.11"
+ micromatch "^3.1.10"
+ readable-stream "^2.0.2"
+
+redent@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/redent/-/redent-2.0.0.tgz#c1b2007b42d57eb1389079b3c8333639d5e1ccaa"
+ integrity sha1-wbIAe0LVfrE4kHmzyDM2OdXhzKo=
+ dependencies:
+ indent-string "^3.0.0"
+ strip-indent "^2.0.0"
+
+reduce-css-calc@^1.2.6:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/reduce-css-calc/-/reduce-css-calc-1.3.0.tgz#747c914e049614a4c9cfbba629871ad1d2927716"
+ integrity sha1-dHyRTgSWFKTJz7umKYca0dKSdxY=
+ dependencies:
+ balanced-match "^0.4.2"
+ math-expression-evaluator "^1.2.14"
+ reduce-function-call "^1.0.1"
+
+reduce-css-calc@^2.0.0:
+ version "2.1.5"
+ resolved "https://registry.yarnpkg.com/reduce-css-calc/-/reduce-css-calc-2.1.5.tgz#f283712f0c9708ef952d328f4b16112d57b03714"
+ integrity sha512-AybiBU03FKbjYzyvJvwkJZY6NLN+80Ufc2EqEs+41yQH+8wqBEslD6eGiS0oIeq5TNLA5PrhBeYHXWdn8gtW7A==
+ dependencies:
+ css-unit-converter "^1.1.1"
+ postcss-value-parser "^3.3.0"
+
+reduce-function-call@^1.0.1:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/reduce-function-call/-/reduce-function-call-1.0.2.tgz#5a200bf92e0e37751752fe45b0ab330fd4b6be99"
+ integrity sha1-WiAL+S4ON3UXUv5FsKszD9S2vpk=
+ dependencies:
+ balanced-match "^0.4.2"
+
+regenerate-unicode-properties@^7.0.0:
+ version "7.0.0"
+ resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-7.0.0.tgz#107405afcc4a190ec5ed450ecaa00ed0cafa7a4c"
+ integrity sha512-s5NGghCE4itSlUS+0WUj88G6cfMVMmH8boTPNvABf8od+2dhT9WDlWu8n01raQAJZMOK8Ch6jSexaRO7swd6aw==
+ dependencies:
+ regenerate "^1.4.0"
+
+regenerate@^1.2.1, regenerate@^1.4.0:
+ version "1.4.0"
+ resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.0.tgz#4a856ec4b56e4077c557589cae85e7a4c8869a11"
+ integrity sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg==
+
+regenerator-runtime@^0.11.0:
+ version "0.11.1"
+ resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9"
+ integrity sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==
+
+regenerator-runtime@^0.12.0:
+ version "0.12.1"
+ resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.12.1.tgz#fa1a71544764c036f8c49b13a08b2594c9f8a0de"
+ integrity sha512-odxIc1/vDlo4iZcfXqRYFj0vpXFNoGdKMAUieAlFYO6m/nl5e9KR/beGf41z4a1FI+aQgtjhuaSlDxQ0hmkrHg==
+
+regenerator-transform@^0.13.3:
+ version "0.13.3"
+ resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.13.3.tgz#264bd9ff38a8ce24b06e0636496b2c856b57bcbb"
+ integrity sha512-5ipTrZFSq5vU2YoGoww4uaRVAK4wyYC4TSICibbfEPOruUu8FFP7ErV0BjmbIOEpn3O/k9na9UEdYR/3m7N6uA==
+ dependencies:
+ private "^0.1.6"
+
+regex-cache@^0.4.2:
+ version "0.4.4"
+ resolved "https://registry.yarnpkg.com/regex-cache/-/regex-cache-0.4.4.tgz#75bdc58a2a1496cec48a12835bc54c8d562336dd"
+ integrity sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==
+ dependencies:
+ is-equal-shallow "^0.1.3"
+
+regex-not@^1.0.0, regex-not@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c"
+ integrity sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==
+ dependencies:
+ extend-shallow "^3.0.2"
+ safe-regex "^1.1.0"
+
+regexpu-core@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-1.0.0.tgz#86a763f58ee4d7c2f6b102e4764050de7ed90c6b"
+ integrity sha1-hqdj9Y7k18L2sQLkdkBQ3n7ZDGs=
+ dependencies:
+ regenerate "^1.2.1"
+ regjsgen "^0.2.0"
+ regjsparser "^0.1.4"
+
+regexpu-core@^4.1.3, regexpu-core@^4.2.0:
+ version "4.2.0"
+ resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.2.0.tgz#a3744fa03806cffe146dea4421a3e73bdcc47b1d"
+ integrity sha512-Z835VSnJJ46CNBttalHD/dB+Sj2ezmY6Xp38npwU87peK6mqOzOpV8eYktdkLTEkzzD+JsTcxd84ozd8I14+rw==
+ dependencies:
+ regenerate "^1.4.0"
+ regenerate-unicode-properties "^7.0.0"
+ regjsgen "^0.4.0"
+ regjsparser "^0.3.0"
+ unicode-match-property-ecmascript "^1.0.4"
+ unicode-match-property-value-ecmascript "^1.0.2"
+
+regjsgen@^0.2.0:
+ version "0.2.0"
+ resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.2.0.tgz#6c016adeac554f75823fe37ac05b92d5a4edb1f7"
+ integrity sha1-bAFq3qxVT3WCP+N6wFuS1aTtsfc=
+
+regjsgen@^0.4.0:
+ version "0.4.0"
+ resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.4.0.tgz#c1eb4c89a209263f8717c782591523913ede2561"
+ integrity sha512-X51Lte1gCYUdlwhF28+2YMO0U6WeN0GLpgpA7LK7mbdDnkQYiwvEpmpe0F/cv5L14EbxgrdayAG3JETBv0dbXA==
+
+regjsparser@^0.1.4:
+ version "0.1.5"
+ resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.1.5.tgz#7ee8f84dc6fa792d3fd0ae228d24bd949ead205c"
+ integrity sha1-fuj4Tcb6eS0/0K4ijSS9lJ6tIFw=
+ dependencies:
+ jsesc "~0.5.0"
+
+regjsparser@^0.3.0:
+ version "0.3.0"
+ resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.3.0.tgz#3c326da7fcfd69fa0d332575a41c8c0cdf588c96"
+ integrity sha512-zza72oZBBHzt64G7DxdqrOo/30bhHkwMUoT0WqfGu98XLd7N+1tsy5MJ96Bk4MD0y74n629RhmrGW6XlnLLwCA==
+ dependencies:
+ jsesc "~0.5.0"
+
+remove-trailing-separator@^1.0.1:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef"
+ integrity sha1-wkvOKig62tW8P1jg1IJJuSN52O8=
+
+repeat-element@^1.1.2:
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.3.tgz#782e0d825c0c5a3bb39731f84efee6b742e6b1ce"
+ integrity sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==
+
+repeat-string@^1.5.2, repeat-string@^1.6.1:
+ version "1.6.1"
+ resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637"
+ integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc=
+
+require-from-string@^1.1.0:
+ version "1.2.1"
+ resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-1.2.1.tgz#529c9ccef27380adfec9a2f965b649bbee636418"
+ integrity sha1-UpyczvJzgK3+yaL5ZbZJu+5jZBg=
+
+require-relative@^0.8.7:
+ version "0.8.7"
+ resolved "https://registry.yarnpkg.com/require-relative/-/require-relative-0.8.7.tgz#7999539fc9e047a37928fa196f8e1563dabd36de"
+ integrity sha1-eZlTn8ngR6N5KPoZb44VY9q9Nt4=
+
+reserved-words@^0.1.2:
+ version "0.1.2"
+ resolved "https://registry.yarnpkg.com/reserved-words/-/reserved-words-0.1.2.tgz#00a0940f98cd501aeaaac316411d9adc52b31ab1"
+ integrity sha1-AKCUD5jNUBrqqsMWQR2a3FKzGrE=
+
+resolve-from@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-3.0.0.tgz#b22c7af7d9d6881bc8b6e653335eebcb0a188748"
+ integrity sha1-six699nWiBvItuZTM17rywoYh0g=
+
+resolve-from@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6"
+ integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==
+
+resolve-url@^0.2.1:
+ version "0.2.1"
+ resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a"
+ integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=
+
+resolve@1.8.1, resolve@^1.1.5, resolve@^1.1.6, resolve@^1.3.2, resolve@^1.4.0, resolve@^1.5.0, resolve@^1.8.1:
+ version "1.8.1"
+ resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.8.1.tgz#82f1ec19a423ac1fbd080b0bab06ba36e84a7a26"
+ integrity sha512-AicPrAC7Qu1JxPCZ9ZgCZlY35QgFnNqc+0LtbRNxnVw4TXvjQ72wnuL9JQcEBgXkI9JM8MsT9kaQoHcpCRJOYA==
+ dependencies:
+ path-parse "^1.0.5"
+
+restore-cursor@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf"
+ integrity sha1-n37ih/gv0ybU/RYpI9YhKe7g368=
+ dependencies:
+ onetime "^2.0.0"
+ signal-exit "^3.0.2"
+
+ret@~0.1.10:
+ version "0.1.15"
+ resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc"
+ integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==
+
+rgb-regex@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/rgb-regex/-/rgb-regex-1.0.1.tgz#c0e0d6882df0e23be254a475e8edd41915feaeb1"
+ integrity sha1-wODWiC3w4jviVKR16O3UGRX+rrE=
+
+rgba-regex@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/rgba-regex/-/rgba-regex-1.0.0.tgz#43374e2e2ca0968b0ef1523460b7d730ff22eeb3"
+ integrity sha1-QzdOLiyglosO8VI0YLfXMP8i7rM=
+
+rimraf@^2.6.1:
+ version "2.6.2"
+ resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.2.tgz#2ed8150d24a16ea8651e6d6ef0f47c4158ce7a36"
+ integrity sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==
+ dependencies:
+ glob "^7.0.5"
+
+ripemd160@^2.0.0, ripemd160@^2.0.1:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c"
+ integrity sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==
+ dependencies:
+ hash-base "^3.0.0"
+ inherits "^2.0.1"
+
+rollup-plugin-alias@^1.4.0:
+ version "1.4.0"
+ resolved "https://registry.yarnpkg.com/rollup-plugin-alias/-/rollup-plugin-alias-1.4.0.tgz#120cba7c46621c03138f0ca6fd5dd2ade9872db9"
+ integrity sha512-lB094zdi19FS+1bVarVp9kBN0Zk41PdTGoCk0z8xesKO7RGjOo18cp1hUzEqrOQ4bM9+KLD9nbnu/XUxQm9pbg==
+ dependencies:
+ slash "^1.0.0"
+
+rollup-plugin-babel@^4.0.0-beta.2:
+ version "4.0.3"
+ resolved "https://registry.yarnpkg.com/rollup-plugin-babel/-/rollup-plugin-babel-4.0.3.tgz#8282b0e22233160d679e9c7631342e848422fb02"
+ integrity sha512-/PP0MgbPQyRywI4zRIJim6ySjTcOLo4kQbEbROqp9kOR3kHC3FeU++QpBDZhS2BcHtJTVZMVbBV46flbBN5zxQ==
+ dependencies:
+ "@babel/helper-module-imports" "^7.0.0"
+ rollup-pluginutils "^2.3.0"
+
+rollup-plugin-buble@^0.19.2:
+ version "0.19.4"
+ resolved "https://registry.yarnpkg.com/rollup-plugin-buble/-/rollup-plugin-buble-0.19.4.tgz#b0dde11ad2736b68e94ba2aa34de7822c6e28d24"
+ integrity sha512-mahvTRn9mUVKEUyA5QbrfdybOH7tipHRe4zkKZjEGMB3YSaLW95kHFSB4Vdt7BofyG9r7zMCCmAsEqZKkRaN6A==
+ dependencies:
+ buble "^0.19.4"
+ rollup-pluginutils "^2.3.3"
+
+rollup-plugin-commonjs@^9.1.0:
+ version "9.2.0"
+ resolved "https://registry.yarnpkg.com/rollup-plugin-commonjs/-/rollup-plugin-commonjs-9.2.0.tgz#4604e25069e0c78a09e08faa95dc32dec27f7c89"
+ integrity sha512-0RM5U4Vd6iHjL6rLvr3lKBwnPsaVml+qxOGaaNUWN1lSq6S33KhITOfHmvxV3z2vy9Mk4t0g4rNlVaJJsNQPWA==
+ dependencies:
+ estree-walker "^0.5.2"
+ magic-string "^0.25.1"
+ resolve "^1.8.1"
+ rollup-pluginutils "^2.3.3"
+
+rollup-plugin-hashbang@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/rollup-plugin-hashbang/-/rollup-plugin-hashbang-1.0.1.tgz#4bfa5afc55d92fbfb52cc0bd99270ed06eec6cf0"
+ integrity sha512-m35A6J3ZT4n8+ZDnMex4RLb8UdEuAMuN22Wh3V+NDgLB8drJ80U5W+huwgBIMkOSzT6CRVRlx0hvGVODB7Y/gg==
+ dependencies:
+ magic-string "^0.22.4"
+
+rollup-plugin-json@^2.3.0:
+ version "2.3.1"
+ resolved "https://registry.yarnpkg.com/rollup-plugin-json/-/rollup-plugin-json-2.3.1.tgz#9759d27f33dcd2c896de18b6235df162b88edd77"
+ integrity sha512-alQQQVPo2z9pl6LSK8QqyDlWwCH5KeE8YxgQv7fa/SeTxz+gQe36jBjcha7hQW68MrVh9Ms71EQaMZDAG3w2yw==
+ dependencies:
+ rollup-pluginutils "^2.0.1"
+
+rollup-plugin-node-resolve@^3.3.0:
+ version "3.4.0"
+ resolved "https://registry.yarnpkg.com/rollup-plugin-node-resolve/-/rollup-plugin-node-resolve-3.4.0.tgz#908585eda12e393caac7498715a01e08606abc89"
+ integrity sha512-PJcd85dxfSBWih84ozRtBkB731OjXk0KnzN0oGp7WOWcarAFkVa71cV5hTJg2qpVsV2U8EUwrzHP3tvy9vS3qg==
+ dependencies:
+ builtin-modules "^2.0.0"
+ is-module "^1.0.0"
+ resolve "^1.1.6"
+
+rollup-plugin-postcss@^1.2.3:
+ version "1.6.2"
+ resolved "https://registry.yarnpkg.com/rollup-plugin-postcss/-/rollup-plugin-postcss-1.6.2.tgz#f3422a56dab21bcb2e9b7182763733d4ff2c1b4c"
+ integrity sha512-kKUdZRWSG7IQwXztKA4NTxFKcII7dn5rxAuJyNRJ9QTErRaM6mH4GoFCBPm0KT9TUZDOGCREdRI4VHUdEV+MJA==
+ dependencies:
+ "@vue/component-compiler-utils" "^1.0.0"
+ chalk "^2.0.0"
+ concat-with-sourcemaps "^1.0.5"
+ cssnano "^3.10.0"
+ fs-extra "^5.0.0"
+ import-cwd "^2.1.0"
+ p-queue "^2.4.2"
+ pify "^3.0.0"
+ postcss "^6.0.21"
+ postcss-load-config "^1.2.0"
+ postcss-modules "^1.1.0"
+ promise.series "^0.2.0"
+ reserved-words "^0.1.2"
+ resolve "^1.5.0"
+ rollup-pluginutils "^2.0.1"
+ style-inject "^0.3.0"
+
+rollup-plugin-replace@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/rollup-plugin-replace/-/rollup-plugin-replace-2.1.0.tgz#f9c07a4a89a2f8be912ee54b3f0f68d91e9ed0ae"
+ integrity sha512-SxrAIgpH/B5/W4SeULgreOemxcpEgKs2gcD42zXw50bhqGWmcnlXneVInQpAqzA/cIly4bJrOpeelmB9p4YXSQ==
+ dependencies:
+ magic-string "^0.25.1"
+ minimatch "^3.0.2"
+ rollup-pluginutils "^2.0.1"
+
+rollup-plugin-typescript2@^0.17.1:
+ version "0.17.1"
+ resolved "https://registry.yarnpkg.com/rollup-plugin-typescript2/-/rollup-plugin-typescript2-0.17.1.tgz#298099f372270ae3f41fa63188400c3df2dbdb2b"
+ integrity sha512-WZJ220IID2UJm3P15zIWQR6vi6YekRsL4irXYq/C9JHg+j9rqQOsihzXQM644LMgtwS3NUWKegbCOhUlCO7hKQ==
+ dependencies:
+ fs-extra "7.0.0"
+ resolve "1.8.1"
+ rollup-pluginutils "2.3.3"
+ tslib "1.9.3"
+
+rollup-plugin-uglify@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/rollup-plugin-uglify/-/rollup-plugin-uglify-3.0.0.tgz#a34eca24617709c6bf1778e9653baafa06099b86"
+ integrity sha512-dehLu9eRRoV4l09aC+ySntRw1OAfoyKdbk8Nelblj03tHoynkSybqyEpgavemi1LBOH6S1vzI58/mpxkZIe1iQ==
+ dependencies:
+ uglify-es "^3.3.7"
+
+rollup-pluginutils@2.3.3, rollup-pluginutils@^2.0.1, rollup-pluginutils@^2.3.0, rollup-pluginutils@^2.3.3:
+ version "2.3.3"
+ resolved "https://registry.yarnpkg.com/rollup-pluginutils/-/rollup-pluginutils-2.3.3.tgz#3aad9b1eb3e7fe8262820818840bf091e5ae6794"
+ integrity sha512-2XZwja7b6P5q4RZ5FhyX1+f46xi1Z3qBKigLRZ6VTZjwbN0K1IFGMlwm06Uu0Emcre2Z63l77nq/pzn+KxIEoA==
+ dependencies:
+ estree-walker "^0.5.2"
+ micromatch "^2.3.11"
+
+rollup@^0.57.1:
+ version "0.57.1"
+ resolved "https://registry.yarnpkg.com/rollup/-/rollup-0.57.1.tgz#0bb28be6151d253f67cf4a00fea48fb823c74027"
+ integrity sha512-I18GBqP0qJoJC1K1osYjreqA8VAKovxuI3I81RSk0Dmr4TgloI0tAULjZaox8OsJ+n7XRrhH6i0G2By/pj1LCA==
+ dependencies:
+ "@types/acorn" "^4.0.3"
+ acorn "^5.5.3"
+ acorn-dynamic-import "^3.0.0"
+ date-time "^2.1.0"
+ is-reference "^1.1.0"
+ locate-character "^2.0.5"
+ pretty-ms "^3.1.0"
+ require-relative "^0.8.7"
+ rollup-pluginutils "^2.0.1"
+ signal-exit "^3.0.2"
+ sourcemap-codec "^1.4.1"
+
+safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1:
+ version "5.1.2"
+ resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d"
+ integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==
+
+safe-regex@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e"
+ integrity sha1-QKNmnzsHfR6UPURinhV91IAjvy4=
+ dependencies:
+ ret "~0.1.10"
+
+"safer-buffer@>= 2.1.2 < 3":
+ version "2.1.2"
+ resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a"
+ integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==
+
+safer-eval@^1.2.3:
+ version "1.2.3"
+ resolved "https://registry.yarnpkg.com/safer-eval/-/safer-eval-1.2.3.tgz#73ba74a34bc8a07d6a44135c815fd18a8eebe7a0"
+ integrity sha512-nDwXOhiheoaBT6op02n8wzsshjLXHhh4YAeqsDEoVmy1k2+lGv/ENLsGaWqkaKArUkUx48VO12/ZPa3sI/OEqQ==
+ dependencies:
+ clones "^1.1.0"
+
+sax@^1.2.4, sax@~1.2.1, sax@~1.2.4:
+ version "1.2.4"
+ resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9"
+ integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==
+
+"semver@2 || 3 || 4 || 5", semver@^5.3.0, semver@^5.4.1, semver@^5.5.0:
+ version "5.6.0"
+ resolved "https://registry.yarnpkg.com/semver/-/semver-5.6.0.tgz#7e74256fbaa49c75aa7c7a205cc22799cac80004"
+ integrity sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg==
+
+send@0.16.2:
+ version "0.16.2"
+ resolved "https://registry.yarnpkg.com/send/-/send-0.16.2.tgz#6ecca1e0f8c156d141597559848df64730a6bbc1"
+ integrity sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw==
+ dependencies:
+ debug "2.6.9"
+ depd "~1.1.2"
+ destroy "~1.0.4"
+ encodeurl "~1.0.2"
+ escape-html "~1.0.3"
+ etag "~1.8.1"
+ fresh "0.5.2"
+ http-errors "~1.6.2"
+ mime "1.4.1"
+ ms "2.0.0"
+ on-finished "~2.3.0"
+ range-parser "~1.2.0"
+ statuses "~1.4.0"
+
+serialize-to-js@^1.1.1:
+ version "1.2.1"
+ resolved "https://registry.yarnpkg.com/serialize-to-js/-/serialize-to-js-1.2.1.tgz#2e87f61f938826d24c463a7cbd0dd2929ec38008"
+ integrity sha512-TK6d30GNkOLeFDPuP6Jfy1Q1V31GxzppYTt2lzr8KWmIUKomFj+260QP5o4AhHLu0pr6urgyS8i/Z1PqurjBoA==
+ dependencies:
+ js-beautify "^1.7.5"
+ safer-eval "^1.2.3"
+
+serve-static@^1.12.4:
+ version "1.13.2"
+ resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.13.2.tgz#095e8472fd5b46237db50ce486a43f4b86c6cec1"
+ integrity sha512-p/tdJrO4U387R9oMjb1oj7qSMaMfmOyd4j9hOFoxZe2baQszgHcSWjuya/CiT5kgZZKRudHNOA0pYXOl8rQ5nw==
+ dependencies:
+ encodeurl "~1.0.2"
+ escape-html "~1.0.3"
+ parseurl "~1.3.2"
+ send "0.16.2"
+
+set-blocking@~2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7"
+ integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc=
+
+set-value@^0.4.3:
+ version "0.4.3"
+ resolved "https://registry.yarnpkg.com/set-value/-/set-value-0.4.3.tgz#7db08f9d3d22dc7f78e53af3c3bf4666ecdfccf1"
+ integrity sha1-fbCPnT0i3H945Trzw79GZuzfzPE=
+ dependencies:
+ extend-shallow "^2.0.1"
+ is-extendable "^0.1.1"
+ is-plain-object "^2.0.1"
+ to-object-path "^0.3.0"
+
+set-value@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.0.tgz#71ae4a88f0feefbbf52d1ea604f3fb315ebb6274"
+ integrity sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg==
+ dependencies:
+ extend-shallow "^2.0.1"
+ is-extendable "^0.1.1"
+ is-plain-object "^2.0.3"
+ split-string "^3.0.1"
+
+setimmediate@^1.0.4:
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285"
+ integrity sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=
+
+setprototypeof@1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656"
+ integrity sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==
+
+sha.js@^2.4.0, sha.js@^2.4.8:
+ version "2.4.11"
+ resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7"
+ integrity sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==
+ dependencies:
+ inherits "^2.0.1"
+ safe-buffer "^5.0.1"
+
+shallow-copy@~0.0.1:
+ version "0.0.1"
+ resolved "https://registry.yarnpkg.com/shallow-copy/-/shallow-copy-0.0.1.tgz#415f42702d73d810330292cc5ee86eae1a11a170"
+ integrity sha1-QV9CcC1z2BAzApLMXuhurhoRoXA=
+
+shebang-command@^1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea"
+ integrity sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=
+ dependencies:
+ shebang-regex "^1.0.0"
+
+shebang-regex@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3"
+ integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=
+
+sigmund@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/sigmund/-/sigmund-1.0.1.tgz#3ff21f198cad2175f9f3b781853fd94d0d19b590"
+ integrity sha1-P/IfGYytIXX587eBhT/ZTQ0ZtZA=
+
+signal-exit@^3.0.0, signal-exit@^3.0.2:
+ version "3.0.2"
+ resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d"
+ integrity sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=
+
+simple-swizzle@^0.2.2:
+ version "0.2.2"
+ resolved "https://registry.yarnpkg.com/simple-swizzle/-/simple-swizzle-0.2.2.tgz#a4da6b635ffcccca33f70d17cb92592de95e557a"
+ integrity sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo=
+ dependencies:
+ is-arrayish "^0.3.1"
+
+slash@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55"
+ integrity sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=
+
+snapdragon-node@^2.0.1:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b"
+ integrity sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==
+ dependencies:
+ define-property "^1.0.0"
+ isobject "^3.0.0"
+ snapdragon-util "^3.0.1"
+
+snapdragon-util@^3.0.1:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz#f956479486f2acd79700693f6f7b805e45ab56e2"
+ integrity sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==
+ dependencies:
+ kind-of "^3.2.0"
+
+snapdragon@^0.8.1:
+ version "0.8.2"
+ resolved "https://registry.yarnpkg.com/snapdragon/-/snapdragon-0.8.2.tgz#64922e7c565b0e14204ba1aa7d6964278d25182d"
+ integrity sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==
+ dependencies:
+ 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"
+
+sort-keys@^1.0.0:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/sort-keys/-/sort-keys-1.1.2.tgz#441b6d4d346798f1b4e49e8920adfba0e543f9ad"
+ integrity sha1-RBttTTRnmPG05J6JIK37oOVD+a0=
+ dependencies:
+ is-plain-obj "^1.0.0"
+
+source-map-resolve@^0.5.0:
+ version "0.5.2"
+ resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.2.tgz#72e2cc34095543e43b2c62b2c4c10d4a9054f259"
+ integrity sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA==
+ dependencies:
+ 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@~0.5.6:
+ version "0.5.9"
+ resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.9.tgz#41bc953b2534267ea2d605bccfa7bfa3111ced5f"
+ integrity sha512-gR6Rw4MvUlYy83vP0vxoVNzM6t8MUXqNuRsuBmBHQDu1Fh6X015FrLdgoDKcNdkwGubozq0P4N0Q37UyFVr1EA==
+ dependencies:
+ buffer-from "^1.0.0"
+ source-map "^0.6.0"
+
+source-map-url@^0.4.0:
+ version "0.4.0"
+ resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3"
+ integrity sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=
+
+source-map@0.6.1, source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.1:
+ version "0.6.1"
+ resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263"
+ integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==
+
+source-map@^0.5.0, source-map@^0.5.3, source-map@^0.5.6, source-map@^0.5.7:
+ version "0.5.7"
+ resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc"
+ integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=
+
+sourcemap-codec@^1.4.1:
+ version "1.4.3"
+ resolved "https://registry.yarnpkg.com/sourcemap-codec/-/sourcemap-codec-1.4.3.tgz#0ba615b73ec35112f63c2f2d9e7c3f87282b0e33"
+ integrity sha512-vFrY/x/NdsD7Yc8mpTJXuao9S8lq08Z/kOITHz6b7YbfI9xL8Spe5EvSQUHOI7SbpY8bRPr0U3kKSsPuqEGSfA==
+
+spdx-correct@^3.0.0:
+ version "3.0.2"
+ resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.0.2.tgz#19bb409e91b47b1ad54159243f7312a858db3c2e"
+ integrity sha512-q9hedtzyXHr5S0A1vEPoK/7l8NpfkFYTq6iCY+Pno2ZbdZR6WexZFtqeVGkGxW3TEJMN914Z55EnAGMmenlIQQ==
+ dependencies:
+ spdx-expression-parse "^3.0.0"
+ spdx-license-ids "^3.0.0"
+
+spdx-exceptions@^2.1.0:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz#2ea450aee74f2a89bfb94519c07fcd6f41322977"
+ integrity sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA==
+
+spdx-expression-parse@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz#99e119b7a5da00e05491c9fa338b7904823b41d0"
+ integrity sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==
+ dependencies:
+ spdx-exceptions "^2.1.0"
+ spdx-license-ids "^3.0.0"
+
+spdx-license-ids@^3.0.0:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.1.tgz#e2a303236cac54b04031fa7a5a79c7e701df852f"
+ integrity sha512-TfOfPcYGBB5sDuPn3deByxPhmfegAhpDYKSOXZQN81Oyrrif8ZCodOLzK3AesELnCx03kikhyDwh0pfvvQvF8w==
+
+split-string@^3.0.1, split-string@^3.0.2:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2"
+ integrity sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==
+ dependencies:
+ extend-shallow "^3.0.0"
+
+sprintf-js@~1.0.2:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c"
+ integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=
+
+stable@~0.1.6:
+ version "0.1.8"
+ resolved "https://registry.yarnpkg.com/stable/-/stable-0.1.8.tgz#836eb3c8382fe2936feaf544631017ce7d47a3cf"
+ integrity sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==
+
+static-eval@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/static-eval/-/static-eval-2.0.0.tgz#0e821f8926847def7b4b50cda5d55c04a9b13864"
+ integrity sha512-6flshd3F1Gwm+Ksxq463LtFd1liC77N/PX1FVVc3OzL3hAmo2fwHFbuArkcfi7s9rTNsLEhcRmXGFZhlgy40uw==
+ dependencies:
+ escodegen "^1.8.1"
+
+static-extend@^0.1.1:
+ version "0.1.2"
+ resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6"
+ integrity sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=
+ dependencies:
+ define-property "^0.2.5"
+ object-copy "^0.1.0"
+
+static-module@^2.2.0:
+ version "2.2.5"
+ resolved "https://registry.yarnpkg.com/static-module/-/static-module-2.2.5.tgz#bd40abceae33da6b7afb84a0e4329ff8852bfbbf"
+ integrity sha512-D8vv82E/Kpmz3TXHKG8PPsCPg+RAX6cbCOyvjM6x04qZtQ47EtJFVwRsdov3n5d6/6ynrOY9XB4JkaZwB2xoRQ==
+ dependencies:
+ concat-stream "~1.6.0"
+ convert-source-map "^1.5.1"
+ duplexer2 "~0.1.4"
+ escodegen "~1.9.0"
+ falafel "^2.1.0"
+ has "^1.0.1"
+ magic-string "^0.22.4"
+ merge-source-map "1.0.4"
+ object-inspect "~1.4.0"
+ quote-stream "~1.0.2"
+ readable-stream "~2.3.3"
+ shallow-copy "~0.0.1"
+ static-eval "^2.0.0"
+ through2 "~2.0.3"
+
+"statuses@>= 1.4.0 < 2":
+ version "1.5.0"
+ resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c"
+ integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=
+
+statuses@~1.4.0:
+ version "1.4.0"
+ resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.4.0.tgz#bb73d446da2796106efcc1b601a253d6c46bd087"
+ integrity sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew==
+
+stream-browserify@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-2.0.1.tgz#66266ee5f9bdb9940a4e4514cafb43bb71e5c9db"
+ integrity sha1-ZiZu5fm9uZQKTkUUyvtDu3Hlyds=
+ dependencies:
+ inherits "~2.0.1"
+ readable-stream "^2.0.2"
+
+stream-http@^2.7.2:
+ version "2.8.3"
+ resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-2.8.3.tgz#b2d242469288a5a27ec4fe8933acf623de6514fc"
+ integrity sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==
+ dependencies:
+ builtin-status-codes "^3.0.0"
+ inherits "^2.0.1"
+ readable-stream "^2.3.6"
+ to-arraybuffer "^1.0.0"
+ xtend "^4.0.0"
+
+strict-uri-encode@^1.0.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713"
+ integrity sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM=
+
+string-hash@^1.1.1:
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/string-hash/-/string-hash-1.1.3.tgz#e8aafc0ac1855b4666929ed7dd1275df5d6c811b"
+ integrity sha1-6Kr8CsGFW0Zmkp7X3RJ1311sgRs=
+
+string-width@^1.0.1:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3"
+ integrity sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=
+ dependencies:
+ code-point-at "^1.0.0"
+ is-fullwidth-code-point "^1.0.0"
+ strip-ansi "^3.0.0"
+
+"string-width@^1.0.2 || 2", string-width@^2.0.0, string-width@^2.1.1:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e"
+ integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==
+ dependencies:
+ is-fullwidth-code-point "^2.0.0"
+ strip-ansi "^4.0.0"
+
+string_decoder@^1.0.0, string_decoder@~1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8"
+ integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==
+ dependencies:
+ safe-buffer "~5.1.0"
+
+stringify-author@^0.1.3:
+ version "0.1.3"
+ resolved "https://registry.yarnpkg.com/stringify-author/-/stringify-author-0.1.3.tgz#d581e02ce0b55cda3c953e62add211fae4b0ef66"
+ integrity sha1-1YHgLOC1XNo8lT5irdIR+uSw72Y=
+
+strip-ansi@^3.0.0, strip-ansi@^3.0.1:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf"
+ integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=
+ dependencies:
+ ansi-regex "^2.0.0"
+
+strip-ansi@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f"
+ integrity sha1-qEeQIusaw2iocTibY1JixQXuNo8=
+ dependencies:
+ ansi-regex "^3.0.0"
+
+strip-bom@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3"
+ integrity sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=
+
+strip-eof@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf"
+ integrity sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=
+
+strip-indent@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-2.0.0.tgz#5ef8db295d01e6ed6cbf7aab96998d7822527b68"
+ integrity sha1-XvjbKV0B5u1sv3qrlpmNeCJSe2g=
+
+strip-json-comments@~2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a"
+ integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo=
+
+style-inject@^0.3.0:
+ version "0.3.0"
+ resolved "https://registry.yarnpkg.com/style-inject/-/style-inject-0.3.0.tgz#d21c477affec91811cc82355832a700d22bf8dd3"
+ integrity sha512-IezA2qp+vcdlhJaVm5SOdPPTUu0FCEqfNSli2vRuSIBbu5Nq5UvygTk/VzeCqfLz2Atj3dVII5QBKGZRZ0edzw==
+
+stylehacks@^4.0.0:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/stylehacks/-/stylehacks-4.0.1.tgz#3186595d047ab0df813d213e51c8b94e0b9010f2"
+ integrity sha512-TK5zEPeD9NyC1uPIdjikzsgWxdQQN/ry1X3d1iOz1UkYDCmcr928gWD1KHgyC27F50UnE0xCTrBOO1l6KR8M4w==
+ dependencies:
+ browserslist "^4.0.0"
+ postcss "^7.0.0"
+ postcss-selector-parser "^3.0.0"
+
+supports-color@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7"
+ integrity sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=
+
+supports-color@^3.2.3:
+ version "3.2.3"
+ resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-3.2.3.tgz#65ac0504b3954171d8a64946b2ae3cbb8a5f54f6"
+ integrity sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=
+ dependencies:
+ has-flag "^1.0.0"
+
+supports-color@^5.3.0, supports-color@^5.4.0, supports-color@^5.5.0:
+ version "5.5.0"
+ resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f"
+ integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==
+ dependencies:
+ has-flag "^3.0.0"
+
+svgo@^0.7.0:
+ version "0.7.2"
+ resolved "https://registry.yarnpkg.com/svgo/-/svgo-0.7.2.tgz#9f5772413952135c6fefbf40afe6a4faa88b4bb5"
+ integrity sha1-n1dyQTlSE1xv779Ar+ak+qiLS7U=
+ dependencies:
+ coa "~1.0.1"
+ colors "~1.1.2"
+ csso "~2.3.1"
+ js-yaml "~3.7.0"
+ mkdirp "~0.5.1"
+ sax "~1.2.1"
+ whet.extend "~0.9.9"
+
+svgo@^1.0.0, svgo@^1.0.5:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/svgo/-/svgo-1.1.1.tgz#12384b03335bcecd85cfa5f4e3375fed671cb985"
+ integrity sha512-GBkJbnTuFpM4jFbiERHDWhZc/S/kpHToqmZag3aEBjPYK44JAN2QBjvrGIxLOoCyMZjuFQIfTO2eJd8uwLY/9g==
+ dependencies:
+ coa "~2.0.1"
+ colors "~1.1.2"
+ css-select "^2.0.0"
+ css-select-base-adapter "~0.1.0"
+ css-tree "1.0.0-alpha.28"
+ css-url-regex "^1.1.0"
+ csso "^3.5.0"
+ js-yaml "^3.12.0"
+ mkdirp "~0.5.1"
+ object.values "^1.0.4"
+ sax "~1.2.4"
+ stable "~0.1.6"
+ unquote "~1.1.1"
+ util.promisify "~1.0.0"
+
+tar@^4:
+ version "4.4.6"
+ resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.6.tgz#63110f09c00b4e60ac8bcfe1bf3c8660235fbc9b"
+ integrity sha512-tMkTnh9EdzxyfW+6GK6fCahagXsnYk6kE6S9Gr9pjVdys769+laCTbodXDhPAjzVtEBazRgP0gYqOjnk9dQzLg==
+ dependencies:
+ chownr "^1.0.1"
+ fs-minipass "^1.2.5"
+ minipass "^2.3.3"
+ minizlib "^1.1.0"
+ mkdirp "^0.5.0"
+ safe-buffer "^5.1.2"
+ yallist "^3.0.2"
+
+term-size@^1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/term-size/-/term-size-1.2.0.tgz#458b83887f288fc56d6fffbfad262e26638efa69"
+ integrity sha1-RYuDiH8oj8Vtb/+/rSYuJmOO+mk=
+ dependencies:
+ execa "^0.7.0"
+
+terser@^3.7.3, terser@^3.8.1:
+ version "3.10.0"
+ resolved "https://registry.yarnpkg.com/terser/-/terser-3.10.0.tgz#6ae15dafecbd02c9788d5f36d27fca32196b533a"
+ integrity sha512-hNh2WR3YxtKoY7BNSb3+CJ9Xv9bbUuOU9uriIf2F1tiAYNA4rNy2wWuSDV8iKcag27q65KPJ/sPpMWEh6qttgw==
+ dependencies:
+ commander "~2.17.1"
+ source-map "~0.6.1"
+ source-map-support "~0.5.6"
+
+text-table@^0.2.0:
+ version "0.2.0"
+ resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4"
+ integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=
+
+through2@^2.0.0, through2@~2.0.3:
+ version "2.0.3"
+ resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.3.tgz#0004569b37c7c74ba39c43f3ced78d1ad94140be"
+ integrity sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=
+ dependencies:
+ readable-stream "^2.1.5"
+ xtend "~4.0.1"
+
+time-zone@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/time-zone/-/time-zone-1.0.0.tgz#99c5bf55958966af6d06d83bdf3800dc82faec5d"
+ integrity sha1-mcW/VZWJZq9tBtg73zgA3IL67F0=
+
+timers-browserify@^2.0.4:
+ version "2.0.10"
+ resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.10.tgz#1d28e3d2aadf1d5a5996c4e9f95601cd053480ae"
+ integrity sha512-YvC1SV1XdOUaL6gx5CoGroT3Gu49pK9+TZ38ErPldOWW4j49GI1HKs9DV+KGq/w6y+LZ72W1c8cKz2vzY+qpzg==
+ dependencies:
+ setimmediate "^1.0.4"
+
+timsort@^0.3.0:
+ version "0.3.0"
+ resolved "https://registry.yarnpkg.com/timsort/-/timsort-0.3.0.tgz#405411a8e7e6339fe64db9a234de11dc31e02bd4"
+ integrity sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=
+
+tiny-inflate@^1.0.0:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/tiny-inflate/-/tiny-inflate-1.0.2.tgz#93d9decffc8805bd57eae4310f0b745e9b6fb3a7"
+ integrity sha1-k9nez/yIBb1X6uQxDwt0Xptvs6c=
+
+to-arraybuffer@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43"
+ integrity sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=
+
+to-fast-properties@^1.0.3:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-1.0.3.tgz#b83571fa4d8c25b82e231b06e3a3055de4ca1a47"
+ integrity sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=
+
+to-fast-properties@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e"
+ integrity sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=
+
+to-object-path@^0.3.0:
+ version "0.3.0"
+ resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af"
+ integrity sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=
+ dependencies:
+ kind-of "^3.0.2"
+
+to-regex-range@^2.1.0:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38"
+ integrity sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=
+ dependencies:
+ is-number "^3.0.0"
+ repeat-string "^1.6.1"
+
+to-regex@^3.0.1, to-regex@^3.0.2:
+ version "3.0.2"
+ resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce"
+ integrity sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==
+ dependencies:
+ define-property "^2.0.2"
+ extend-shallow "^3.0.2"
+ regex-not "^1.0.2"
+ safe-regex "^1.1.0"
+
+toml@^2.3.3:
+ version "2.3.3"
+ resolved "https://registry.yarnpkg.com/toml/-/toml-2.3.3.tgz#8d683d729577cb286231dfc7a8affe58d31728fb"
+ integrity sha512-O7L5hhSQHxuufWUdcTRPfuTh3phKfAZ/dqfxZFoxPCj2RYmpaSGLEIs016FCXItQwNr08yefUB5TSjzRYnajTA==
+
+tomlify-j0.4@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/tomlify-j0.4/-/tomlify-j0.4-3.0.0.tgz#99414d45268c3a3b8bf38be82145b7bba34b7473"
+ integrity sha512-2Ulkc8T7mXJ2l0W476YC/A209PR38Nw8PuaCNtk9uI3t1zzFdGQeWYGQvmj2PZkVvRC/Yoi4xQKMRnWc/N29tQ==
+
+trim-right@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003"
+ integrity sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=
+
+tslib@1.9.3:
+ version "1.9.3"
+ resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.9.3.tgz#d7e4dd79245d85428c4d7e4822a79917954ca286"
+ integrity sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==
+
+"tsm@https://github.com/VitorluizC/tsm":
+ version "0.9.0"
+ resolved "https://github.com/VitorluizC/tsm#30089842d5641995a3b877e10edf1b5335d61b05"
+
+tty-browserify@0.0.0:
+ version "0.0.0"
+ resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6"
+ integrity sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=
+
+type-check@~0.3.2:
+ version "0.3.2"
+ resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72"
+ integrity sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=
+ dependencies:
+ prelude-ls "~1.1.2"
+
+typedarray@^0.0.6:
+ version "0.0.6"
+ resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777"
+ integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=
+
+typescript@^3.1.2:
+ version "3.1.2"
+ resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.1.2.tgz#c03a5d16f30bb60ad8bb6fe8e7cb212eedeec950"
+ integrity sha512-gOoGJWbNnFAfP9FlrSV63LYD5DJqYJHG5ky1kOXSl3pCImn4rqWy/flyq1BRd4iChQsoCqjbQaqtmXO4yCVPCA==
+
+uglify-es@^3.3.7:
+ version "3.3.9"
+ resolved "https://registry.yarnpkg.com/uglify-es/-/uglify-es-3.3.9.tgz#0c1c4f0700bed8dbc124cdb304d2592ca203e677"
+ integrity sha512-r+MU0rfv4L/0eeW3xZrd16t4NZfK8Ld4SWVglYBb7ez5uXFWHuVRs6xCTrf1yirs9a4j4Y27nn7SRfO6v67XsQ==
+ dependencies:
+ commander "~2.13.0"
+ source-map "~0.6.1"
+
+unicode-canonical-property-names-ecmascript@^1.0.4:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz#2619800c4c825800efdd8343af7dd9933cbe2818"
+ integrity sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ==
+
+unicode-match-property-ecmascript@^1.0.4:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz#8ed2a32569961bce9227d09cd3ffbb8fed5f020c"
+ integrity sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg==
+ dependencies:
+ unicode-canonical-property-names-ecmascript "^1.0.4"
+ unicode-property-aliases-ecmascript "^1.0.4"
+
+unicode-match-property-value-ecmascript@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.0.2.tgz#9f1dc76926d6ccf452310564fd834ace059663d4"
+ integrity sha512-Rx7yODZC1L/T8XKo/2kNzVAQaRE88AaMvI1EF/Xnj3GW2wzN6fop9DDWuFAKUVFH7vozkz26DzP0qyWLKLIVPQ==
+
+unicode-property-aliases-ecmascript@^1.0.4:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.0.4.tgz#5a533f31b4317ea76f17d807fa0d116546111dd0"
+ integrity sha512-2WSLa6OdYd2ng8oqiGIWnJqyFArvhn+5vgx5GTxMbUYjCYKUcuKS62YLFF0R/BDGlB1yzXjQOLtPAfHsgirEpg==
+
+unicode-trie@^0.3.1:
+ version "0.3.1"
+ resolved "https://registry.yarnpkg.com/unicode-trie/-/unicode-trie-0.3.1.tgz#d671dddd89101a08bac37b6a5161010602052085"
+ integrity sha1-1nHd3YkQGgi6w3tqUWEBBgIFIIU=
+ dependencies:
+ pako "^0.2.5"
+ tiny-inflate "^1.0.0"
+
+union-value@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.0.tgz#5c71c34cb5bad5dcebe3ea0cd08207ba5aa1aea4"
+ integrity sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ=
+ dependencies:
+ arr-union "^3.1.0"
+ get-value "^2.0.6"
+ is-extendable "^0.1.1"
+ set-value "^0.4.3"
+
+uniq@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/uniq/-/uniq-1.0.1.tgz#b31c5ae8254844a3a8281541ce2b04b865a734ff"
+ integrity sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=
+
+uniqs@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/uniqs/-/uniqs-2.0.0.tgz#ffede4b36b25290696e6e165d4a59edb998e6b02"
+ integrity sha1-/+3ks2slKQaW5uFl1KWe25mOawI=
+
+universalify@^0.1.0:
+ version "0.1.2"
+ resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66"
+ integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==
+
+unquote@~1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/unquote/-/unquote-1.1.1.tgz#8fded7324ec6e88a0ff8b905e7c098cdc086d544"
+ integrity sha1-j97XMk7G6IoP+LkF58CYzcCG1UQ=
+
+unset-value@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559"
+ integrity sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=
+ dependencies:
+ has-value "^0.3.1"
+ isobject "^3.0.0"
+
+upath@^1.0.5:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/upath/-/upath-1.1.0.tgz#35256597e46a581db4793d0ce47fa9aebfc9fabd"
+ integrity sha512-bzpH/oBhoS/QI/YtbkqCg6VEiPYjSZtrHQM6/QnJS6OL9pKUFLqb3aFh4Scvwm45+7iAgiMkLhSbaZxUqmrprw==
+
+urix@^0.1.0:
+ version "0.1.0"
+ resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72"
+ integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=
+
+url@^0.11.0:
+ version "0.11.0"
+ resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1"
+ integrity sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=
+ dependencies:
+ punycode "1.3.2"
+ querystring "0.2.0"
+
+use-config@^2.0.4:
+ version "2.0.4"
+ resolved "https://registry.yarnpkg.com/use-config/-/use-config-2.0.4.tgz#1e14e5dbc600533aa5cd1b35d43a5be849b45b0c"
+ integrity sha512-9ruSpSQAElcvdSZxZGb8J/Ep3n3OcO23Ab3weE4RSCH6oXVSmt0evRpElsM+pESkpWmRO2aqnvTswIlnerB6cw==
+ dependencies:
+ load-json-file "^2.0.0"
+ path-exists "^3.0.0"
+ pupa "^1.0.0"
+
+use@^3.1.0:
+ version "3.1.1"
+ resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f"
+ integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==
+
+util-deprecate@~1.0.1:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf"
+ integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=
+
+util.promisify@~1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.0.0.tgz#440f7165a459c9a16dc145eb8e72f35687097030"
+ integrity sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA==
+ dependencies:
+ define-properties "^1.1.2"
+ object.getownpropertydescriptors "^2.0.3"
+
+util@0.10.3:
+ version "0.10.3"
+ resolved "https://registry.yarnpkg.com/util/-/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9"
+ integrity sha1-evsa/lCAUkZInj23/g7TeTNqwPk=
+ dependencies:
+ inherits "2.0.1"
+
+util@^0.10.3:
+ version "0.10.4"
+ resolved "https://registry.yarnpkg.com/util/-/util-0.10.4.tgz#3aa0125bfe668a4672de58857d3ace27ecb76901"
+ integrity sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A==
+ dependencies:
+ inherits "2.0.3"
+
+v8-compile-cache@^2.0.0:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.0.2.tgz#a428b28bb26790734c4fc8bc9fa106fccebf6a6c"
+ integrity sha512-1wFuMUIM16MDJRCrpbpuEPTUGmM5QMUg0cr3KFwra2XgOgFcPGDQHDh3CszSCD2Zewc/dh/pamNEW8CbfDebUw==
+
+validate-npm-package-license@^3.0.1:
+ version "3.0.4"
+ resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a"
+ integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==
+ dependencies:
+ spdx-correct "^3.0.0"
+ spdx-expression-parse "^3.0.0"
+
+vendors@^1.0.0:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/vendors/-/vendors-1.0.2.tgz#7fcb5eef9f5623b156bcea89ec37d63676f21801"
+ integrity sha512-w/hry/368nO21AN9QljsaIhb9ZiZtZARoVH5f3CsFbawdLdayCgKRPup7CggujvySMxx0I91NOyxdVENohprLQ==
+
+vlq@^0.2.2:
+ version "0.2.3"
+ resolved "https://registry.yarnpkg.com/vlq/-/vlq-0.2.3.tgz#8f3e4328cf63b1540c0d67e1b2778386f8975b26"
+ integrity sha512-DRibZL6DsNhIgYQ+wNdWDL2SL3bKPlVrRiBqV5yuMm++op8W4kGFtaQfCs4KEJn0wBZcHVHJ3eoywX8983k1ow==
+
+vlq@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/vlq/-/vlq-1.0.0.tgz#8101be90843422954c2b13eb27f2f3122bdcc806"
+ integrity sha512-o3WmXySo+oI5thgqr7Qy8uBkT/v9Zr+sRyrh1lr8aWPUkgDWdWt4Nae2WKBrLsocgE8BuWWD0jLc+VW8LeU+2g==
+
+vm-browserify@0.0.4:
+ version "0.0.4"
+ resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-0.0.4.tgz#5d7ea45bbef9e4a6ff65f95438e0a87c357d5a73"
+ integrity sha1-XX6kW7755Kb/ZflUOOCofDV9WnM=
+ dependencies:
+ indexof "0.0.1"
+
+vue-template-es2015-compiler@^1.6.0:
+ version "1.6.0"
+ resolved "https://registry.yarnpkg.com/vue-template-es2015-compiler/-/vue-template-es2015-compiler-1.6.0.tgz#dc42697133302ce3017524356a6c61b7b69b4a18"
+ integrity sha512-x3LV3wdmmERhVCYy3quqA57NJW7F3i6faas++pJQWtknWT+n7k30F4TVdHvCLn48peTJFRvCpxs3UuFPqgeELg==
+
+wcwidth@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/wcwidth/-/wcwidth-1.0.1.tgz#f0b0dcf915bc5ff1528afadb2c0e17b532da2fe8"
+ integrity sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g=
+ dependencies:
+ defaults "^1.0.3"
+
+whet.extend@~0.9.9:
+ version "0.9.9"
+ resolved "https://registry.yarnpkg.com/whet.extend/-/whet.extend-0.9.9.tgz#f877d5bf648c97e5aa542fadc16d6a259b9c11a1"
+ integrity sha1-+HfVv2SMl+WqVC+twW1qJZucEaE=
+
+which@^1.2.9:
+ version "1.3.1"
+ resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a"
+ integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==
+ dependencies:
+ isexe "^2.0.0"
+
+wide-align@^1.1.0:
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.3.tgz#ae074e6bdc0c14a431e804e624549c633b000457"
+ integrity sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==
+ dependencies:
+ string-width "^1.0.2 || 2"
+
+widest-line@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/widest-line/-/widest-line-2.0.0.tgz#0142a4e8a243f8882c0233aa0e0281aa76152273"
+ integrity sha1-AUKk6KJD+IgsAjOqDgKBqnYVInM=
+ dependencies:
+ string-width "^2.1.1"
+
+wordwrap@~1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb"
+ integrity sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=
+
+wrap-ansi@^3.0.1:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-3.0.1.tgz#288a04d87eda5c286e060dfe8f135ce8d007f8ba"
+ integrity sha1-KIoE2H7aXChuBg3+jxNc6NAH+Lo=
+ dependencies:
+ string-width "^2.1.1"
+ strip-ansi "^4.0.0"
+
+wrappy@1:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
+ integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=
+
+ws@^5.1.1:
+ version "5.2.2"
+ resolved "https://registry.yarnpkg.com/ws/-/ws-5.2.2.tgz#dffef14866b8e8dc9133582514d1befaf96e980f"
+ integrity sha512-jaHFD6PFv6UgoIVda6qZllptQsMlDEJkTQcybzzXDYM1XO9Y8em691FGMPmM46WGyLU4z9KMgQN+qrux/nhlHA==
+ dependencies:
+ async-limiter "~1.0.0"
+
+xtend@^4.0.0, xtend@~4.0.1:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af"
+ integrity sha1-pcbVMr5lbiPbgg77lDofBJmNY68=
+
+yallist@^2.1.2:
+ version "2.1.2"
+ resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52"
+ integrity sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=
+
+yallist@^3.0.0, yallist@^3.0.2:
+ version "3.0.2"
+ resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.0.2.tgz#8452b4bb7e83c7c188d8041c1a837c773d6d8bb9"
+ integrity sha1-hFK0u36Dx8GI2AQcGoN8dz1ti7k=