From b548c25fd29a8e473dc6aeab728c23176ee24721 Mon Sep 17 00:00:00 2001 From: Eric Rowell Date: Sun, 17 Mar 2019 01:43:08 -0700 Subject: [PATCH] 1.6.0 --- CHANGELOG.md | 1 + README.md | 100 ++++++++++++------ engine/dist/ElGrapho.js | 71 +++++++------ engine/dist/ElGrapho.min.js | 2 +- engine/src/VertexBridge.js | 8 +- engine/src/models/Cluster.js | 9 +- engine/src/models/ForceDirectedGraph.js | 21 ++-- engine/src/models/Ring.js | 15 ++- engine/src/models/Tree.js | 18 ++-- gallery/big-clusters.html | 9 +- gallery/big-force-directed-graph.html | 9 +- gallery/big-network-graph.html | 11 +- .../big-randomized-force-directed-graph.html | 10 +- gallery/big-ring.html | 9 +- gallery/big-tree.html | 10 +- gallery/binary-tree.html | 12 +-- gallery/network-force-directed-graph.html | 9 +- gallery/one-cluster.html | 9 +- gallery/simple-ring.html | 9 +- gallery/simple-tree.html | 12 +-- gallery/small-force-directed-graph.html | 14 ++- .../three-branch-force-directed-graph.html | 21 +--- gallery/three-clusters.html | 9 +- gallery/two-clusters.html | 9 +- gallery/x-graph.html | 10 +- package.json | 2 +- 26 files changed, 235 insertions(+), 184 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8f52faf..acf2e1e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,7 @@ # Changlog ## v1.6.0 +* new edges API (see docs) * labels for nodes * edge arrows for directed graphs diff --git a/README.md b/README.md index 75f36a5..d1c5b91 100644 --- a/README.md +++ b/README.md @@ -47,14 +47,10 @@ let graph = new ElGrapho({ ys: [0.6, 0, 0, -0.6, -0.6, -0.6, -0.6], colors: [0, 1, 1, 2, 2, 2, 2] }, - edges: [ - 0, 1, - 0, 2, - 1, 3, - 1, 4, - 2, 5, - 2, 6 - ], + edges: { + from: [0, 0, 1, 1, 2, 2], + to: [1, 2, 3, 4, 5, 6] + }, width: 800, height: 400 } @@ -63,9 +59,9 @@ let graph = new ElGrapho({ * ```container``` - DOM element that will contain the El Grapho graph. -* ```model.nodes``` - object that contains information about all of the nodes in the graph (graphs are made up of nodes and edges). Each node is defined by a position (x and y), and also a color. El Grapho x and y ranges are between -1 and 1. If x is -1, then the node position is on the very left of the viewport. If x is 0 it is in the center. And if x is 1 it is on the very right of the viewport. Colors are integer values between 0 and 7. These integer values map to the El Grapho color palette. +* ```model.nodes``` - object that defines the nodes in the graph (graphs are made up of nodes and edges). Each node is defined by a position (x and y), and also a color. El Grapho x and y ranges are between -1 and 1. If x is -1, then the node position is on the very left of the viewport. If x is 0 it is in the center. And if x is 1 it is on the very right of the viewport. Colors are integer values between 0 and 7. These integer values map to the El Grapho color palette. -* ```model.edges``` - array that defines the edges between nodes based on their indices. In the example above, the first edge begins at node ```0``` and ends at node ```1```. For non directed graphs, or bi-directional graphs, the order of the first node and second node do not matter. However, for directed graphs, the first index is the *from* node, and the second index is the *to* node. +* ```model.edges``` - object that defines the edges between nodes based on their indices. Each edge is defined by a from-node-index and a to-node-index. In the example above, the first edge begins at node ```0``` and ends at node ```1```. For non directed graphs, or bi-directional graphs, ```from``` and ```to``` are interchangeable. * ```model.width``` - number that defines the width of the El Grapho viewport in pixels. @@ -75,9 +71,13 @@ let graph = new ElGrapho({ * ```debug``` - boolean that can be used to enable debug mode. Debug mode will show the node and edge count in the bottom right corner of the visualization. The default is false. +* ```arrows``` - boolean that enables or disables edge arrows. For non directed or bi-directional graphs, you should set ```arrows``` to ```false```. The default is true. + +* ```labels``` - array of strings used to define labels for each node. If your visualization has 100 nodes, there should be 100 strings in the ```labels``` array. The default is an empty array which results in no labels. + ### Models -Determining the positions of the nodes for your graph can be alot of work! While it's nice to have the power to construct custom graph shapes, most El Grapho users will want to leverage the provided El Grapho models which will generate node positions for you. Currently, ElGrapho supports ```Tree``` and ```Cluster``` +Determining the positions of the nodes for your graph can be alot of work! While it's nice to have the power to construct custom graph shapes, most El Grapho users will want to leverage the provided El Grapho models which will generate node positions for you. Currently, ElGrapho supports ```Tree```, ```Ring```, ```Cluster```, and ```ForceDirectedGraph``` #### Tree Model @@ -86,14 +86,10 @@ let modelConfig = { nodes: { colors: [0, 1, 1, 2, 2, 3, 3] }, - edges: [ - 0, 1, - 0, 2, - 1, 3, - 1, 4, - 2, 5, - 2, 6 - ], + edges: { + from: [0, 0, 1, 1, 2, 2], + to: [1, 2, 3, 4, 5, 6] + }, width: 800, height: 400 }; @@ -104,7 +100,26 @@ let graph = new ElGrapho({ }); ``` -The ```Tree``` model takes in a nested tree structure and calculates the node positions for you by adding ```xs``` and ```ys``` to the ```nodes``` object. In this example, the root node has two children, and each of those children have two children of their own. In other words, this is a simple binary tree with two levels. +#### Ring Model + +``` +let modelConfig = { + nodes: { + colors: [0, 1, 1, 2, 2, 3, 3] + }, + edges: { + from: [0, 0, 1, 1, 2, 2], + to: [1, 2, 3, 4, 5, 6] + }, + width: 800, + height: 400 +}; + +let graph = new ElGrapho({ + container: document.getElementById('container'), + model: ElGrapho.models.Ring(modelConfig) +}); +``` #### Cluster Model @@ -113,16 +128,10 @@ let modelConfig = { nodes: { colors: [0, 1, 1, 2, 2, 2, 2, 2] }, - edges: [ - 0, 1, - 0, 2, - 0, 3, - 0, 4, - 0, 5, - 0, 6, - 0, 7, - 0, 8 - ], + edges: { + from: [0, 0, 0, 0, 0, 0, 0, 0], + to: [1, 2, 3, 4, 5, 6, 7, 8] + }, width: 800, height: 400 }; @@ -133,11 +142,36 @@ let graph = new ElGrapho({ }); ``` -The ```Cluster``` model takes in an array of colors, and an array of edges. If a single color is used for all of the nodes, ElGrapho will generate a single centered cluster. If there are several colors used, ElGrapho will render distinct clusters. Because Cluster models can be generated in ```O(n)``` time, i.e. linear time, they are very fast to construct compared to other models such as force directed graphs which are polynomial in time. +The Cluster model clusters nodes by color. If a single color is used for all of the nodes, ElGrapho will generate a single centered cluster. If there are several colors used, ElGrapho will render distinct clusters. Because Cluster models can be generated in ```O(n)``` time, i.e. linear time, they are very fast to construct compared to other models such as force directed graphs which are polynomial in time. + +#### ForceDirectedGraph Model + +``` +let modelConfig = { + nodes: { + colors: [0, 1, 1, 2, 2, 2, 2, 2] + }, + edges: { + from: [0, 0, 0, 0, 0, 0, 0, 0], + to: [1, 2, 3, 4, 5, 6, 7, 8] + }, + width: 800, + height: 400 +}; + +let graph = new ElGrapho({ + container: document.getElementById('container'), + model: ElGrapho.models.ForceDirectedGraph(modelConfig) +}); +``` + +The ```ForceDirectedGraph``` uses a physics simulator to repel and attract nodes in order to generate natural layouts. Be warned that force directed graphs take O(n^2) time, which means they may not be appropriate for generating models on the client with lots of nodes. If it's possible to build your models in advance, it's a good idea to build the force directed graph model on the server and then cache it. If you require your models to be constructed at execution time, and the number of nodes is very high, you may consider using an O(n) model such as ```Cluster``` + +The ```ForceDirectedGraph``` model accepts a ```steps``` property from the modelConfig which can be used to define the accuracy of the result. This is because force directed graphs require multiple passes to obtain the final result. The default is 10. Lowering this number will result in faster model construction but less accurate results. Increasing this number will result in slower model construction but more accurate results. -### Model Polymorphism +## Model Polymorphism -You may have noticed that the model config schema is identical for ```Tree``` and ```Cluster```. In fact, all El Grapho models have the exact same schema. Thus, El Grapho visualizations are polymorphic, meaning you can pass the same data structure into different models and get different, but correct, graph visualizations. Pretty cool! +You may have noticed that the model config schema is identical for all models. As a result, El Grapho visualizations are polymorphic, meaning you can pass the same data structure into different models and get different graph visualizations. Pretty cool! ## Server Side Model Generation diff --git a/engine/dist/ElGrapho.js b/engine/dist/ElGrapho.js index cb6e314..38efb6b 100644 --- a/engine/dist/ElGrapho.js +++ b/engine/dist/ElGrapho.js @@ -2263,7 +2263,7 @@ const VertexBridge = { let colors = new Float32Array(nodes.colors); // one edge is defined by two elements (from and to). each edge requires 2 triangles. Each triangle has 3 positions, with an x and y for each - let numEdges = edges.length / 2; + let numEdges = edges.from.length; let numArrows = showArrows ? numEdges : 0; let trianglePositions = new Float32Array(numEdges * 12 + numArrows * 6); @@ -2274,9 +2274,9 @@ const VertexBridge = { let triangleNormalsIndex = 0; let triangleColorsIndex = 0; - for (let n=0; n=0;r--)if((e=o[r].hit.getIntersection(n,t))>=0)return e;return-1},getIndex:function(){var n,t=o.viewports,r=t.length,e=0;for(e=0;e0&&(t[n]=t[n-1],t[n-1]=this),this},moveToTop:function(){var n=this.getIndex(),t=this.viewport.layers;t.splice(n,1),t.push(this)},moveToBottom:function(){var n=this.getIndex(),t=this.viewport.layers;return t.splice(n,1),t.unshift(this),this},getIndex:function(){var n,t=this.viewport.layers,r=t.length,e=0;for(e=0;e>16,(65280&n)>>8,255&n]}},function(i){"use strict";void 0===(e=function(){return o}.call(t,r,t,n))||(n.exports=e)}()},"./engine/dist/icons/boxZoomIcon.svg.js":function(n,t){n.exports='\n\n\x3c!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --\x3e\n\n\n\n \n \n \n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n'},"./engine/dist/icons/moveIcon.svg.js":function(n,t){n.exports='\n\n\n\n \n \n \n\n'},"./engine/dist/icons/resetIcon.svg.js":function(n,t){n.exports='\n\n\x3c!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --\x3e\n\n\n \n \n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n'},"./engine/dist/icons/selectIcon.svg.js":function(n,t){n.exports='\n\n\x3c!-- Generator: Adobe Illustrator 17.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --\x3e\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n'},"./engine/dist/icons/zoomInIcon.svg.js":function(n,t){n.exports='\n\n\x3c!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --\x3e\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n'},"./engine/dist/icons/zoomOutIcon.svg.js":function(n,t){n.exports='\n\n\x3c!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --\x3e\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n'},"./engine/dist/shaders/hitPoint.vert.js":function(n,t){n.exports="attribute vec4 aVertexPosition;\n\nattribute float aVertexIndex;\n\nuniform mat4 uModelViewMatrix;\nuniform mat4 uProjectionMatrix;\nuniform bool magicZoom;\nuniform float nodeSize;\n\nvarying vec4 vVertexColor;\n\n// unsigned rIntValue = (u_color / 256 / 256) % 256;\n// unsigned gIntValue = (u_color / 256 ) % 256;\n// unsigned bIntValue = (u_color ) % 256;\n\n// https://stackoverflow.com/questions/6893302/decode-rgb-value-to-single-float-without-bit-shift-in-glsl\n// had to flip r and b to match concrete notation\nvec3 unpackColor(float f) {\n vec3 color;\n color.r = floor(f / 256.0 / 256.0);\n color.g = floor((f - color.r * 256.0 * 256.0) / 256.0);\n color.b = floor(f - color.r * 256.0 * 256.0 - color.g * 256.0);\n // now we have a vec3 with the 3 components in range [0..255]. Let's normalize it!\n return color / 255.0;\n}\n\nvoid main() {\n gl_Position = uProjectionMatrix * uModelViewMatrix * aVertexPosition;\n\n if (magicZoom) {\n gl_PointSize = nodeSize; \n }\n else {\n float size = nodeSize * min(length(uModelViewMatrix[0]), length(uModelViewMatrix[1]));\n gl_PointSize = max(size, 5.0);\n }\n\n vVertexColor = vec4(unpackColor(aVertexIndex), 1.0);\n}"},"./engine/dist/shaders/point.frag.js":function(n,t){n.exports="//https://www.desultoryquest.com/blog/drawing-anti-aliased-circular-points-using-opengl-slash-webgl/\nprecision mediump float;\nvarying vec4 vVertexColor;\n\nvoid main(void) {\n float r = 0.0, delta = 0.0, alpha = 1.0;\n vec2 cxy = 2.0 * gl_PointCoord - 1.0;\n r = dot(cxy, cxy);\n if (r > 1.0) {\n discard;\n }\n gl_FragColor = vVertexColor * (alpha);\n}"},"./engine/dist/shaders/point.vert.js":function(n,t){n.exports="attribute vec4 aVertexPosition;\nattribute float aVertexColor;\nattribute float aVertexFocused;\n\nuniform mat4 uModelViewMatrix;\nuniform mat4 uProjectionMatrix;\nuniform bool magicZoom;\nuniform float nodeSize;\n\nvarying vec4 vVertexColor;\n\n// const PALETTE_HEX = [\n// '3366CC',\n// 'DC3912',\n// 'FF9900',\n// '109618',\n// '990099',\n// '3B3EAC',\n// '0099C6',\n// 'DD4477',\n// '66AA00',\n// 'B82E2E',\n// '316395',\n// '994499',\n// '22AA99',\n// 'AAAA11',\n// '6633CC',\n// 'E67300',\n// '8B0707',\n// '329262',\n// '5574A6',\n// '3B3EAC'\n// ];\n\nvoid main() {\n gl_Position = uProjectionMatrix * uModelViewMatrix * aVertexPosition;\n\n if (magicZoom) {\n gl_PointSize = nodeSize; \n }\n else {\n gl_PointSize = nodeSize * min(length(uModelViewMatrix[0]), length(uModelViewMatrix[1]));\n }\n\n // normal color\n if (aVertexFocused == 0.0) {\n if (aVertexColor == 0.0) {\n vVertexColor = vec4(51.0/255.0, 102.0/255.0, 204.0/255.0, 1.0); // 3366CC\n }\n else if (aVertexColor == 1.0) {\n vVertexColor = vec4(220.0/255.0, 57.0/255.0, 18.0/255.0, 1.0); // DC3912\n }\n else if (aVertexColor == 2.0) {\n vVertexColor = vec4(255.0/255.0, 153.0/255.0, 0.0/255.0, 1.0); // FF9900\n }\n else if (aVertexColor == 3.0) {\n vVertexColor = vec4(16.0/255.0, 150.0/255.0, 24.0/255.0, 1.0); // 109618\n }\n else if (aVertexColor == 4.0) {\n vVertexColor = vec4(153.0/255.0, 0.0/255.0, 153.0/255.0, 1.0); // 990099\n }\n else if (aVertexColor == 5.0) {\n vVertexColor = vec4(59.0/255.0, 62.0/255.0, 172.0/255.0, 1.0); // 3B3EAC\n }\n else if (aVertexColor == 6.0) {\n vVertexColor = vec4(0.0/255.0, 153.0/255.0, 198.0/255.0, 1.0); // 0099C6\n }\n else if (aVertexColor == 7.0) {\n vVertexColor = vec4(221.0/255.0, 68.0/255.0, 119.0/255.0, 1.0); // DD4477\n }\n }\n // focused color\n else {\n // pink for now\n vVertexColor = vec4(255.0/255.0, 105.0/255.0, 147.0/255.0, 1.0); \n }\n}"},"./engine/dist/shaders/pointStroke.vert.js":function(n,t){n.exports="attribute vec4 aVertexPosition;\n\nuniform mat4 uModelViewMatrix;\nuniform mat4 uProjectionMatrix;\nuniform bool magicZoom;\nuniform float nodeSize;\n\nvarying vec4 vVertexColor;\n\nconst float POINT_STROKE_WIDTH_FACTOR = 1.5;\n\nvoid main() {\n gl_Position = uProjectionMatrix * uModelViewMatrix * aVertexPosition;\n\n if (magicZoom) {\n gl_PointSize = nodeSize * POINT_STROKE_WIDTH_FACTOR; \n }\n else {\n gl_PointSize = nodeSize * min(length(uModelViewMatrix[0]), length(uModelViewMatrix[1])) * POINT_STROKE_WIDTH_FACTOR;\n }\n\n\n vVertexColor = vec4(1.0, 1.0, 1.0, 1.0); \n\n}"},"./engine/dist/shaders/triangle.frag.js":function(n,t){n.exports="// use lowp for solid colors to improve perf\n// https://stackoverflow.com/questions/13780609/what-does-precision-mediump-float-mean\nprecision mediump float;\nvarying vec4 vVertexColor;\n\nvoid main(void) {\n gl_FragColor = vVertexColor;\n}"},"./engine/dist/shaders/triangle.vert.js":function(n,t){n.exports="attribute vec4 aVertexPosition;\nattribute vec4 normal;\nattribute float aVertexColor;\n\nuniform mat4 uModelViewMatrix;\nuniform mat4 uProjectionMatrix;\nuniform bool magicZoom;\nuniform float nodeSize;\n\nfloat MAX_NODE_SIZE = 16.0;\nconst float PI = 3.1415926535897932384626433832795;\n\nvarying vec4 vVertexColor;\n\nvec2 rotate(vec2 v, float a) {\n\tfloat s = sin(a);\n\tfloat c = cos(a);\n\tmat2 m = mat2(c, -s, s, c);\n\treturn m * v;\n}\n\n// https://mattdesl.svbtle.com/drawing-lines-is-hard\n// https://github.com/mattdesl/three-line-2d/blob/master/shaders/basic.js\nvoid main() {\n float zoomX = length(uModelViewMatrix[0]);\n float zoomY = length(uModelViewMatrix[1]);\n // vec2 standardZoomVector = normalize(vec2(1.0, 0.0));\n // vec2 zoomVector = normalize(vec2(zoomX, zoomY));\n // float zoomAngle = dot(standardZoomVector, zoomVector);\n // vec2 vec2Normal = vec2(normal.xy);\n // vec2 rotatedNormal = rotate(vec2Normal, zoomAngle);\n // vec4 newNormal = vec4(rotatedNormal.x, rotatedNormal.y, 0.0, 0.0);\n\n vec4 newNormal = vec4(normal.x, normal.y, 0.0, 0.0);\n\n if (magicZoom) {\n gl_Position = uProjectionMatrix * ((uModelViewMatrix * aVertexPosition) + newNormal);\n }\n else {\n newNormal.x = newNormal.x * zoomX * nodeSize / MAX_NODE_SIZE;\n newNormal.y = newNormal.y * zoomY * nodeSize / MAX_NODE_SIZE;\n gl_Position = uProjectionMatrix * ((uModelViewMatrix * aVertexPosition) + newNormal);\n }\n \n\n if (aVertexColor == 0.0) {\n vVertexColor = vec4(51.0/255.0, 102.0/255.0, 204.0/255.0, 1.0); // 3366CC\n }\n else if (aVertexColor == 1.0) {\n vVertexColor = vec4(220.0/255.0, 57.0/255.0, 18.0/255.0, 1.0); // DC3912\n }\n else if (aVertexColor == 2.0) {\n vVertexColor = vec4(255.0/255.0, 153.0/255.0, 0.0/255.0, 1.0); // FF9900\n }\n else if (aVertexColor == 3.0) {\n vVertexColor = vec4(16.0/255.0, 150.0/255.0, 24.0/255.0, 1.0); // 109618\n }\n else if (aVertexColor == 4.0) {\n vVertexColor = vec4(153.0/255.0, 0.0/255.0, 153.0/255.0, 1.0); // 990099\n }\n else if (aVertexColor == 5.0) {\n vVertexColor = vec4(59.0/255.0, 62.0/255.0, 172.0/255.0, 1.0); // 3B3EAC\n }\n else if (aVertexColor == 6.0) {\n vVertexColor = vec4(0.0/255.0, 153.0/255.0, 198.0/255.0, 1.0); // 0099C6\n }\n else if (aVertexColor == 7.0) {\n vVertexColor = vec4(221.0/255.0, 68.0/255.0, 119.0/255.0, 1.0); // DD4477\n }\n}"},"./engine/dist/styles/ElGrapho.min.css.js":function(n,t){n.exports=".el-grapho-tooltip{position:fixed;background-color:white;pointer-events:none;padding:10px;border:1px solid #333;border-radius:3px;font-family:verdana;font-size:12px;user-select:none}.el-grapho-controls{position:absolute;right:0;top:5px;opacity:0;transition:opacity .3s ease-in-out}.el-grapho-controls button{background:white;padding:5px;cursor:pointer;outline:0;border:2px solid black;border-radius:3px;margin-right:5px}.el-grapho-wrapper:hover .el-grapho-controls{opacity:1}.el-grapho-count{position:absolute;bottom:5px;right:5px;pointer-events:none;font-family:monospace;background-color:white;border-radius:3px;padding:3px;opacity:.9}.el-grapho-count::selection{background:transparent}.el-grapho-box-zoom-component{position:fixed;border:1px solid #119fe0;background-color:rgba(17,159,224,0.1);pointer-events:none}.el-grapho-loading-component{width:100%;height:100%;background-color:rgba(255,255,255,0.9);position:absolute;top:0;opacity:0;transition:opacity .3s ease-in-out;pointer-events:none}.el-grapho-loading .el-grapho-loading-component{opacity:1}.spinner{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.spinner>div{width:18px;height:18px;background-color:#333;border-radius:100%;display:inline-block;-webkit-animation:sk-bouncedelay 1.4s infinite ease-in-out both;animation:sk-bouncedelay 1.4s infinite ease-in-out both}.spinner .bounce1{-webkit-animation-delay:-0.32s;animation-delay:-0.32s}.spinner .bounce2{-webkit-animation-delay:-0.16s;animation-delay:-0.16s}@-webkit-keyframes sk-bouncedelay{0%,80%,100%{-webkit-transform:scale(0)}40%{-webkit-transform:scale(1)}}@keyframes sk-bouncedelay{0%,80%,100%{-webkit-transform:scale(0);transform:scale(0)}40%{-webkit-transform:scale(1);transform:scale(1)}}.el-grapho-wrapper{display:inline-block;position:relative;background-color:white;overflow:hidden}.el-grapho-wrapper.el-grapho-select-interaction-mode{cursor:default}.el-grapho-wrapper.el-grapho-select-interaction-mode .el-grapho-controls .el-grapho-select-control{border-color:#119fe0}.el-grapho-wrapper.el-grapho-select-interaction-mode .el-grapho-controls .el-grapho-select-control path,.el-grapho-wrapper.el-grapho-select-interaction-mode .el-grapho-controls .el-grapho-select-control polygon{fill:#119fe0}.el-grapho-wrapper.el-grapho-pan-interaction-mode{cursor:move}.el-grapho-wrapper.el-grapho-pan-interaction-mode .el-grapho-controls .el-grapho-pan-control{border-color:#119fe0}.el-grapho-wrapper.el-grapho-pan-interaction-mode .el-grapho-controls .el-grapho-pan-control path,.el-grapho-wrapper.el-grapho-pan-interaction-mode .el-grapho-controls .el-grapho-pan-control polygon{fill:#119fe0}.el-grapho-wrapper.el-grapho-box-zoom-interaction-mode{cursor:zoom-in}.el-grapho-wrapper.el-grapho-box-zoom-interaction-mode .el-grapho-controls .el-grapho-box-zoom-control{border-color:#119fe0}.el-grapho-wrapper.el-grapho-box-zoom-interaction-mode .el-grapho-controls .el-grapho-box-zoom-control path,.el-grapho-wrapper.el-grapho-box-zoom-interaction-mode .el-grapho-controls .el-grapho-box-zoom-control polygon{fill:#119fe0}\n"},"./engine/src/Color.js":function(n,t){const r={rgbToInt:function(n){return(n[0]<<16)+(n[1]<<8)+n[2]},intToRGB:function(n){return[(16711680&n)>>16,(65280&n)>>8,255&n]},hexToRgb:function(n){var t=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(n);return[parseInt(t[1],16),parseInt(t[2],16),parseInt(t[3],16)]}};n.exports=r},"./engine/src/Dom.js":function(n,t){const r={create:function(n){let t=document.createElement("div");return t.className=n,t},closest:function(n,t){if(!document.documentElement.contains(n))return null;do{if(n.matches(t))return n;n=n.parentElement||n.parentNode}while(null!==n&&1===n.nodeType);return null}};n.exports=r},"./engine/src/EasingFunctions.js":function(n,t){n.exports={linear:function(n){return n},easeInQuad:function(n){return n*n},easeOutQuad:function(n){return n*(2-n)},easeInOutQuad:function(n){return n<.5?2*n*n:(4-2*n)*n-1},easeInCubic:function(n){return n*n*n},easeOutCubic:function(n){return--n*n*n+1},easeInOutCubic:function(n){return n<.5?4*n*n*n:(n-1)*(2*n-2)*(2*n-2)+1},easeInQuart:function(n){return n*n*n*n},easeOutQuart:function(n){return 1- --n*n*n*n},easeInOutQuart:function(n){return n<.5?8*n*n*n*n:1-8*--n*n*n*n},easeInQuint:function(n){return n*n*n*n*n},easeOutQuint:function(n){return 1+--n*n*n*n*n},easeInOutQuint:function(n){return n<.5?16*n*n*n*n*n:1+16*--n*n*n*n*n}}},"./engine/src/ElGrapho.js":function(n,t,r){const e=r("./engine/src/UUID.js"),o=r("./engine/src/WebGL.js"),i=r("./engine/src/Profiler.js"),u=r("./engine/src/ElGraphoCollection.js"),a=r("./engine/src/components/Controls/Controls.js"),c=r("./engine/src/components/Count/Count.js"),s=r("./engine/src/Events.js"),f=r("../../concrete/build/concrete.js"),l=r("./node_modules/lodash/lodash.js"),h=r("./engine/src/Color.js"),d=r("./engine/src/Theme.js"),p=r("./engine/src/components/Tooltip/Tooltip.js"),g=r("./engine/src/formatters/NumberFormatter.js"),v=r("./engine/src/VertexBridge.js"),m=r("./engine/src/Enums.js"),x=r("./engine/src/components/BoxZoom/BoxZoom.js"),_=r("./engine/src/models/Tree.js"),b=r("./engine/src/models/Cluster.js"),y=r("./engine/src/Dom.js"),M=r("./engine/src/components/Loading/Loading.js"),w=r("./engine/src/models/Ring.js"),A=r("./engine/src/models/ForceDirectedGraph.js"),E=r("./engine/src/Labels.js");let P=function(n){this.container=n.container||document.createElement("div"),this.id=e.generate(),this.dirty=!0,this.hitDirty=!0,this.zoomX=1,this.zoomY=1,this.panX=0,this.panY=0,this.events=new s,this.width=n.model.width,this.height=n.model.height,this.nodeSize=n.nodeSize||16,this.animations=[],this.wrapper=document.createElement("div"),this.wrapper.className="el-grapho-wrapper",this.wrapper.style.width=this.width+"px",this.wrapper.style.height=this.height+"px",this.container.appendChild(this.wrapper),this.animations=void 0===n.animations||n.animations,this.setInteractionMode(m.interactionMode.SELECT),this.panStart=null,this.idle=!0,this.debug=void 0!==n.debug&&n.debug;let t=void 0===n.arrows||n.arrows;this.tooltipTemplate=function(n,t){t.innerHTML=P.NumberFormatter.addCommas(n)},this.hoveredDataIndex=-1;let r=this.viewport=new f.Viewport({container:this.wrapper,width:this.width,height:this.height}),i=new f.Layer({contextType:"webgl"}),a=this.labelsLayer=new f.Layer({contextType:"2d"});r.add(i),r.add(a);let l=this.webgl=new o({layer:i});u.initialized||u.init();let h=this.vertices=v.modelToVertices(n.model,this.width,this.height,t),d=h.points.positions.length/2;h.points.focused=new Float32Array(d),l.initBuffers(h),this.debug&&new c({container:this.wrapper,vertices:h}),this.initComponents(),this.labelStrs=n.labels||[],this.labels=new E,this.listen(),u.graphs.push(this)};P.prototype={initComponents:function(){this.controls=new a({container:this.wrapper,graph:this}),this.loading=new M({container:this.wrapper})},renderLabels:function(){let n=this;this.labels.clear();let t=this.vertices.points.positions;this.labelStrs.forEach(function(r,e){let o=2*e;n.labels.addLabel(r,t[o],t[o+1])});let r=this.labelsLayer.scene.context;r.save(),r.translate(this.width/2,this.height/2),r.textAlign="center",r.fillStyle="black",r.strokeStyle="white",r.lineWidth=4,this.labels.labelsAdded.forEach(function(t){let e=t.x*n.zoomX+n.panX,o=-1*t.y*n.zoomY-n.panY-10;r.strokeText(t.str,e,o),r.fillText(t.str,e,o)}),r.restore()},getMousePosition(n){let t=this.wrapper.getBoundingClientRect();return{x:n.clientX-t.left,y:n.clientY-t.top}},listen:function(){let n=this,t=this.viewport;this.on("zoom-in",function(){n.zoomIn()}),this.on("zoom-out",function(){n.zoomOut()}),this.on("reset",function(){n.reset()}),this.on("select",function(){n.setInteractionMode(m.interactionMode.SELECT)}),this.on("pan",function(){n.setInteractionMode(m.interactionMode.PAN)}),this.on("box-zoom",function(){n.setInteractionMode(m.interactionMode.BOX_ZOOM)}),document.addEventListener("mousedown",function(t){if(!y.closest(t.target,".el-grapho-controls")&&n.interactionMode===m.interactionMode.BOX_ZOOM){let r=n.getMousePosition(t);n.zoomBoxAnchor={x:r.x,y:r.y},x.create(t.clientX,t.clientY)}}),t.container.addEventListener("mousedown",function(t){if(!y.closest(t.target,".el-grapho-controls")&&n.interactionMode===m.interactionMode.PAN){let r=n.getMousePosition(t);n.panStart=r,p.hide()}}),document.addEventListener("mousemove",function(t){n.interactionMode===m.interactionMode.BOX_ZOOM&&x.update(t.clientX,t.clientY)}),t.container.addEventListener("mousemove",l.throttle(function(r){let e=n.getMousePosition(r),o=t.getIntersection(e.x,e.y);if(n.interactionMode===m.interactionMode.PAN&&n.panStart){let r={x:e.x-n.panStart.x,y:e.y-n.panStart.y};t.scene.canvas.style.marginLeft=r.x+"px",t.scene.canvas.style.marginTop=r.y+"px"}n.panStart||n.zoomBoxAnchor||(-1===o?p.hide():p.render(o,r.clientX,r.clientY,n.tooltipTemplate),o!==n.hoveredDataIndex&&(n.hoveredDataIndex>-1&&(n.vertices.points.focused[n.hoveredDataIndex]=0),n.vertices.points.focused[o]=1,n.webgl.initBuffers(n.vertices),n.dirty=!0,-1!==n.hoveredDataIndex&&n.fire(m.events.NODE_MOUSEOUT,{dataIndex:n.hoveredDataIndex}),n.hoveredDataIndex=o,-1!==n.hoveredDataIndex&&n.fire(m.events.NODE_MOUSEOVER,{dataIndex:n.hoveredDataIndex})))},17)),document.addEventListener("mouseup",function(r){if(!y.closest(r.target,".el-grapho-controls")&&n.interactionMode===m.interactionMode.BOX_ZOOM){if(!n.zoomBoxAnchor)return;let e,o,i,u,a,c,s=n.getMousePosition(r);s.x>n.zoomBoxAnchor.x&&s.y>n.zoomBoxAnchor.y?(i=s.x-n.zoomBoxAnchor.x,u=s.y-n.zoomBoxAnchor.y,e=n.zoomBoxAnchor.x,o=n.zoomBoxAnchor.y):s.x>n.zoomBoxAnchor.x&&s.y<=n.zoomBoxAnchor.y?(i=s.x-n.zoomBoxAnchor.x,u=n.zoomBoxAnchor.y-s.y,e=n.zoomBoxAnchor.x,o=s.y):s.x<=n.zoomBoxAnchor.x&&s.y<=n.zoomBoxAnchor.y?(i=n.zoomBoxAnchor.x-s.x,u=n.zoomBoxAnchor.y-s.y,e=s.x,o=s.y):s.x<=n.zoomBoxAnchor.x&&s.y>n.zoomBoxAnchor.y&&(i=n.zoomBoxAnchor.x-s.x,u=s.y-n.zoomBoxAnchor.y,e=s.x,o=n.zoomBoxAnchor.y);let f=t.width,l=t.height;i<2||u<2?(a=2,c=2,i=0,u=0,e=s.x,o=s.y):(a=f/i,c=l/u);let h=l/2,d=(f/2-(e+i/2))*n.zoomX,p=(o+u/2-h)*n.zoomY;n.zoomToPoint(d,p,a,c),x.destroy(),n.zoomBoxAnchor=null}}),t.container.addEventListener("mouseup",function(r){if(!y.closest(r.target,".el-grapho-controls")){if(!n.panStart&&!n.zoomBoxAnchor){let e=n.getMousePosition(r),o=t.getIntersection(e.x,e.y);-1!==o&&n.fire(m.events.NODE_CLICK,{dataIndex:o})}if(n.interactionMode===m.interactionMode.PAN){let e=n.getMousePosition(r),o={x:e.x-n.panStart.x,y:e.y-n.panStart.y};n.panX+=o.x,n.panY-=o.y,n.panStart=null,t.scene.canvas.style.marginLeft=0,t.scene.canvas.style.marginTop=0,n.dirty=!0,n.hitDirty=!0}}}),t.container.addEventListener("mouseout",l.throttle(function(){p.hide()}))},setInteractionMode:function(n){this.interactionMode=n,this.wrapper.className="el-grapho-wrapper el-grapho-"+n+"-interaction-mode"},zoomToPoint:function(n,t,r,e){if(this.animations){this.animations=[];let o=this;this.animations.push({startVal:o.zoomX,endVal:o.zoomX*r,startTime:(new Date).getTime(),endTime:(new Date).getTime()+300,prop:"zoomX"}),this.animations.push({startVal:o.zoomY,endVal:o.zoomY*e,startTime:(new Date).getTime(),endTime:(new Date).getTime()+300,prop:"zoomY"}),this.animations.push({startVal:o.panX,endVal:(o.panX+n/o.zoomX)*r,startTime:(new Date).getTime(),endTime:(new Date).getTime()+300,prop:"panX"}),this.animations.push({startVal:o.panY,endVal:(o.panY+t/o.zoomY)*e,startTime:(new Date).getTime(),endTime:(new Date).getTime()+300,prop:"panY"}),this.dirty=!0}else this.panX=(this.panX+n/this.zoomX)*r,this.panY=(this.panY+t/this.zoomY)*e,this.zoomX=this.zoomX*r,this.zoomY=this.zoomY*e,this.dirty=!0,this.hitDirty=!0},zoomIn:function(){this.zoomToPoint(0,0,2,2)},zoomOut:function(){this.zoomToPoint(0,0,.5,.5)},reset:function(){if(this.animations){this.animations=[];let n=this;this.animations.push({startVal:n.zoomX,endVal:1,startTime:(new Date).getTime(),endTime:(new Date).getTime()+300,prop:"zoomX"}),this.animations.push({startVal:n.zoomY,endVal:1,startTime:(new Date).getTime(),endTime:(new Date).getTime()+300,prop:"zoomY"}),this.animations.push({startVal:n.panX,endVal:0,startTime:(new Date).getTime(),endTime:(new Date).getTime()+300,prop:"panX"}),this.animations.push({startVal:n.panY,endVal:0,startTime:(new Date).getTime(),endTime:(new Date).getTime()+300,prop:"panY"}),this.dirty=!0}else this.zoomX=1,this.zoomY=1,this.panX=0,this.panY=0,this.dirty=!0,this.hitDirty=!0},on:function(n,t){this.events.on(n,t)},fire:function(n,t){this.events.fire(n,t)},showLoading:function(){this.wrapper.classList.add("el-grapho-loading")},hideLoading:function(){this.wrapper.classList.remove("el-grapho-loading")}},P.Theme=d,P.Color=h,P.Profiler=i,P.NumberFormatter=g,P.models={Tree:_,Cluster:b,Ring:w,ForceDirectedGraph:A},n.exports=P},"./engine/src/ElGraphoCollection.js":function(n,t,r){const e=r("./engine/src/EasingFunctions.js"),o=r("./engine/dist/styles/ElGrapho.min.css.js"),i=r("./engine/src/Enums.js");let u={graphs:[],initialized:!1,init:function(){u.injectStyles(),u.executeFrame()},injectStyles:function(){let n=document.getElementsByTagName("head")[0],t=document.createElement("style");t.setAttribute("type","text/css"),t.styleSheet?t.styleSheet.cssText=o:t.appendChild(document.createTextNode(o)),n.appendChild(t)},executeFrame:function(){let n=(new Date).getTime();u.graphs.forEach(function(t){let r,o,u=0,a=!0;for(;u=16?(r=!0,o=16):(r=!1,o=t.nodeSize),t.dirty&&(a=!1,t.webgl.drawScene(t.panX,t.panY,t.zoomX,t.zoomY,r,o),t.labelsLayer.scene.clear(),r&&t.renderLabels(),t.viewport.render(),t.dirty=!1),t.hitDirty&&(a=!1,t.webgl.drawHit(t.panX,t.panY,t.zoomX,t.zoomY,r,o),t.hitDirty=!1),a&&!t.idle&&t.fire(i.events.IDLE),t.idle=a}),requestAnimationFrame(u.executeFrame)}};n.exports=u,window&&(window.ElGraphoCollection=u)},"./engine/src/Enums.js":function(n,t){n.exports={events:{IDLE:"idle",NODE_MOUSEOVER:"node-mouseover",NODE_MOUSEOUT:"node-mouseout",NODE_CLICK:"node-click"},interactionMode:{SELECT:"select",PAN:"pan",BOX_ZOOM:"box-zoom"}}},"./engine/src/Events.js":function(n,t){let r=function(){};r.prototype={funcs:{},on:function(n,t){this.funcs[n]||(this.funcs[n]=[]),this.funcs[n].push(t)},fire:function(n,t){this.funcs[n]&&this.funcs[n].forEach(function(n){n(t)})}},n.exports=r},"./engine/src/Labels.js":function(n,t){let r=function(){this.labelsAdded=[]};r.prototype={clear:function(){this.labelsAdded=[]},addLabel:function(n,t,r){this.labelsAdded.push({str:n,x:t,y:r,width:100,height:10})}},n.exports=r},"./engine/src/Profiler.js":function(n,t){let r=function(n,t){return function(){let e=(new Date).getTime(),o=t.apply(this,arguments),i=(new Date).getTime()-e;return r.enabled&&console.log(n+"() took "+i+"ms"),o}};r.enabled=!1,n.exports=r},"./engine/src/Theme.js":function(n,t,r){const e=r("./engine/src/Color.js");let o=[];["3366CC","DC3912","FF9900","109618","990099","3B3EAC","0099C6","DD4477","66AA00","B82E2E","316395","994499","22AA99","AAAA11","6633CC","E67300","8B0707","329262","5574A6","3B3EAC"].forEach(function(n){o=o.concat(e.hexToRgb(n))});const i={palette:o};n.exports=i},"./engine/src/UUID.js":function(n,t){let r=0,e={generate:function(){return r++}};n.exports=e},"./engine/src/VertexBridge.js":function(n,t,r){const e=r("./engine/src/Profiler.js"),o=r("./node_modules/gl-matrix/lib/gl-matrix.js").vec2,i={modelToVertices:e("VertexBridges.modelToVertices",function(n,t,r,e){let i=n.nodes,u=n.edges,a=new Float32Array(2*i.xs.length),c=t/2,s=r/2;i.xs=i.xs.map(function(n){return n*c}),i.ys=i.ys.map(function(n){return n*s});let f=0;for(let n=0;no.anchorX?(r=o.anchorX,e=n):(r=n,e=o.anchorX),t>o.anchorY?(i=o.anchorY,u=t):(i=t,u=o.anchorY);let a=e-r,c=u-i;o.el.style.left=Math.floor(r)+"px",o.el.style.top=Math.floor(i)+"px",o.el.style.width=Math.floor(a)+"px",o.el.style.height=Math.floor(c)+"px"}},destroy:function(){let n=document.querySelector(".el-grapho-box-zoom-component");n&&n.remove(),o.active=!1}};n.exports=o},"./engine/src/components/Controls/Controls.js":function(n,t,r){const e=r("./engine/dist/icons/zoomInIcon.svg.js"),o=r("./engine/dist/icons/zoomOutIcon.svg.js"),i=r("./engine/dist/icons/moveIcon.svg.js"),u=r("./engine/dist/icons/selectIcon.svg.js"),a=r("./engine/dist/icons/boxZoomIcon.svg.js"),c=r("./engine/dist/icons/resetIcon.svg.js"),s=function(n){this.graph=n.graph,this.container=n.container,this.wrapper=document.createElement("div"),this.wrapper.className="el-grapho-controls",this.container.appendChild(this.wrapper),this.selectButton=this.addButton({icon:u,evtName:"select"}),this.boxZoomIcon=this.addButton({icon:a,evtName:"box-zoom"}),this.panButton=this.addButton({icon:i,evtName:"pan"}),this.resetButton=this.addButton({icon:c,evtName:"reset"}),this.zoomInButton=this.addButton({icon:e,evtName:"zoom-in"}),this.zoomOutButton=this.addButton({icon:o,evtName:"zoom-out"})};s.prototype={addButton:function(n){let t=document.createElement("button");t.className="el-grapho-"+n.evtName+"-control";let r=this.graph;return t.innerHTML=n.icon,t.addEventListener("click",function(){r.fire(n.evtName)}),this.wrapper.appendChild(t),t}},n.exports=s},"./engine/src/components/Count/Count.js":function(n,t,r){const e=r("./engine/src/formatters/NumberFormatter.js"),o=function(n){let t=this.wrapper=document.createElement("span"),r=n.container,o=n.vertices,i=o.points?o.points.positions.length/2:0,u=o.triangles?o.triangles.positions.length/6:0;t.innerHTML=e.addCommas(i)+" points + "+e.addCommas(u)+" triangles",t.className="el-grapho-count",r.appendChild(t)};o.prototype={},n.exports=o},"./engine/src/components/Loading/Loading.js":function(n,t,r){const e=r("./engine/src/Dom.js"),o=function(n){this.container=n.container,this.wrapper=e.create("el-grapho-loading-component");this.wrapper.innerHTML='\n
\n
\n
\n
\n
\n ',this.container.appendChild(this.wrapper)};o.prototype={},n.exports=o},"./engine/src/components/Tooltip/Tooltip.js":function(n,t,r){const e=r("./engine/src/Dom.js"),o={DEFAULT_TEMPLATE:function(n){this.wrapper.innerHTML=n},initialized:!1,init:function(){o.wrapper=e.create("el-grapho-tooltip"),document.body.appendChild(this.wrapper),o.initialized=!0},render:function(n,t,r,e){o.initialized||o.init(),o.wrapper.style.display="inline-block",o.wrapper.style.left=t+"px",o.wrapper.style.bottom=window.innerHeight-r+10+"px",e(n,this.wrapper)},hide:function(){o.initialized||o.init(),o.wrapper.style.display="none"}};n.exports=o},"./engine/src/formatters/NumberFormatter.js":function(n,t){const r={addCommas:function(n){return n.toString().replace(/\B(?=(\d{3})+(?!\d))/g,",")},roundToNearestDecimalPlace:function(n,t){let r=Math.pow(10,t);return Math.round(n*r)/r}};n.exports=r},"./engine/src/models/Cluster.js":function(n,t){n.exports=function(n){let t,r,e=n.width,o=n.height;e>o?(t=o/e,r=1):(t=1,r=e/o);let i={nodes:{xs:[],ys:[],colors:n.nodes.colors.slice()},edges:n.edges.slice(),width:e,height:o},u={};n.nodes.colors.forEach(function(n,t){void 0===u[n]&&(u[n]=[]),u[n].push(t)});let a,c=Object.keys(u).length,s=0,f=0;for(a in u)f=Math.max(f,u[a].length);let l=1/Math.sqrt(f);for(a in u){let n,e,o=u[a],f=-2*Math.PI*s/c+Math.PI/2;1===c?(n=0,e=0):(n=Math.cos(f)*t,e=Math.sin(f)*r);let h=l,d=l/h,p=0;o.forEach(function(o){let u=Math.cos(p)*h*t,a=Math.sin(p)*h*r;i.nodes.xs[o]=n+u,i.nodes.ys[o]=e+a,h+=l*d/(2*Math.PI),p-=d=l/h}),s++}return i}},"./engine/src/models/ForceDirectedGraph.js":function(n,t){n.exports=function(n){let t=n.nodes.colors.length,r=n.steps||10,e={nodes:{xs:[],ys:[],colors:[]},edges:[],width:n.width,height:n.height};e.nodes.xs.length=t,e.nodes.xs.fill(0),e.nodes.ys.length=t,e.nodes.ys.fill(0),e.nodes.colors=n.nodes.colors.slice(),e.edges=n.edges.slice();let o=e.nodes,i=e.edges,u=[];for(let n=0;n0){let r=10/(t*t),e=-1*r*u/(c*c),i=-1*r*a/(c*c);o.xs[n]+=e,o.ys[n]+=i}}for(let n=0;n0){let n=.1;t=n*s,r=n*f,o.xs[e]+=t,o.ys[e]+=r,o.xs[u]-=t,o.ys[u]-=r}}}return e}},"./engine/src/models/Ring.js":function(n,t){n.exports=function(n){let t=n.nodes.colors.length,r={nodes:{xs:[],ys:[],colors:[]},edges:[],width:n.width,height:n.height};r.nodes.colors=n.nodes.colors,r.edges=n.edges;for(let n=0;ni&&(i=n.level)}),r.sort(function(n,t){return n.index-t.index});let u={nodes:{xs:[],ys:[],colors:[]},edges:[],width:n.width,height:n.height},a=0;return r.forEach(function(n,t){u.nodes.xs[t]=n.x,u.nodes.ys[t]=1-(n.level-1)/(i-1)*2,u.nodes.colors[t]=n.color,n.parent&&(u.edges[a++]=n.parent.index,u.edges[a++]=n.index)}),u}},"./node_modules/gl-matrix/lib/gl-matrix.js":function(n,t,r){"use strict";r.r(t);var e=r("./node_modules/gl-matrix/lib/gl-matrix/common.js");r.d(t,"glMatrix",function(){return e});var o=r("./node_modules/gl-matrix/lib/gl-matrix/mat2.js");r.d(t,"mat2",function(){return o});var i=r("./node_modules/gl-matrix/lib/gl-matrix/mat2d.js");r.d(t,"mat2d",function(){return i});var u=r("./node_modules/gl-matrix/lib/gl-matrix/mat3.js");r.d(t,"mat3",function(){return u});var a=r("./node_modules/gl-matrix/lib/gl-matrix/mat4.js");r.d(t,"mat4",function(){return a});var c=r("./node_modules/gl-matrix/lib/gl-matrix/quat.js");r.d(t,"quat",function(){return c});var s=r("./node_modules/gl-matrix/lib/gl-matrix/quat2.js");r.d(t,"quat2",function(){return s});var f=r("./node_modules/gl-matrix/lib/gl-matrix/vec2.js");r.d(t,"vec2",function(){return f});var l=r("./node_modules/gl-matrix/lib/gl-matrix/vec3.js");r.d(t,"vec3",function(){return l});var h=r("./node_modules/gl-matrix/lib/gl-matrix/vec4.js");r.d(t,"vec4",function(){return h})},"./node_modules/gl-matrix/lib/gl-matrix/common.js":function(n,t,r){"use strict";r.r(t),r.d(t,"EPSILON",function(){return e}),r.d(t,"ARRAY_TYPE",function(){return o}),r.d(t,"RANDOM",function(){return i}),r.d(t,"setMatrixArrayType",function(){return u}),r.d(t,"toRadian",function(){return c}),r.d(t,"equals",function(){return s});var e=1e-6,o="undefined"!=typeof Float32Array?Float32Array:Array,i=Math.random;function u(n){o=n}var a=Math.PI/180;function c(n){return n*a}function s(n,t){return Math.abs(n-t)<=e*Math.max(1,Math.abs(n),Math.abs(t))}},"./node_modules/gl-matrix/lib/gl-matrix/mat2.js":function(n,t,r){"use strict";r.r(t),r.d(t,"create",function(){return o}),r.d(t,"clone",function(){return i}),r.d(t,"copy",function(){return u}),r.d(t,"identity",function(){return a}),r.d(t,"fromValues",function(){return c}),r.d(t,"set",function(){return s}),r.d(t,"transpose",function(){return f}),r.d(t,"invert",function(){return l}),r.d(t,"adjoint",function(){return h}),r.d(t,"determinant",function(){return d}),r.d(t,"multiply",function(){return p}),r.d(t,"rotate",function(){return g}),r.d(t,"scale",function(){return v}),r.d(t,"fromRotation",function(){return m}),r.d(t,"fromScaling",function(){return x}),r.d(t,"str",function(){return _}),r.d(t,"frob",function(){return b}),r.d(t,"LDU",function(){return y}),r.d(t,"add",function(){return M}),r.d(t,"subtract",function(){return w}),r.d(t,"exactEquals",function(){return A}),r.d(t,"equals",function(){return E}),r.d(t,"multiplyScalar",function(){return P}),r.d(t,"multiplyScalarAndAdd",function(){return I}),r.d(t,"mul",function(){return S}),r.d(t,"sub",function(){return T});var e=r("./node_modules/gl-matrix/lib/gl-matrix/common.js");function o(){var n=new e.ARRAY_TYPE(4);return e.ARRAY_TYPE!=Float32Array&&(n[1]=0,n[2]=0),n[0]=1,n[3]=1,n}function i(n){var t=new e.ARRAY_TYPE(4);return t[0]=n[0],t[1]=n[1],t[2]=n[2],t[3]=n[3],t}function u(n,t){return n[0]=t[0],n[1]=t[1],n[2]=t[2],n[3]=t[3],n}function a(n){return n[0]=1,n[1]=0,n[2]=0,n[3]=1,n}function c(n,t,r,o){var i=new e.ARRAY_TYPE(4);return i[0]=n,i[1]=t,i[2]=r,i[3]=o,i}function s(n,t,r,e,o){return n[0]=t,n[1]=r,n[2]=e,n[3]=o,n}function f(n,t){if(n===t){var r=t[1];n[1]=t[2],n[2]=r}else n[0]=t[0],n[1]=t[2],n[2]=t[1],n[3]=t[3];return n}function l(n,t){var r=t[0],e=t[1],o=t[2],i=t[3],u=r*i-o*e;return u?(u=1/u,n[0]=i*u,n[1]=-e*u,n[2]=-o*u,n[3]=r*u,n):null}function h(n,t){var r=t[0];return n[0]=t[3],n[1]=-t[1],n[2]=-t[2],n[3]=r,n}function d(n){return n[0]*n[3]-n[2]*n[1]}function p(n,t,r){var e=t[0],o=t[1],i=t[2],u=t[3],a=r[0],c=r[1],s=r[2],f=r[3];return n[0]=e*a+i*c,n[1]=o*a+u*c,n[2]=e*s+i*f,n[3]=o*s+u*f,n}function g(n,t,r){var e=t[0],o=t[1],i=t[2],u=t[3],a=Math.sin(r),c=Math.cos(r);return n[0]=e*c+i*a,n[1]=o*c+u*a,n[2]=e*-a+i*c,n[3]=o*-a+u*c,n}function v(n,t,r){var e=t[0],o=t[1],i=t[2],u=t[3],a=r[0],c=r[1];return n[0]=e*a,n[1]=o*a,n[2]=i*c,n[3]=u*c,n}function m(n,t){var r=Math.sin(t),e=Math.cos(t);return n[0]=e,n[1]=r,n[2]=-r,n[3]=e,n}function x(n,t){return n[0]=t[0],n[1]=0,n[2]=0,n[3]=t[1],n}function _(n){return"mat2("+n[0]+", "+n[1]+", "+n[2]+", "+n[3]+")"}function b(n){return Math.sqrt(Math.pow(n[0],2)+Math.pow(n[1],2)+Math.pow(n[2],2)+Math.pow(n[3],2))}function y(n,t,r,e){return n[2]=e[2]/e[0],r[0]=e[0],r[1]=e[1],r[3]=e[3]-n[2]*r[1],[n,t,r]}function M(n,t,r){return n[0]=t[0]+r[0],n[1]=t[1]+r[1],n[2]=t[2]+r[2],n[3]=t[3]+r[3],n}function w(n,t,r){return n[0]=t[0]-r[0],n[1]=t[1]-r[1],n[2]=t[2]-r[2],n[3]=t[3]-r[3],n}function A(n,t){return n[0]===t[0]&&n[1]===t[1]&&n[2]===t[2]&&n[3]===t[3]}function E(n,t){var r=n[0],o=n[1],i=n[2],u=n[3],a=t[0],c=t[1],s=t[2],f=t[3];return Math.abs(r-a)<=e.EPSILON*Math.max(1,Math.abs(r),Math.abs(a))&&Math.abs(o-c)<=e.EPSILON*Math.max(1,Math.abs(o),Math.abs(c))&&Math.abs(i-s)<=e.EPSILON*Math.max(1,Math.abs(i),Math.abs(s))&&Math.abs(u-f)<=e.EPSILON*Math.max(1,Math.abs(u),Math.abs(f))}function P(n,t,r){return n[0]=t[0]*r,n[1]=t[1]*r,n[2]=t[2]*r,n[3]=t[3]*r,n}function I(n,t,r,e){return n[0]=t[0]+r[0]*e,n[1]=t[1]+r[1]*e,n[2]=t[2]+r[2]*e,n[3]=t[3]+r[3]*e,n}var S=p,T=w},"./node_modules/gl-matrix/lib/gl-matrix/mat2d.js":function(n,t,r){"use strict";r.r(t),r.d(t,"create",function(){return o}),r.d(t,"clone",function(){return i}),r.d(t,"copy",function(){return u}),r.d(t,"identity",function(){return a}),r.d(t,"fromValues",function(){return c}),r.d(t,"set",function(){return s}),r.d(t,"invert",function(){return f}),r.d(t,"determinant",function(){return l}),r.d(t,"multiply",function(){return h}),r.d(t,"rotate",function(){return d}),r.d(t,"scale",function(){return p}),r.d(t,"translate",function(){return g}),r.d(t,"fromRotation",function(){return v}),r.d(t,"fromScaling",function(){return m}),r.d(t,"fromTranslation",function(){return x}),r.d(t,"str",function(){return _}),r.d(t,"frob",function(){return b}),r.d(t,"add",function(){return y}),r.d(t,"subtract",function(){return M}),r.d(t,"multiplyScalar",function(){return w}),r.d(t,"multiplyScalarAndAdd",function(){return A}),r.d(t,"exactEquals",function(){return E}),r.d(t,"equals",function(){return P}),r.d(t,"mul",function(){return I}),r.d(t,"sub",function(){return S});var e=r("./node_modules/gl-matrix/lib/gl-matrix/common.js");function o(){var n=new e.ARRAY_TYPE(6);return e.ARRAY_TYPE!=Float32Array&&(n[1]=0,n[2]=0,n[4]=0,n[5]=0),n[0]=1,n[3]=1,n}function i(n){var t=new e.ARRAY_TYPE(6);return t[0]=n[0],t[1]=n[1],t[2]=n[2],t[3]=n[3],t[4]=n[4],t[5]=n[5],t}function u(n,t){return n[0]=t[0],n[1]=t[1],n[2]=t[2],n[3]=t[3],n[4]=t[4],n[5]=t[5],n}function a(n){return n[0]=1,n[1]=0,n[2]=0,n[3]=1,n[4]=0,n[5]=0,n}function c(n,t,r,o,i,u){var a=new e.ARRAY_TYPE(6);return a[0]=n,a[1]=t,a[2]=r,a[3]=o,a[4]=i,a[5]=u,a}function s(n,t,r,e,o,i,u){return n[0]=t,n[1]=r,n[2]=e,n[3]=o,n[4]=i,n[5]=u,n}function f(n,t){var r=t[0],e=t[1],o=t[2],i=t[3],u=t[4],a=t[5],c=r*i-e*o;return c?(c=1/c,n[0]=i*c,n[1]=-e*c,n[2]=-o*c,n[3]=r*c,n[4]=(o*a-i*u)*c,n[5]=(e*u-r*a)*c,n):null}function l(n){return n[0]*n[3]-n[1]*n[2]}function h(n,t,r){var e=t[0],o=t[1],i=t[2],u=t[3],a=t[4],c=t[5],s=r[0],f=r[1],l=r[2],h=r[3],d=r[4],p=r[5];return n[0]=e*s+i*f,n[1]=o*s+u*f,n[2]=e*l+i*h,n[3]=o*l+u*h,n[4]=e*d+i*p+a,n[5]=o*d+u*p+c,n}function d(n,t,r){var e=t[0],o=t[1],i=t[2],u=t[3],a=t[4],c=t[5],s=Math.sin(r),f=Math.cos(r);return n[0]=e*f+i*s,n[1]=o*f+u*s,n[2]=e*-s+i*f,n[3]=o*-s+u*f,n[4]=a,n[5]=c,n}function p(n,t,r){var e=t[0],o=t[1],i=t[2],u=t[3],a=t[4],c=t[5],s=r[0],f=r[1];return n[0]=e*s,n[1]=o*s,n[2]=i*f,n[3]=u*f,n[4]=a,n[5]=c,n}function g(n,t,r){var e=t[0],o=t[1],i=t[2],u=t[3],a=t[4],c=t[5],s=r[0],f=r[1];return n[0]=e,n[1]=o,n[2]=i,n[3]=u,n[4]=e*s+i*f+a,n[5]=o*s+u*f+c,n}function v(n,t){var r=Math.sin(t),e=Math.cos(t);return n[0]=e,n[1]=r,n[2]=-r,n[3]=e,n[4]=0,n[5]=0,n}function m(n,t){return n[0]=t[0],n[1]=0,n[2]=0,n[3]=t[1],n[4]=0,n[5]=0,n}function x(n,t){return n[0]=1,n[1]=0,n[2]=0,n[3]=1,n[4]=t[0],n[5]=t[1],n}function _(n){return"mat2d("+n[0]+", "+n[1]+", "+n[2]+", "+n[3]+", "+n[4]+", "+n[5]+")"}function b(n){return Math.sqrt(Math.pow(n[0],2)+Math.pow(n[1],2)+Math.pow(n[2],2)+Math.pow(n[3],2)+Math.pow(n[4],2)+Math.pow(n[5],2)+1)}function y(n,t,r){return n[0]=t[0]+r[0],n[1]=t[1]+r[1],n[2]=t[2]+r[2],n[3]=t[3]+r[3],n[4]=t[4]+r[4],n[5]=t[5]+r[5],n}function M(n,t,r){return n[0]=t[0]-r[0],n[1]=t[1]-r[1],n[2]=t[2]-r[2],n[3]=t[3]-r[3],n[4]=t[4]-r[4],n[5]=t[5]-r[5],n}function w(n,t,r){return n[0]=t[0]*r,n[1]=t[1]*r,n[2]=t[2]*r,n[3]=t[3]*r,n[4]=t[4]*r,n[5]=t[5]*r,n}function A(n,t,r,e){return n[0]=t[0]+r[0]*e,n[1]=t[1]+r[1]*e,n[2]=t[2]+r[2]*e,n[3]=t[3]+r[3]*e,n[4]=t[4]+r[4]*e,n[5]=t[5]+r[5]*e,n}function E(n,t){return n[0]===t[0]&&n[1]===t[1]&&n[2]===t[2]&&n[3]===t[3]&&n[4]===t[4]&&n[5]===t[5]}function P(n,t){var r=n[0],o=n[1],i=n[2],u=n[3],a=n[4],c=n[5],s=t[0],f=t[1],l=t[2],h=t[3],d=t[4],p=t[5];return Math.abs(r-s)<=e.EPSILON*Math.max(1,Math.abs(r),Math.abs(s))&&Math.abs(o-f)<=e.EPSILON*Math.max(1,Math.abs(o),Math.abs(f))&&Math.abs(i-l)<=e.EPSILON*Math.max(1,Math.abs(i),Math.abs(l))&&Math.abs(u-h)<=e.EPSILON*Math.max(1,Math.abs(u),Math.abs(h))&&Math.abs(a-d)<=e.EPSILON*Math.max(1,Math.abs(a),Math.abs(d))&&Math.abs(c-p)<=e.EPSILON*Math.max(1,Math.abs(c),Math.abs(p))}var I=h,S=M},"./node_modules/gl-matrix/lib/gl-matrix/mat3.js":function(n,t,r){"use strict";r.r(t),r.d(t,"create",function(){return o}),r.d(t,"fromMat4",function(){return i}),r.d(t,"clone",function(){return u}),r.d(t,"copy",function(){return a}),r.d(t,"fromValues",function(){return c}),r.d(t,"set",function(){return s}),r.d(t,"identity",function(){return f}),r.d(t,"transpose",function(){return l}),r.d(t,"invert",function(){return h}),r.d(t,"adjoint",function(){return d}),r.d(t,"determinant",function(){return p}),r.d(t,"multiply",function(){return g}),r.d(t,"translate",function(){return v}),r.d(t,"rotate",function(){return m}),r.d(t,"scale",function(){return x}),r.d(t,"fromTranslation",function(){return _}),r.d(t,"fromRotation",function(){return b}),r.d(t,"fromScaling",function(){return y}),r.d(t,"fromMat2d",function(){return M}),r.d(t,"fromQuat",function(){return w}),r.d(t,"normalFromMat4",function(){return A}),r.d(t,"projection",function(){return E}),r.d(t,"str",function(){return P}),r.d(t,"frob",function(){return I}),r.d(t,"add",function(){return S}),r.d(t,"subtract",function(){return T}),r.d(t,"multiplyScalar",function(){return j}),r.d(t,"multiplyScalarAndAdd",function(){return L}),r.d(t,"exactEquals",function(){return O}),r.d(t,"equals",function(){return R}),r.d(t,"mul",function(){return z}),r.d(t,"sub",function(){return C});var e=r("./node_modules/gl-matrix/lib/gl-matrix/common.js");function o(){var n=new e.ARRAY_TYPE(9);return e.ARRAY_TYPE!=Float32Array&&(n[1]=0,n[2]=0,n[3]=0,n[5]=0,n[6]=0,n[7]=0),n[0]=1,n[4]=1,n[8]=1,n}function i(n,t){return n[0]=t[0],n[1]=t[1],n[2]=t[2],n[3]=t[4],n[4]=t[5],n[5]=t[6],n[6]=t[8],n[7]=t[9],n[8]=t[10],n}function u(n){var t=new e.ARRAY_TYPE(9);return t[0]=n[0],t[1]=n[1],t[2]=n[2],t[3]=n[3],t[4]=n[4],t[5]=n[5],t[6]=n[6],t[7]=n[7],t[8]=n[8],t}function a(n,t){return n[0]=t[0],n[1]=t[1],n[2]=t[2],n[3]=t[3],n[4]=t[4],n[5]=t[5],n[6]=t[6],n[7]=t[7],n[8]=t[8],n}function c(n,t,r,o,i,u,a,c,s){var f=new e.ARRAY_TYPE(9);return f[0]=n,f[1]=t,f[2]=r,f[3]=o,f[4]=i,f[5]=u,f[6]=a,f[7]=c,f[8]=s,f}function s(n,t,r,e,o,i,u,a,c,s){return n[0]=t,n[1]=r,n[2]=e,n[3]=o,n[4]=i,n[5]=u,n[6]=a,n[7]=c,n[8]=s,n}function f(n){return n[0]=1,n[1]=0,n[2]=0,n[3]=0,n[4]=1,n[5]=0,n[6]=0,n[7]=0,n[8]=1,n}function l(n,t){if(n===t){var r=t[1],e=t[2],o=t[5];n[1]=t[3],n[2]=t[6],n[3]=r,n[5]=t[7],n[6]=e,n[7]=o}else n[0]=t[0],n[1]=t[3],n[2]=t[6],n[3]=t[1],n[4]=t[4],n[5]=t[7],n[6]=t[2],n[7]=t[5],n[8]=t[8];return n}function h(n,t){var r=t[0],e=t[1],o=t[2],i=t[3],u=t[4],a=t[5],c=t[6],s=t[7],f=t[8],l=f*u-a*s,h=-f*i+a*c,d=s*i-u*c,p=r*l+e*h+o*d;return p?(p=1/p,n[0]=l*p,n[1]=(-f*e+o*s)*p,n[2]=(a*e-o*u)*p,n[3]=h*p,n[4]=(f*r-o*c)*p,n[5]=(-a*r+o*i)*p,n[6]=d*p,n[7]=(-s*r+e*c)*p,n[8]=(u*r-e*i)*p,n):null}function d(n,t){var r=t[0],e=t[1],o=t[2],i=t[3],u=t[4],a=t[5],c=t[6],s=t[7],f=t[8];return n[0]=u*f-a*s,n[1]=o*s-e*f,n[2]=e*a-o*u,n[3]=a*c-i*f,n[4]=r*f-o*c,n[5]=o*i-r*a,n[6]=i*s-u*c,n[7]=e*c-r*s,n[8]=r*u-e*i,n}function p(n){var t=n[0],r=n[1],e=n[2],o=n[3],i=n[4],u=n[5],a=n[6],c=n[7],s=n[8];return t*(s*i-u*c)+r*(-s*o+u*a)+e*(c*o-i*a)}function g(n,t,r){var e=t[0],o=t[1],i=t[2],u=t[3],a=t[4],c=t[5],s=t[6],f=t[7],l=t[8],h=r[0],d=r[1],p=r[2],g=r[3],v=r[4],m=r[5],x=r[6],_=r[7],b=r[8];return n[0]=h*e+d*u+p*s,n[1]=h*o+d*a+p*f,n[2]=h*i+d*c+p*l,n[3]=g*e+v*u+m*s,n[4]=g*o+v*a+m*f,n[5]=g*i+v*c+m*l,n[6]=x*e+_*u+b*s,n[7]=x*o+_*a+b*f,n[8]=x*i+_*c+b*l,n}function v(n,t,r){var e=t[0],o=t[1],i=t[2],u=t[3],a=t[4],c=t[5],s=t[6],f=t[7],l=t[8],h=r[0],d=r[1];return n[0]=e,n[1]=o,n[2]=i,n[3]=u,n[4]=a,n[5]=c,n[6]=h*e+d*u+s,n[7]=h*o+d*a+f,n[8]=h*i+d*c+l,n}function m(n,t,r){var e=t[0],o=t[1],i=t[2],u=t[3],a=t[4],c=t[5],s=t[6],f=t[7],l=t[8],h=Math.sin(r),d=Math.cos(r);return n[0]=d*e+h*u,n[1]=d*o+h*a,n[2]=d*i+h*c,n[3]=d*u-h*e,n[4]=d*a-h*o,n[5]=d*c-h*i,n[6]=s,n[7]=f,n[8]=l,n}function x(n,t,r){var e=r[0],o=r[1];return n[0]=e*t[0],n[1]=e*t[1],n[2]=e*t[2],n[3]=o*t[3],n[4]=o*t[4],n[5]=o*t[5],n[6]=t[6],n[7]=t[7],n[8]=t[8],n}function _(n,t){return n[0]=1,n[1]=0,n[2]=0,n[3]=0,n[4]=1,n[5]=0,n[6]=t[0],n[7]=t[1],n[8]=1,n}function b(n,t){var r=Math.sin(t),e=Math.cos(t);return n[0]=e,n[1]=r,n[2]=0,n[3]=-r,n[4]=e,n[5]=0,n[6]=0,n[7]=0,n[8]=1,n}function y(n,t){return n[0]=t[0],n[1]=0,n[2]=0,n[3]=0,n[4]=t[1],n[5]=0,n[6]=0,n[7]=0,n[8]=1,n}function M(n,t){return n[0]=t[0],n[1]=t[1],n[2]=0,n[3]=t[2],n[4]=t[3],n[5]=0,n[6]=t[4],n[7]=t[5],n[8]=1,n}function w(n,t){var r=t[0],e=t[1],o=t[2],i=t[3],u=r+r,a=e+e,c=o+o,s=r*u,f=e*u,l=e*a,h=o*u,d=o*a,p=o*c,g=i*u,v=i*a,m=i*c;return n[0]=1-l-p,n[3]=f-m,n[6]=h+v,n[1]=f+m,n[4]=1-s-p,n[7]=d-g,n[2]=h-v,n[5]=d+g,n[8]=1-s-l,n}function A(n,t){var r=t[0],e=t[1],o=t[2],i=t[3],u=t[4],a=t[5],c=t[6],s=t[7],f=t[8],l=t[9],h=t[10],d=t[11],p=t[12],g=t[13],v=t[14],m=t[15],x=r*a-e*u,_=r*c-o*u,b=r*s-i*u,y=e*c-o*a,M=e*s-i*a,w=o*s-i*c,A=f*g-l*p,E=f*v-h*p,P=f*m-d*p,I=l*v-h*g,S=l*m-d*g,T=h*m-d*v,j=x*T-_*S+b*I+y*P-M*E+w*A;return j?(j=1/j,n[0]=(a*T-c*S+s*I)*j,n[1]=(c*P-u*T-s*E)*j,n[2]=(u*S-a*P+s*A)*j,n[3]=(o*S-e*T-i*I)*j,n[4]=(r*T-o*P+i*E)*j,n[5]=(e*P-r*S-i*A)*j,n[6]=(g*w-v*M+m*y)*j,n[7]=(v*b-p*w-m*_)*j,n[8]=(p*M-g*b+m*x)*j,n):null}function E(n,t,r){return n[0]=2/t,n[1]=0,n[2]=0,n[3]=0,n[4]=-2/r,n[5]=0,n[6]=-1,n[7]=1,n[8]=1,n}function P(n){return"mat3("+n[0]+", "+n[1]+", "+n[2]+", "+n[3]+", "+n[4]+", "+n[5]+", "+n[6]+", "+n[7]+", "+n[8]+")"}function I(n){return Math.sqrt(Math.pow(n[0],2)+Math.pow(n[1],2)+Math.pow(n[2],2)+Math.pow(n[3],2)+Math.pow(n[4],2)+Math.pow(n[5],2)+Math.pow(n[6],2)+Math.pow(n[7],2)+Math.pow(n[8],2))}function S(n,t,r){return n[0]=t[0]+r[0],n[1]=t[1]+r[1],n[2]=t[2]+r[2],n[3]=t[3]+r[3],n[4]=t[4]+r[4],n[5]=t[5]+r[5],n[6]=t[6]+r[6],n[7]=t[7]+r[7],n[8]=t[8]+r[8],n}function T(n,t,r){return n[0]=t[0]-r[0],n[1]=t[1]-r[1],n[2]=t[2]-r[2],n[3]=t[3]-r[3],n[4]=t[4]-r[4],n[5]=t[5]-r[5],n[6]=t[6]-r[6],n[7]=t[7]-r[7],n[8]=t[8]-r[8],n}function j(n,t,r){return n[0]=t[0]*r,n[1]=t[1]*r,n[2]=t[2]*r,n[3]=t[3]*r,n[4]=t[4]*r,n[5]=t[5]*r,n[6]=t[6]*r,n[7]=t[7]*r,n[8]=t[8]*r,n}function L(n,t,r,e){return n[0]=t[0]+r[0]*e,n[1]=t[1]+r[1]*e,n[2]=t[2]+r[2]*e,n[3]=t[3]+r[3]*e,n[4]=t[4]+r[4]*e,n[5]=t[5]+r[5]*e,n[6]=t[6]+r[6]*e,n[7]=t[7]+r[7]*e,n[8]=t[8]+r[8]*e,n}function O(n,t){return n[0]===t[0]&&n[1]===t[1]&&n[2]===t[2]&&n[3]===t[3]&&n[4]===t[4]&&n[5]===t[5]&&n[6]===t[6]&&n[7]===t[7]&&n[8]===t[8]}function R(n,t){var r=n[0],o=n[1],i=n[2],u=n[3],a=n[4],c=n[5],s=n[6],f=n[7],l=n[8],h=t[0],d=t[1],p=t[2],g=t[3],v=t[4],m=t[5],x=t[6],_=t[7],b=t[8];return Math.abs(r-h)<=e.EPSILON*Math.max(1,Math.abs(r),Math.abs(h))&&Math.abs(o-d)<=e.EPSILON*Math.max(1,Math.abs(o),Math.abs(d))&&Math.abs(i-p)<=e.EPSILON*Math.max(1,Math.abs(i),Math.abs(p))&&Math.abs(u-g)<=e.EPSILON*Math.max(1,Math.abs(u),Math.abs(g))&&Math.abs(a-v)<=e.EPSILON*Math.max(1,Math.abs(a),Math.abs(v))&&Math.abs(c-m)<=e.EPSILON*Math.max(1,Math.abs(c),Math.abs(m))&&Math.abs(s-x)<=e.EPSILON*Math.max(1,Math.abs(s),Math.abs(x))&&Math.abs(f-_)<=e.EPSILON*Math.max(1,Math.abs(f),Math.abs(_))&&Math.abs(l-b)<=e.EPSILON*Math.max(1,Math.abs(l),Math.abs(b))}var z=g,C=T},"./node_modules/gl-matrix/lib/gl-matrix/mat4.js":function(n,t,r){"use strict";r.r(t),r.d(t,"create",function(){return o}),r.d(t,"clone",function(){return i}),r.d(t,"copy",function(){return u}),r.d(t,"fromValues",function(){return a}),r.d(t,"set",function(){return c}),r.d(t,"identity",function(){return s}),r.d(t,"transpose",function(){return f}),r.d(t,"invert",function(){return l}),r.d(t,"adjoint",function(){return h}),r.d(t,"determinant",function(){return d}),r.d(t,"multiply",function(){return p}),r.d(t,"translate",function(){return g}),r.d(t,"scale",function(){return v}),r.d(t,"rotate",function(){return m}),r.d(t,"rotateX",function(){return x}),r.d(t,"rotateY",function(){return _}),r.d(t,"rotateZ",function(){return b}),r.d(t,"fromTranslation",function(){return y}),r.d(t,"fromScaling",function(){return M}),r.d(t,"fromRotation",function(){return w}),r.d(t,"fromXRotation",function(){return A}),r.d(t,"fromYRotation",function(){return E}),r.d(t,"fromZRotation",function(){return P}),r.d(t,"fromRotationTranslation",function(){return I}),r.d(t,"fromQuat2",function(){return S}),r.d(t,"getTranslation",function(){return T}),r.d(t,"getScaling",function(){return j}),r.d(t,"getRotation",function(){return L}),r.d(t,"fromRotationTranslationScale",function(){return O}),r.d(t,"fromRotationTranslationScaleOrigin",function(){return R}),r.d(t,"fromQuat",function(){return z}),r.d(t,"frustum",function(){return C}),r.d(t,"perspective",function(){return V}),r.d(t,"perspectiveFromFieldOfView",function(){return B}),r.d(t,"ortho",function(){return N}),r.d(t,"lookAt",function(){return D}),r.d(t,"targetTo",function(){return k}),r.d(t,"str",function(){return Y}),r.d(t,"frob",function(){return q}),r.d(t,"add",function(){return U}),r.d(t,"subtract",function(){return F}),r.d(t,"multiplyScalar",function(){return X}),r.d(t,"multiplyScalarAndAdd",function(){return Z}),r.d(t,"exactEquals",function(){return G}),r.d(t,"equals",function(){return W}),r.d(t,"mul",function(){return H}),r.d(t,"sub",function(){return $});var e=r("./node_modules/gl-matrix/lib/gl-matrix/common.js");function o(){var n=new e.ARRAY_TYPE(16);return e.ARRAY_TYPE!=Float32Array&&(n[1]=0,n[2]=0,n[3]=0,n[4]=0,n[6]=0,n[7]=0,n[8]=0,n[9]=0,n[11]=0,n[12]=0,n[13]=0,n[14]=0),n[0]=1,n[5]=1,n[10]=1,n[15]=1,n}function i(n){var t=new e.ARRAY_TYPE(16);return t[0]=n[0],t[1]=n[1],t[2]=n[2],t[3]=n[3],t[4]=n[4],t[5]=n[5],t[6]=n[6],t[7]=n[7],t[8]=n[8],t[9]=n[9],t[10]=n[10],t[11]=n[11],t[12]=n[12],t[13]=n[13],t[14]=n[14],t[15]=n[15],t}function u(n,t){return n[0]=t[0],n[1]=t[1],n[2]=t[2],n[3]=t[3],n[4]=t[4],n[5]=t[5],n[6]=t[6],n[7]=t[7],n[8]=t[8],n[9]=t[9],n[10]=t[10],n[11]=t[11],n[12]=t[12],n[13]=t[13],n[14]=t[14],n[15]=t[15],n}function a(n,t,r,o,i,u,a,c,s,f,l,h,d,p,g,v){var m=new e.ARRAY_TYPE(16);return m[0]=n,m[1]=t,m[2]=r,m[3]=o,m[4]=i,m[5]=u,m[6]=a,m[7]=c,m[8]=s,m[9]=f,m[10]=l,m[11]=h,m[12]=d,m[13]=p,m[14]=g,m[15]=v,m}function c(n,t,r,e,o,i,u,a,c,s,f,l,h,d,p,g,v){return n[0]=t,n[1]=r,n[2]=e,n[3]=o,n[4]=i,n[5]=u,n[6]=a,n[7]=c,n[8]=s,n[9]=f,n[10]=l,n[11]=h,n[12]=d,n[13]=p,n[14]=g,n[15]=v,n}function s(n){return n[0]=1,n[1]=0,n[2]=0,n[3]=0,n[4]=0,n[5]=1,n[6]=0,n[7]=0,n[8]=0,n[9]=0,n[10]=1,n[11]=0,n[12]=0,n[13]=0,n[14]=0,n[15]=1,n}function f(n,t){if(n===t){var r=t[1],e=t[2],o=t[3],i=t[6],u=t[7],a=t[11];n[1]=t[4],n[2]=t[8],n[3]=t[12],n[4]=r,n[6]=t[9],n[7]=t[13],n[8]=e,n[9]=i,n[11]=t[14],n[12]=o,n[13]=u,n[14]=a}else n[0]=t[0],n[1]=t[4],n[2]=t[8],n[3]=t[12],n[4]=t[1],n[5]=t[5],n[6]=t[9],n[7]=t[13],n[8]=t[2],n[9]=t[6],n[10]=t[10],n[11]=t[14],n[12]=t[3],n[13]=t[7],n[14]=t[11],n[15]=t[15];return n}function l(n,t){var r=t[0],e=t[1],o=t[2],i=t[3],u=t[4],a=t[5],c=t[6],s=t[7],f=t[8],l=t[9],h=t[10],d=t[11],p=t[12],g=t[13],v=t[14],m=t[15],x=r*a-e*u,_=r*c-o*u,b=r*s-i*u,y=e*c-o*a,M=e*s-i*a,w=o*s-i*c,A=f*g-l*p,E=f*v-h*p,P=f*m-d*p,I=l*v-h*g,S=l*m-d*g,T=h*m-d*v,j=x*T-_*S+b*I+y*P-M*E+w*A;return j?(j=1/j,n[0]=(a*T-c*S+s*I)*j,n[1]=(o*S-e*T-i*I)*j,n[2]=(g*w-v*M+m*y)*j,n[3]=(h*M-l*w-d*y)*j,n[4]=(c*P-u*T-s*E)*j,n[5]=(r*T-o*P+i*E)*j,n[6]=(v*b-p*w-m*_)*j,n[7]=(f*w-h*b+d*_)*j,n[8]=(u*S-a*P+s*A)*j,n[9]=(e*P-r*S-i*A)*j,n[10]=(p*M-g*b+m*x)*j,n[11]=(l*b-f*M-d*x)*j,n[12]=(a*E-u*I-c*A)*j,n[13]=(r*I-e*E+o*A)*j,n[14]=(g*_-p*y-v*x)*j,n[15]=(f*y-l*_+h*x)*j,n):null}function h(n,t){var r=t[0],e=t[1],o=t[2],i=t[3],u=t[4],a=t[5],c=t[6],s=t[7],f=t[8],l=t[9],h=t[10],d=t[11],p=t[12],g=t[13],v=t[14],m=t[15];return n[0]=a*(h*m-d*v)-l*(c*m-s*v)+g*(c*d-s*h),n[1]=-(e*(h*m-d*v)-l*(o*m-i*v)+g*(o*d-i*h)),n[2]=e*(c*m-s*v)-a*(o*m-i*v)+g*(o*s-i*c),n[3]=-(e*(c*d-s*h)-a*(o*d-i*h)+l*(o*s-i*c)),n[4]=-(u*(h*m-d*v)-f*(c*m-s*v)+p*(c*d-s*h)),n[5]=r*(h*m-d*v)-f*(o*m-i*v)+p*(o*d-i*h),n[6]=-(r*(c*m-s*v)-u*(o*m-i*v)+p*(o*s-i*c)),n[7]=r*(c*d-s*h)-u*(o*d-i*h)+f*(o*s-i*c),n[8]=u*(l*m-d*g)-f*(a*m-s*g)+p*(a*d-s*l),n[9]=-(r*(l*m-d*g)-f*(e*m-i*g)+p*(e*d-i*l)),n[10]=r*(a*m-s*g)-u*(e*m-i*g)+p*(e*s-i*a),n[11]=-(r*(a*d-s*l)-u*(e*d-i*l)+f*(e*s-i*a)),n[12]=-(u*(l*v-h*g)-f*(a*v-c*g)+p*(a*h-c*l)),n[13]=r*(l*v-h*g)-f*(e*v-o*g)+p*(e*h-o*l),n[14]=-(r*(a*v-c*g)-u*(e*v-o*g)+p*(e*c-o*a)),n[15]=r*(a*h-c*l)-u*(e*h-o*l)+f*(e*c-o*a),n}function d(n){var t=n[0],r=n[1],e=n[2],o=n[3],i=n[4],u=n[5],a=n[6],c=n[7],s=n[8],f=n[9],l=n[10],h=n[11],d=n[12],p=n[13],g=n[14],v=n[15];return(t*u-r*i)*(l*v-h*g)-(t*a-e*i)*(f*v-h*p)+(t*c-o*i)*(f*g-l*p)+(r*a-e*u)*(s*v-h*d)-(r*c-o*u)*(s*g-l*d)+(e*c-o*a)*(s*p-f*d)}function p(n,t,r){var e=t[0],o=t[1],i=t[2],u=t[3],a=t[4],c=t[5],s=t[6],f=t[7],l=t[8],h=t[9],d=t[10],p=t[11],g=t[12],v=t[13],m=t[14],x=t[15],_=r[0],b=r[1],y=r[2],M=r[3];return n[0]=_*e+b*a+y*l+M*g,n[1]=_*o+b*c+y*h+M*v,n[2]=_*i+b*s+y*d+M*m,n[3]=_*u+b*f+y*p+M*x,_=r[4],b=r[5],y=r[6],M=r[7],n[4]=_*e+b*a+y*l+M*g,n[5]=_*o+b*c+y*h+M*v,n[6]=_*i+b*s+y*d+M*m,n[7]=_*u+b*f+y*p+M*x,_=r[8],b=r[9],y=r[10],M=r[11],n[8]=_*e+b*a+y*l+M*g,n[9]=_*o+b*c+y*h+M*v,n[10]=_*i+b*s+y*d+M*m,n[11]=_*u+b*f+y*p+M*x,_=r[12],b=r[13],y=r[14],M=r[15],n[12]=_*e+b*a+y*l+M*g,n[13]=_*o+b*c+y*h+M*v,n[14]=_*i+b*s+y*d+M*m,n[15]=_*u+b*f+y*p+M*x,n}function g(n,t,r){var e=r[0],o=r[1],i=r[2],u=void 0,a=void 0,c=void 0,s=void 0,f=void 0,l=void 0,h=void 0,d=void 0,p=void 0,g=void 0,v=void 0,m=void 0;return t===n?(n[12]=t[0]*e+t[4]*o+t[8]*i+t[12],n[13]=t[1]*e+t[5]*o+t[9]*i+t[13],n[14]=t[2]*e+t[6]*o+t[10]*i+t[14],n[15]=t[3]*e+t[7]*o+t[11]*i+t[15]):(u=t[0],a=t[1],c=t[2],s=t[3],f=t[4],l=t[5],h=t[6],d=t[7],p=t[8],g=t[9],v=t[10],m=t[11],n[0]=u,n[1]=a,n[2]=c,n[3]=s,n[4]=f,n[5]=l,n[6]=h,n[7]=d,n[8]=p,n[9]=g,n[10]=v,n[11]=m,n[12]=u*e+f*o+p*i+t[12],n[13]=a*e+l*o+g*i+t[13],n[14]=c*e+h*o+v*i+t[14],n[15]=s*e+d*o+m*i+t[15]),n}function v(n,t,r){var e=r[0],o=r[1],i=r[2];return n[0]=t[0]*e,n[1]=t[1]*e,n[2]=t[2]*e,n[3]=t[3]*e,n[4]=t[4]*o,n[5]=t[5]*o,n[6]=t[6]*o,n[7]=t[7]*o,n[8]=t[8]*i,n[9]=t[9]*i,n[10]=t[10]*i,n[11]=t[11]*i,n[12]=t[12],n[13]=t[13],n[14]=t[14],n[15]=t[15],n}function m(n,t,r,o){var i,u,a,c,s,f,l,h,d,p,g,v,m,x,_,b,y,M,w,A,E,P,I,S,T=o[0],j=o[1],L=o[2],O=Math.sqrt(T*T+j*j+L*L);return O0?(r[0]=2*(c*a+l*o+s*u-f*i)/h,r[1]=2*(s*a+l*i+f*o-c*u)/h,r[2]=2*(f*a+l*u+c*i-s*o)/h):(r[0]=2*(c*a+l*o+s*u-f*i),r[1]=2*(s*a+l*i+f*o-c*u),r[2]=2*(f*a+l*u+c*i-s*o)),I(n,t,r),n}function T(n,t){return n[0]=t[12],n[1]=t[13],n[2]=t[14],n}function j(n,t){var r=t[0],e=t[1],o=t[2],i=t[4],u=t[5],a=t[6],c=t[8],s=t[9],f=t[10];return n[0]=Math.sqrt(r*r+e*e+o*o),n[1]=Math.sqrt(i*i+u*u+a*a),n[2]=Math.sqrt(c*c+s*s+f*f),n}function L(n,t){var r=t[0]+t[5]+t[10],e=0;return r>0?(e=2*Math.sqrt(r+1),n[3]=.25*e,n[0]=(t[6]-t[9])/e,n[1]=(t[8]-t[2])/e,n[2]=(t[1]-t[4])/e):t[0]>t[5]&&t[0]>t[10]?(e=2*Math.sqrt(1+t[0]-t[5]-t[10]),n[3]=(t[6]-t[9])/e,n[0]=.25*e,n[1]=(t[1]+t[4])/e,n[2]=(t[8]+t[2])/e):t[5]>t[10]?(e=2*Math.sqrt(1+t[5]-t[0]-t[10]),n[3]=(t[8]-t[2])/e,n[0]=(t[1]+t[4])/e,n[1]=.25*e,n[2]=(t[6]+t[9])/e):(e=2*Math.sqrt(1+t[10]-t[0]-t[5]),n[3]=(t[1]-t[4])/e,n[0]=(t[8]+t[2])/e,n[1]=(t[6]+t[9])/e,n[2]=.25*e),n}function O(n,t,r,e){var o=t[0],i=t[1],u=t[2],a=t[3],c=o+o,s=i+i,f=u+u,l=o*c,h=o*s,d=o*f,p=i*s,g=i*f,v=u*f,m=a*c,x=a*s,_=a*f,b=e[0],y=e[1],M=e[2];return n[0]=(1-(p+v))*b,n[1]=(h+_)*b,n[2]=(d-x)*b,n[3]=0,n[4]=(h-_)*y,n[5]=(1-(l+v))*y,n[6]=(g+m)*y,n[7]=0,n[8]=(d+x)*M,n[9]=(g-m)*M,n[10]=(1-(l+p))*M,n[11]=0,n[12]=r[0],n[13]=r[1],n[14]=r[2],n[15]=1,n}function R(n,t,r,e,o){var i=t[0],u=t[1],a=t[2],c=t[3],s=i+i,f=u+u,l=a+a,h=i*s,d=i*f,p=i*l,g=u*f,v=u*l,m=a*l,x=c*s,_=c*f,b=c*l,y=e[0],M=e[1],w=e[2],A=o[0],E=o[1],P=o[2],I=(1-(g+m))*y,S=(d+b)*y,T=(p-_)*y,j=(d-b)*M,L=(1-(h+m))*M,O=(v+x)*M,R=(p+_)*w,z=(v-x)*w,C=(1-(h+g))*w;return n[0]=I,n[1]=S,n[2]=T,n[3]=0,n[4]=j,n[5]=L,n[6]=O,n[7]=0,n[8]=R,n[9]=z,n[10]=C,n[11]=0,n[12]=r[0]+A-(I*A+j*E+R*P),n[13]=r[1]+E-(S*A+L*E+z*P),n[14]=r[2]+P-(T*A+O*E+C*P),n[15]=1,n}function z(n,t){var r=t[0],e=t[1],o=t[2],i=t[3],u=r+r,a=e+e,c=o+o,s=r*u,f=e*u,l=e*a,h=o*u,d=o*a,p=o*c,g=i*u,v=i*a,m=i*c;return n[0]=1-l-p,n[1]=f+m,n[2]=h-v,n[3]=0,n[4]=f-m,n[5]=1-s-p,n[6]=d+g,n[7]=0,n[8]=h+v,n[9]=d-g,n[10]=1-s-l,n[11]=0,n[12]=0,n[13]=0,n[14]=0,n[15]=1,n}function C(n,t,r,e,o,i,u){var a=1/(r-t),c=1/(o-e),s=1/(i-u);return n[0]=2*i*a,n[1]=0,n[2]=0,n[3]=0,n[4]=0,n[5]=2*i*c,n[6]=0,n[7]=0,n[8]=(r+t)*a,n[9]=(o+e)*c,n[10]=(u+i)*s,n[11]=-1,n[12]=0,n[13]=0,n[14]=u*i*2*s,n[15]=0,n}function V(n,t,r,e,o){var i=1/Math.tan(t/2),u=void 0;return n[0]=i/r,n[1]=0,n[2]=0,n[3]=0,n[4]=0,n[5]=i,n[6]=0,n[7]=0,n[8]=0,n[9]=0,n[11]=-1,n[12]=0,n[13]=0,n[15]=0,null!=o&&o!==1/0?(u=1/(e-o),n[10]=(o+e)*u,n[14]=2*o*e*u):(n[10]=-1,n[14]=-2*e),n}function B(n,t,r,e){var o=Math.tan(t.upDegrees*Math.PI/180),i=Math.tan(t.downDegrees*Math.PI/180),u=Math.tan(t.leftDegrees*Math.PI/180),a=Math.tan(t.rightDegrees*Math.PI/180),c=2/(u+a),s=2/(o+i);return n[0]=c,n[1]=0,n[2]=0,n[3]=0,n[4]=0,n[5]=s,n[6]=0,n[7]=0,n[8]=-(u-a)*c*.5,n[9]=(o-i)*s*.5,n[10]=e/(r-e),n[11]=-1,n[12]=0,n[13]=0,n[14]=e*r/(r-e),n[15]=0,n}function N(n,t,r,e,o,i,u){var a=1/(t-r),c=1/(e-o),s=1/(i-u);return n[0]=-2*a,n[1]=0,n[2]=0,n[3]=0,n[4]=0,n[5]=-2*c,n[6]=0,n[7]=0,n[8]=0,n[9]=0,n[10]=2*s,n[11]=0,n[12]=(t+r)*a,n[13]=(o+e)*c,n[14]=(u+i)*s,n[15]=1,n}function D(n,t,r,o){var i=void 0,u=void 0,a=void 0,c=void 0,f=void 0,l=void 0,h=void 0,d=void 0,p=void 0,g=void 0,v=t[0],m=t[1],x=t[2],_=o[0],b=o[1],y=o[2],M=r[0],w=r[1],A=r[2];return Math.abs(v-M)0&&(f*=d=1/Math.sqrt(d),l*=d,h*=d);var p=c*h-s*l,g=s*f-a*h,v=a*l-c*f;return(d=p*p+g*g+v*v)>0&&(p*=d=1/Math.sqrt(d),g*=d,v*=d),n[0]=p,n[1]=g,n[2]=v,n[3]=0,n[4]=l*v-h*g,n[5]=h*p-f*v,n[6]=f*g-l*p,n[7]=0,n[8]=f,n[9]=l,n[10]=h,n[11]=0,n[12]=o,n[13]=i,n[14]=u,n[15]=1,n}function Y(n){return"mat4("+n[0]+", "+n[1]+", "+n[2]+", "+n[3]+", "+n[4]+", "+n[5]+", "+n[6]+", "+n[7]+", "+n[8]+", "+n[9]+", "+n[10]+", "+n[11]+", "+n[12]+", "+n[13]+", "+n[14]+", "+n[15]+")"}function q(n){return Math.sqrt(Math.pow(n[0],2)+Math.pow(n[1],2)+Math.pow(n[2],2)+Math.pow(n[3],2)+Math.pow(n[4],2)+Math.pow(n[5],2)+Math.pow(n[6],2)+Math.pow(n[7],2)+Math.pow(n[8],2)+Math.pow(n[9],2)+Math.pow(n[10],2)+Math.pow(n[11],2)+Math.pow(n[12],2)+Math.pow(n[13],2)+Math.pow(n[14],2)+Math.pow(n[15],2))}function U(n,t,r){return n[0]=t[0]+r[0],n[1]=t[1]+r[1],n[2]=t[2]+r[2],n[3]=t[3]+r[3],n[4]=t[4]+r[4],n[5]=t[5]+r[5],n[6]=t[6]+r[6],n[7]=t[7]+r[7],n[8]=t[8]+r[8],n[9]=t[9]+r[9],n[10]=t[10]+r[10],n[11]=t[11]+r[11],n[12]=t[12]+r[12],n[13]=t[13]+r[13],n[14]=t[14]+r[14],n[15]=t[15]+r[15],n}function F(n,t,r){return n[0]=t[0]-r[0],n[1]=t[1]-r[1],n[2]=t[2]-r[2],n[3]=t[3]-r[3],n[4]=t[4]-r[4],n[5]=t[5]-r[5],n[6]=t[6]-r[6],n[7]=t[7]-r[7],n[8]=t[8]-r[8],n[9]=t[9]-r[9],n[10]=t[10]-r[10],n[11]=t[11]-r[11],n[12]=t[12]-r[12],n[13]=t[13]-r[13],n[14]=t[14]-r[14],n[15]=t[15]-r[15],n}function X(n,t,r){return n[0]=t[0]*r,n[1]=t[1]*r,n[2]=t[2]*r,n[3]=t[3]*r,n[4]=t[4]*r,n[5]=t[5]*r,n[6]=t[6]*r,n[7]=t[7]*r,n[8]=t[8]*r,n[9]=t[9]*r,n[10]=t[10]*r,n[11]=t[11]*r,n[12]=t[12]*r,n[13]=t[13]*r,n[14]=t[14]*r,n[15]=t[15]*r,n}function Z(n,t,r,e){return n[0]=t[0]+r[0]*e,n[1]=t[1]+r[1]*e,n[2]=t[2]+r[2]*e,n[3]=t[3]+r[3]*e,n[4]=t[4]+r[4]*e,n[5]=t[5]+r[5]*e,n[6]=t[6]+r[6]*e,n[7]=t[7]+r[7]*e,n[8]=t[8]+r[8]*e,n[9]=t[9]+r[9]*e,n[10]=t[10]+r[10]*e,n[11]=t[11]+r[11]*e,n[12]=t[12]+r[12]*e,n[13]=t[13]+r[13]*e,n[14]=t[14]+r[14]*e,n[15]=t[15]+r[15]*e,n}function G(n,t){return n[0]===t[0]&&n[1]===t[1]&&n[2]===t[2]&&n[3]===t[3]&&n[4]===t[4]&&n[5]===t[5]&&n[6]===t[6]&&n[7]===t[7]&&n[8]===t[8]&&n[9]===t[9]&&n[10]===t[10]&&n[11]===t[11]&&n[12]===t[12]&&n[13]===t[13]&&n[14]===t[14]&&n[15]===t[15]}function W(n,t){var r=n[0],o=n[1],i=n[2],u=n[3],a=n[4],c=n[5],s=n[6],f=n[7],l=n[8],h=n[9],d=n[10],p=n[11],g=n[12],v=n[13],m=n[14],x=n[15],_=t[0],b=t[1],y=t[2],M=t[3],w=t[4],A=t[5],E=t[6],P=t[7],I=t[8],S=t[9],T=t[10],j=t[11],L=t[12],O=t[13],R=t[14],z=t[15];return Math.abs(r-_)<=e.EPSILON*Math.max(1,Math.abs(r),Math.abs(_))&&Math.abs(o-b)<=e.EPSILON*Math.max(1,Math.abs(o),Math.abs(b))&&Math.abs(i-y)<=e.EPSILON*Math.max(1,Math.abs(i),Math.abs(y))&&Math.abs(u-M)<=e.EPSILON*Math.max(1,Math.abs(u),Math.abs(M))&&Math.abs(a-w)<=e.EPSILON*Math.max(1,Math.abs(a),Math.abs(w))&&Math.abs(c-A)<=e.EPSILON*Math.max(1,Math.abs(c),Math.abs(A))&&Math.abs(s-E)<=e.EPSILON*Math.max(1,Math.abs(s),Math.abs(E))&&Math.abs(f-P)<=e.EPSILON*Math.max(1,Math.abs(f),Math.abs(P))&&Math.abs(l-I)<=e.EPSILON*Math.max(1,Math.abs(l),Math.abs(I))&&Math.abs(h-S)<=e.EPSILON*Math.max(1,Math.abs(h),Math.abs(S))&&Math.abs(d-T)<=e.EPSILON*Math.max(1,Math.abs(d),Math.abs(T))&&Math.abs(p-j)<=e.EPSILON*Math.max(1,Math.abs(p),Math.abs(j))&&Math.abs(g-L)<=e.EPSILON*Math.max(1,Math.abs(g),Math.abs(L))&&Math.abs(v-O)<=e.EPSILON*Math.max(1,Math.abs(v),Math.abs(O))&&Math.abs(m-R)<=e.EPSILON*Math.max(1,Math.abs(m),Math.abs(R))&&Math.abs(x-z)<=e.EPSILON*Math.max(1,Math.abs(x),Math.abs(z))}var H=p,$=F},"./node_modules/gl-matrix/lib/gl-matrix/quat.js":function(n,t,r){"use strict";r.r(t),r.d(t,"create",function(){return a}),r.d(t,"identity",function(){return c}),r.d(t,"setAxisAngle",function(){return s}),r.d(t,"getAxisAngle",function(){return f}),r.d(t,"multiply",function(){return l}),r.d(t,"rotateX",function(){return h}),r.d(t,"rotateY",function(){return d}),r.d(t,"rotateZ",function(){return p}),r.d(t,"calculateW",function(){return g}),r.d(t,"slerp",function(){return v}),r.d(t,"random",function(){return m}),r.d(t,"invert",function(){return x}),r.d(t,"conjugate",function(){return _}),r.d(t,"fromMat3",function(){return b}),r.d(t,"fromEuler",function(){return y}),r.d(t,"str",function(){return M}),r.d(t,"clone",function(){return T}),r.d(t,"fromValues",function(){return j}),r.d(t,"copy",function(){return L}),r.d(t,"set",function(){return O}),r.d(t,"add",function(){return R}),r.d(t,"mul",function(){return z}),r.d(t,"scale",function(){return C}),r.d(t,"dot",function(){return V}),r.d(t,"lerp",function(){return B}),r.d(t,"length",function(){return N}),r.d(t,"len",function(){return D}),r.d(t,"squaredLength",function(){return k}),r.d(t,"sqrLen",function(){return Y}),r.d(t,"normalize",function(){return q}),r.d(t,"exactEquals",function(){return U}),r.d(t,"equals",function(){return F}),r.d(t,"rotationTo",function(){return X}),r.d(t,"sqlerp",function(){return Z}),r.d(t,"setAxes",function(){return G});var e=r("./node_modules/gl-matrix/lib/gl-matrix/common.js"),o=r("./node_modules/gl-matrix/lib/gl-matrix/mat3.js"),i=r("./node_modules/gl-matrix/lib/gl-matrix/vec3.js"),u=r("./node_modules/gl-matrix/lib/gl-matrix/vec4.js");function a(){var n=new e.ARRAY_TYPE(4);return e.ARRAY_TYPE!=Float32Array&&(n[0]=0,n[1]=0,n[2]=0),n[3]=1,n}function c(n){return n[0]=0,n[1]=0,n[2]=0,n[3]=1,n}function s(n,t,r){r*=.5;var e=Math.sin(r);return n[0]=e*t[0],n[1]=e*t[1],n[2]=e*t[2],n[3]=Math.cos(r),n}function f(n,t){var r=2*Math.acos(t[3]),o=Math.sin(r/2);return o>e.EPSILON?(n[0]=t[0]/o,n[1]=t[1]/o,n[2]=t[2]/o):(n[0]=1,n[1]=0,n[2]=0),r}function l(n,t,r){var e=t[0],o=t[1],i=t[2],u=t[3],a=r[0],c=r[1],s=r[2],f=r[3];return n[0]=e*f+u*a+o*s-i*c,n[1]=o*f+u*c+i*a-e*s,n[2]=i*f+u*s+e*c-o*a,n[3]=u*f-e*a-o*c-i*s,n}function h(n,t,r){r*=.5;var e=t[0],o=t[1],i=t[2],u=t[3],a=Math.sin(r),c=Math.cos(r);return n[0]=e*c+u*a,n[1]=o*c+i*a,n[2]=i*c-o*a,n[3]=u*c-e*a,n}function d(n,t,r){r*=.5;var e=t[0],o=t[1],i=t[2],u=t[3],a=Math.sin(r),c=Math.cos(r);return n[0]=e*c-i*a,n[1]=o*c+u*a,n[2]=i*c+e*a,n[3]=u*c-o*a,n}function p(n,t,r){r*=.5;var e=t[0],o=t[1],i=t[2],u=t[3],a=Math.sin(r),c=Math.cos(r);return n[0]=e*c+o*a,n[1]=o*c-e*a,n[2]=i*c+u*a,n[3]=u*c-i*a,n}function g(n,t){var r=t[0],e=t[1],o=t[2];return n[0]=r,n[1]=e,n[2]=o,n[3]=Math.sqrt(Math.abs(1-r*r-e*e-o*o)),n}function v(n,t,r,o){var i=t[0],u=t[1],a=t[2],c=t[3],s=r[0],f=r[1],l=r[2],h=r[3],d=void 0,p=void 0,g=void 0,v=void 0,m=void 0;return(p=i*s+u*f+a*l+c*h)<0&&(p=-p,s=-s,f=-f,l=-l,h=-h),1-p>e.EPSILON?(d=Math.acos(p),g=Math.sin(d),v=Math.sin((1-o)*d)/g,m=Math.sin(o*d)/g):(v=1-o,m=o),n[0]=v*i+m*s,n[1]=v*u+m*f,n[2]=v*a+m*l,n[3]=v*c+m*h,n}function m(n){var t=e.RANDOM(),r=e.RANDOM(),o=e.RANDOM(),i=Math.sqrt(1-t),u=Math.sqrt(t);return n[0]=i*Math.sin(2*Math.PI*r),n[1]=i*Math.cos(2*Math.PI*r),n[2]=u*Math.sin(2*Math.PI*o),n[3]=u*Math.cos(2*Math.PI*o),n}function x(n,t){var r=t[0],e=t[1],o=t[2],i=t[3],u=r*r+e*e+o*o+i*i,a=u?1/u:0;return n[0]=-r*a,n[1]=-e*a,n[2]=-o*a,n[3]=i*a,n}function _(n,t){return n[0]=-t[0],n[1]=-t[1],n[2]=-t[2],n[3]=t[3],n}function b(n,t){var r=t[0]+t[4]+t[8],e=void 0;if(r>0)e=Math.sqrt(r+1),n[3]=.5*e,e=.5/e,n[0]=(t[5]-t[7])*e,n[1]=(t[6]-t[2])*e,n[2]=(t[1]-t[3])*e;else{var o=0;t[4]>t[0]&&(o=1),t[8]>t[3*o+o]&&(o=2);var i=(o+1)%3,u=(o+2)%3;e=Math.sqrt(t[3*o+o]-t[3*i+i]-t[3*u+u]+1),n[o]=.5*e,e=.5/e,n[3]=(t[3*i+u]-t[3*u+i])*e,n[i]=(t[3*i+o]+t[3*o+i])*e,n[u]=(t[3*u+o]+t[3*o+u])*e}return n}function y(n,t,r,e){var o=.5*Math.PI/180;t*=o,r*=o,e*=o;var i=Math.sin(t),u=Math.cos(t),a=Math.sin(r),c=Math.cos(r),s=Math.sin(e),f=Math.cos(e);return n[0]=i*c*f-u*a*s,n[1]=u*a*f+i*c*s,n[2]=u*c*s-i*a*f,n[3]=u*c*f+i*a*s,n}function M(n){return"quat("+n[0]+", "+n[1]+", "+n[2]+", "+n[3]+")"}var w,A,E,P,I,S,T=u.clone,j=u.fromValues,L=u.copy,O=u.set,R=u.add,z=l,C=u.scale,V=u.dot,B=u.lerp,N=u.length,D=N,k=u.squaredLength,Y=k,q=u.normalize,U=u.exactEquals,F=u.equals,X=(w=i.create(),A=i.fromValues(1,0,0),E=i.fromValues(0,1,0),function(n,t,r){var e=i.dot(t,r);return e<-.999999?(i.cross(w,A,t),i.len(w)<1e-6&&i.cross(w,E,t),i.normalize(w,w),s(n,w,Math.PI),n):e>.999999?(n[0]=0,n[1]=0,n[2]=0,n[3]=1,n):(i.cross(w,t,r),n[0]=w[0],n[1]=w[1],n[2]=w[2],n[3]=1+e,q(n,n))}),Z=(P=a(),I=a(),function(n,t,r,e,o,i){return v(P,t,o,i),v(I,r,e,i),v(n,P,I,2*i*(1-i)),n}),G=(S=o.create(),function(n,t,r,e){return S[0]=r[0],S[3]=r[1],S[6]=r[2],S[1]=e[0],S[4]=e[1],S[7]=e[2],S[2]=-t[0],S[5]=-t[1],S[8]=-t[2],q(n,b(n,S))})},"./node_modules/gl-matrix/lib/gl-matrix/quat2.js":function(n,t,r){"use strict";r.r(t),r.d(t,"create",function(){return u}),r.d(t,"clone",function(){return a}),r.d(t,"fromValues",function(){return c}),r.d(t,"fromRotationTranslationValues",function(){return s}),r.d(t,"fromRotationTranslation",function(){return f}),r.d(t,"fromTranslation",function(){return l}),r.d(t,"fromRotation",function(){return h}),r.d(t,"fromMat4",function(){return d}),r.d(t,"copy",function(){return p}),r.d(t,"identity",function(){return g}),r.d(t,"set",function(){return v}),r.d(t,"getReal",function(){return m}),r.d(t,"getDual",function(){return x}),r.d(t,"setReal",function(){return _}),r.d(t,"setDual",function(){return b}),r.d(t,"getTranslation",function(){return y}),r.d(t,"translate",function(){return M}),r.d(t,"rotateX",function(){return w}),r.d(t,"rotateY",function(){return A}),r.d(t,"rotateZ",function(){return E}),r.d(t,"rotateByQuatAppend",function(){return P}),r.d(t,"rotateByQuatPrepend",function(){return I}),r.d(t,"rotateAroundAxis",function(){return S}),r.d(t,"add",function(){return T}),r.d(t,"multiply",function(){return j}),r.d(t,"mul",function(){return L}),r.d(t,"scale",function(){return O}),r.d(t,"dot",function(){return R}),r.d(t,"lerp",function(){return z}),r.d(t,"invert",function(){return C}),r.d(t,"conjugate",function(){return V}),r.d(t,"length",function(){return B}),r.d(t,"len",function(){return N}),r.d(t,"squaredLength",function(){return D}),r.d(t,"sqrLen",function(){return k}),r.d(t,"normalize",function(){return Y}),r.d(t,"str",function(){return q}),r.d(t,"exactEquals",function(){return U}),r.d(t,"equals",function(){return F});var e=r("./node_modules/gl-matrix/lib/gl-matrix/common.js"),o=r("./node_modules/gl-matrix/lib/gl-matrix/quat.js"),i=r("./node_modules/gl-matrix/lib/gl-matrix/mat4.js");function u(){var n=new e.ARRAY_TYPE(8);return e.ARRAY_TYPE!=Float32Array&&(n[0]=0,n[1]=0,n[2]=0,n[4]=0,n[5]=0,n[6]=0,n[7]=0),n[3]=1,n}function a(n){var t=new e.ARRAY_TYPE(8);return t[0]=n[0],t[1]=n[1],t[2]=n[2],t[3]=n[3],t[4]=n[4],t[5]=n[5],t[6]=n[6],t[7]=n[7],t}function c(n,t,r,o,i,u,a,c){var s=new e.ARRAY_TYPE(8);return s[0]=n,s[1]=t,s[2]=r,s[3]=o,s[4]=i,s[5]=u,s[6]=a,s[7]=c,s}function s(n,t,r,o,i,u,a){var c=new e.ARRAY_TYPE(8);c[0]=n,c[1]=t,c[2]=r,c[3]=o;var s=.5*i,f=.5*u,l=.5*a;return c[4]=s*o+f*r-l*t,c[5]=f*o+l*n-s*r,c[6]=l*o+s*t-f*n,c[7]=-s*n-f*t-l*r,c}function f(n,t,r){var e=.5*r[0],o=.5*r[1],i=.5*r[2],u=t[0],a=t[1],c=t[2],s=t[3];return n[0]=u,n[1]=a,n[2]=c,n[3]=s,n[4]=e*s+o*c-i*a,n[5]=o*s+i*u-e*c,n[6]=i*s+e*a-o*u,n[7]=-e*u-o*a-i*c,n}function l(n,t){return n[0]=0,n[1]=0,n[2]=0,n[3]=1,n[4]=.5*t[0],n[5]=.5*t[1],n[6]=.5*t[2],n[7]=0,n}function h(n,t){return n[0]=t[0],n[1]=t[1],n[2]=t[2],n[3]=t[3],n[4]=0,n[5]=0,n[6]=0,n[7]=0,n}function d(n,t){var r=o.create();i.getRotation(r,t);var u=new e.ARRAY_TYPE(3);return i.getTranslation(u,t),f(n,r,u),n}function p(n,t){return n[0]=t[0],n[1]=t[1],n[2]=t[2],n[3]=t[3],n[4]=t[4],n[5]=t[5],n[6]=t[6],n[7]=t[7],n}function g(n){return n[0]=0,n[1]=0,n[2]=0,n[3]=1,n[4]=0,n[5]=0,n[6]=0,n[7]=0,n}function v(n,t,r,e,o,i,u,a,c){return n[0]=t,n[1]=r,n[2]=e,n[3]=o,n[4]=i,n[5]=u,n[6]=a,n[7]=c,n}var m=o.copy;function x(n,t){return n[0]=t[4],n[1]=t[5],n[2]=t[6],n[3]=t[7],n}var _=o.copy;function b(n,t){return n[4]=t[0],n[5]=t[1],n[6]=t[2],n[7]=t[3],n}function y(n,t){var r=t[4],e=t[5],o=t[6],i=t[7],u=-t[0],a=-t[1],c=-t[2],s=t[3];return n[0]=2*(r*s+i*u+e*c-o*a),n[1]=2*(e*s+i*a+o*u-r*c),n[2]=2*(o*s+i*c+r*a-e*u),n}function M(n,t,r){var e=t[0],o=t[1],i=t[2],u=t[3],a=.5*r[0],c=.5*r[1],s=.5*r[2],f=t[4],l=t[5],h=t[6],d=t[7];return n[0]=e,n[1]=o,n[2]=i,n[3]=u,n[4]=u*a+o*s-i*c+f,n[5]=u*c+i*a-e*s+l,n[6]=u*s+e*c-o*a+h,n[7]=-e*a-o*c-i*s+d,n}function w(n,t,r){var e=-t[0],i=-t[1],u=-t[2],a=t[3],c=t[4],s=t[5],f=t[6],l=t[7],h=c*a+l*e+s*u-f*i,d=s*a+l*i+f*e-c*u,p=f*a+l*u+c*i-s*e,g=l*a-c*e-s*i-f*u;return o.rotateX(n,t,r),e=n[0],i=n[1],u=n[2],a=n[3],n[4]=h*a+g*e+d*u-p*i,n[5]=d*a+g*i+p*e-h*u,n[6]=p*a+g*u+h*i-d*e,n[7]=g*a-h*e-d*i-p*u,n}function A(n,t,r){var e=-t[0],i=-t[1],u=-t[2],a=t[3],c=t[4],s=t[5],f=t[6],l=t[7],h=c*a+l*e+s*u-f*i,d=s*a+l*i+f*e-c*u,p=f*a+l*u+c*i-s*e,g=l*a-c*e-s*i-f*u;return o.rotateY(n,t,r),e=n[0],i=n[1],u=n[2],a=n[3],n[4]=h*a+g*e+d*u-p*i,n[5]=d*a+g*i+p*e-h*u,n[6]=p*a+g*u+h*i-d*e,n[7]=g*a-h*e-d*i-p*u,n}function E(n,t,r){var e=-t[0],i=-t[1],u=-t[2],a=t[3],c=t[4],s=t[5],f=t[6],l=t[7],h=c*a+l*e+s*u-f*i,d=s*a+l*i+f*e-c*u,p=f*a+l*u+c*i-s*e,g=l*a-c*e-s*i-f*u;return o.rotateZ(n,t,r),e=n[0],i=n[1],u=n[2],a=n[3],n[4]=h*a+g*e+d*u-p*i,n[5]=d*a+g*i+p*e-h*u,n[6]=p*a+g*u+h*i-d*e,n[7]=g*a-h*e-d*i-p*u,n}function P(n,t,r){var e=r[0],o=r[1],i=r[2],u=r[3],a=t[0],c=t[1],s=t[2],f=t[3];return n[0]=a*u+f*e+c*i-s*o,n[1]=c*u+f*o+s*e-a*i,n[2]=s*u+f*i+a*o-c*e,n[3]=f*u-a*e-c*o-s*i,a=t[4],c=t[5],s=t[6],f=t[7],n[4]=a*u+f*e+c*i-s*o,n[5]=c*u+f*o+s*e-a*i,n[6]=s*u+f*i+a*o-c*e,n[7]=f*u-a*e-c*o-s*i,n}function I(n,t,r){var e=t[0],o=t[1],i=t[2],u=t[3],a=r[0],c=r[1],s=r[2],f=r[3];return n[0]=e*f+u*a+o*s-i*c,n[1]=o*f+u*c+i*a-e*s,n[2]=i*f+u*s+e*c-o*a,n[3]=u*f-e*a-o*c-i*s,a=r[4],c=r[5],s=r[6],f=r[7],n[4]=e*f+u*a+o*s-i*c,n[5]=o*f+u*c+i*a-e*s,n[6]=i*f+u*s+e*c-o*a,n[7]=u*f-e*a-o*c-i*s,n}function S(n,t,r,o){if(Math.abs(o)0){r=Math.sqrt(r);var e=t[0]/r,o=t[1]/r,i=t[2]/r,u=t[3]/r,a=t[4],c=t[5],s=t[6],f=t[7],l=e*a+o*c+i*s+u*f;n[0]=e,n[1]=o,n[2]=i,n[3]=u,n[4]=(a-e*l)/r,n[5]=(c-o*l)/r,n[6]=(s-i*l)/r,n[7]=(f-u*l)/r}return n}function q(n){return"quat2("+n[0]+", "+n[1]+", "+n[2]+", "+n[3]+", "+n[4]+", "+n[5]+", "+n[6]+", "+n[7]+")"}function U(n,t){return n[0]===t[0]&&n[1]===t[1]&&n[2]===t[2]&&n[3]===t[3]&&n[4]===t[4]&&n[5]===t[5]&&n[6]===t[6]&&n[7]===t[7]}function F(n,t){var r=n[0],o=n[1],i=n[2],u=n[3],a=n[4],c=n[5],s=n[6],f=n[7],l=t[0],h=t[1],d=t[2],p=t[3],g=t[4],v=t[5],m=t[6],x=t[7];return Math.abs(r-l)<=e.EPSILON*Math.max(1,Math.abs(r),Math.abs(l))&&Math.abs(o-h)<=e.EPSILON*Math.max(1,Math.abs(o),Math.abs(h))&&Math.abs(i-d)<=e.EPSILON*Math.max(1,Math.abs(i),Math.abs(d))&&Math.abs(u-p)<=e.EPSILON*Math.max(1,Math.abs(u),Math.abs(p))&&Math.abs(a-g)<=e.EPSILON*Math.max(1,Math.abs(a),Math.abs(g))&&Math.abs(c-v)<=e.EPSILON*Math.max(1,Math.abs(c),Math.abs(v))&&Math.abs(s-m)<=e.EPSILON*Math.max(1,Math.abs(s),Math.abs(m))&&Math.abs(f-x)<=e.EPSILON*Math.max(1,Math.abs(f),Math.abs(x))}},"./node_modules/gl-matrix/lib/gl-matrix/vec2.js":function(n,t,r){"use strict";r.r(t),r.d(t,"create",function(){return o}),r.d(t,"clone",function(){return i}),r.d(t,"fromValues",function(){return u}),r.d(t,"copy",function(){return a}),r.d(t,"set",function(){return c}),r.d(t,"add",function(){return s}),r.d(t,"subtract",function(){return f}),r.d(t,"multiply",function(){return l}),r.d(t,"divide",function(){return h}),r.d(t,"ceil",function(){return d}),r.d(t,"floor",function(){return p}),r.d(t,"min",function(){return g}),r.d(t,"max",function(){return v}),r.d(t,"round",function(){return m}),r.d(t,"scale",function(){return x}),r.d(t,"scaleAndAdd",function(){return _}),r.d(t,"distance",function(){return b}),r.d(t,"squaredDistance",function(){return y}),r.d(t,"length",function(){return M}),r.d(t,"squaredLength",function(){return w}),r.d(t,"negate",function(){return A}),r.d(t,"inverse",function(){return E}),r.d(t,"normalize",function(){return P}),r.d(t,"dot",function(){return I}),r.d(t,"cross",function(){return S}),r.d(t,"lerp",function(){return T}),r.d(t,"random",function(){return j}),r.d(t,"transformMat2",function(){return L}),r.d(t,"transformMat2d",function(){return O}),r.d(t,"transformMat3",function(){return R}),r.d(t,"transformMat4",function(){return z}),r.d(t,"rotate",function(){return C}),r.d(t,"angle",function(){return V}),r.d(t,"str",function(){return B}),r.d(t,"exactEquals",function(){return N}),r.d(t,"equals",function(){return D}),r.d(t,"len",function(){return Y}),r.d(t,"sub",function(){return q}),r.d(t,"mul",function(){return U}),r.d(t,"div",function(){return F}),r.d(t,"dist",function(){return X}),r.d(t,"sqrDist",function(){return Z}),r.d(t,"sqrLen",function(){return G}),r.d(t,"forEach",function(){return W});var e=r("./node_modules/gl-matrix/lib/gl-matrix/common.js");function o(){var n=new e.ARRAY_TYPE(2);return e.ARRAY_TYPE!=Float32Array&&(n[0]=0,n[1]=0),n}function i(n){var t=new e.ARRAY_TYPE(2);return t[0]=n[0],t[1]=n[1],t}function u(n,t){var r=new e.ARRAY_TYPE(2);return r[0]=n,r[1]=t,r}function a(n,t){return n[0]=t[0],n[1]=t[1],n}function c(n,t,r){return n[0]=t,n[1]=r,n}function s(n,t,r){return n[0]=t[0]+r[0],n[1]=t[1]+r[1],n}function f(n,t,r){return n[0]=t[0]-r[0],n[1]=t[1]-r[1],n}function l(n,t,r){return n[0]=t[0]*r[0],n[1]=t[1]*r[1],n}function h(n,t,r){return n[0]=t[0]/r[0],n[1]=t[1]/r[1],n}function d(n,t){return n[0]=Math.ceil(t[0]),n[1]=Math.ceil(t[1]),n}function p(n,t){return n[0]=Math.floor(t[0]),n[1]=Math.floor(t[1]),n}function g(n,t,r){return n[0]=Math.min(t[0],r[0]),n[1]=Math.min(t[1],r[1]),n}function v(n,t,r){return n[0]=Math.max(t[0],r[0]),n[1]=Math.max(t[1],r[1]),n}function m(n,t){return n[0]=Math.round(t[0]),n[1]=Math.round(t[1]),n}function x(n,t,r){return n[0]=t[0]*r,n[1]=t[1]*r,n}function _(n,t,r,e){return n[0]=t[0]+r[0]*e,n[1]=t[1]+r[1]*e,n}function b(n,t){var r=t[0]-n[0],e=t[1]-n[1];return Math.sqrt(r*r+e*e)}function y(n,t){var r=t[0]-n[0],e=t[1]-n[1];return r*r+e*e}function M(n){var t=n[0],r=n[1];return Math.sqrt(t*t+r*r)}function w(n){var t=n[0],r=n[1];return t*t+r*r}function A(n,t){return n[0]=-t[0],n[1]=-t[1],n}function E(n,t){return n[0]=1/t[0],n[1]=1/t[1],n}function P(n,t){var r=t[0],e=t[1],o=r*r+e*e;return o>0&&(o=1/Math.sqrt(o),n[0]=t[0]*o,n[1]=t[1]*o),n}function I(n,t){return n[0]*t[0]+n[1]*t[1]}function S(n,t,r){var e=t[0]*r[1]-t[1]*r[0];return n[0]=n[1]=0,n[2]=e,n}function T(n,t,r,e){var o=t[0],i=t[1];return n[0]=o+e*(r[0]-o),n[1]=i+e*(r[1]-i),n}function j(n,t){t=t||1;var r=2*e.RANDOM()*Math.PI;return n[0]=Math.cos(r)*t,n[1]=Math.sin(r)*t,n}function L(n,t,r){var e=t[0],o=t[1];return n[0]=r[0]*e+r[2]*o,n[1]=r[1]*e+r[3]*o,n}function O(n,t,r){var e=t[0],o=t[1];return n[0]=r[0]*e+r[2]*o+r[4],n[1]=r[1]*e+r[3]*o+r[5],n}function R(n,t,r){var e=t[0],o=t[1];return n[0]=r[0]*e+r[3]*o+r[6],n[1]=r[1]*e+r[4]*o+r[7],n}function z(n,t,r){var e=t[0],o=t[1];return n[0]=r[0]*e+r[4]*o+r[12],n[1]=r[1]*e+r[5]*o+r[13],n}function C(n,t,r,e){var o=t[0]-r[0],i=t[1]-r[1],u=Math.sin(e),a=Math.cos(e);return n[0]=o*a-i*u+r[0],n[1]=o*u+i*a+r[1],n}function V(n,t){var r=n[0],e=n[1],o=t[0],i=t[1],u=r*r+e*e;u>0&&(u=1/Math.sqrt(u));var a=o*o+i*i;a>0&&(a=1/Math.sqrt(a));var c=(r*o+e*i)*u*a;return c>1?0:c<-1?Math.PI:Math.acos(c)}function B(n){return"vec2("+n[0]+", "+n[1]+")"}function N(n,t){return n[0]===t[0]&&n[1]===t[1]}function D(n,t){var r=n[0],o=n[1],i=t[0],u=t[1];return Math.abs(r-i)<=e.EPSILON*Math.max(1,Math.abs(r),Math.abs(i))&&Math.abs(o-u)<=e.EPSILON*Math.max(1,Math.abs(o),Math.abs(u))}var k,Y=M,q=f,U=l,F=h,X=b,Z=y,G=w,W=(k=o(),function(n,t,r,e,o,i){var u=void 0,a=void 0;for(t||(t=2),r||(r=0),a=e?Math.min(e*t+r,n.length):n.length,u=r;u0&&(i=1/Math.sqrt(i),n[0]=t[0]*i,n[1]=t[1]*i,n[2]=t[2]*i),n}function I(n,t){return n[0]*t[0]+n[1]*t[1]+n[2]*t[2]}function S(n,t,r){var e=t[0],o=t[1],i=t[2],u=r[0],a=r[1],c=r[2];return n[0]=o*c-i*a,n[1]=i*u-e*c,n[2]=e*a-o*u,n}function T(n,t,r,e){var o=t[0],i=t[1],u=t[2];return n[0]=o+e*(r[0]-o),n[1]=i+e*(r[1]-i),n[2]=u+e*(r[2]-u),n}function j(n,t,r,e,o,i){var u=i*i,a=u*(2*i-3)+1,c=u*(i-2)+i,s=u*(i-1),f=u*(3-2*i);return n[0]=t[0]*a+r[0]*c+e[0]*s+o[0]*f,n[1]=t[1]*a+r[1]*c+e[1]*s+o[1]*f,n[2]=t[2]*a+r[2]*c+e[2]*s+o[2]*f,n}function L(n,t,r,e,o,i){var u=1-i,a=u*u,c=i*i,s=a*u,f=3*i*a,l=3*c*u,h=c*i;return n[0]=t[0]*s+r[0]*f+e[0]*l+o[0]*h,n[1]=t[1]*s+r[1]*f+e[1]*l+o[1]*h,n[2]=t[2]*s+r[2]*f+e[2]*l+o[2]*h,n}function O(n,t){t=t||1;var r=2*e.RANDOM()*Math.PI,o=2*e.RANDOM()-1,i=Math.sqrt(1-o*o)*t;return n[0]=Math.cos(r)*i,n[1]=Math.sin(r)*i,n[2]=o*t,n}function R(n,t,r){var e=t[0],o=t[1],i=t[2],u=r[3]*e+r[7]*o+r[11]*i+r[15];return u=u||1,n[0]=(r[0]*e+r[4]*o+r[8]*i+r[12])/u,n[1]=(r[1]*e+r[5]*o+r[9]*i+r[13])/u,n[2]=(r[2]*e+r[6]*o+r[10]*i+r[14])/u,n}function z(n,t,r){var e=t[0],o=t[1],i=t[2];return n[0]=e*r[0]+o*r[3]+i*r[6],n[1]=e*r[1]+o*r[4]+i*r[7],n[2]=e*r[2]+o*r[5]+i*r[8],n}function C(n,t,r){var e=r[0],o=r[1],i=r[2],u=r[3],a=t[0],c=t[1],s=t[2],f=o*s-i*c,l=i*a-e*s,h=e*c-o*a,d=o*h-i*l,p=i*f-e*h,g=e*l-o*f,v=2*u;return f*=v,l*=v,h*=v,d*=2,p*=2,g*=2,n[0]=a+f+d,n[1]=c+l+p,n[2]=s+h+g,n}function V(n,t,r,e){var o=[],i=[];return o[0]=t[0]-r[0],o[1]=t[1]-r[1],o[2]=t[2]-r[2],i[0]=o[0],i[1]=o[1]*Math.cos(e)-o[2]*Math.sin(e),i[2]=o[1]*Math.sin(e)+o[2]*Math.cos(e),n[0]=i[0]+r[0],n[1]=i[1]+r[1],n[2]=i[2]+r[2],n}function B(n,t,r,e){var o=[],i=[];return o[0]=t[0]-r[0],o[1]=t[1]-r[1],o[2]=t[2]-r[2],i[0]=o[2]*Math.sin(e)+o[0]*Math.cos(e),i[1]=o[1],i[2]=o[2]*Math.cos(e)-o[0]*Math.sin(e),n[0]=i[0]+r[0],n[1]=i[1]+r[1],n[2]=i[2]+r[2],n}function N(n,t,r,e){var o=[],i=[];return o[0]=t[0]-r[0],o[1]=t[1]-r[1],o[2]=t[2]-r[2],i[0]=o[0]*Math.cos(e)-o[1]*Math.sin(e),i[1]=o[0]*Math.sin(e)+o[1]*Math.cos(e),i[2]=o[2],n[0]=i[0]+r[0],n[1]=i[1]+r[1],n[2]=i[2]+r[2],n}function D(n,t){var r=a(n[0],n[1],n[2]),e=a(t[0],t[1],t[2]);P(r,r),P(e,e);var o=I(r,e);return o>1?0:o<-1?Math.PI:Math.acos(o)}function k(n){return"vec3("+n[0]+", "+n[1]+", "+n[2]+")"}function Y(n,t){return n[0]===t[0]&&n[1]===t[1]&&n[2]===t[2]}function q(n,t){var r=n[0],o=n[1],i=n[2],u=t[0],a=t[1],c=t[2];return Math.abs(r-u)<=e.EPSILON*Math.max(1,Math.abs(r),Math.abs(u))&&Math.abs(o-a)<=e.EPSILON*Math.max(1,Math.abs(o),Math.abs(a))&&Math.abs(i-c)<=e.EPSILON*Math.max(1,Math.abs(i),Math.abs(c))}var U,F=l,X=h,Z=d,G=y,W=M,H=u,$=w,K=(U=o(),function(n,t,r,e,o,i){var u=void 0,a=void 0;for(t||(t=3),r||(r=0),a=e?Math.min(e*t+r,n.length):n.length,u=r;u0&&(u=1/Math.sqrt(u),n[0]=r*u,n[1]=e*u,n[2]=o*u,n[3]=i*u),n}function I(n,t){return n[0]*t[0]+n[1]*t[1]+n[2]*t[2]+n[3]*t[3]}function S(n,t,r,e){var o=t[0],i=t[1],u=t[2],a=t[3];return n[0]=o+e*(r[0]-o),n[1]=i+e*(r[1]-i),n[2]=u+e*(r[2]-u),n[3]=a+e*(r[3]-a),n}function T(n,t){var r,o,i,u,a,c;t=t||1;do{a=(r=2*e.RANDOM()-1)*r+(o=2*e.RANDOM()-1)*o}while(a>=1);do{c=(i=2*e.RANDOM()-1)*i+(u=2*e.RANDOM()-1)*u}while(c>=1);var s=Math.sqrt((1-a)/c);return n[0]=t*r,n[1]=t*o,n[2]=t*i*s,n[3]=t*u*s,n}function j(n,t,r){var e=t[0],o=t[1],i=t[2],u=t[3];return n[0]=r[0]*e+r[4]*o+r[8]*i+r[12]*u,n[1]=r[1]*e+r[5]*o+r[9]*i+r[13]*u,n[2]=r[2]*e+r[6]*o+r[10]*i+r[14]*u,n[3]=r[3]*e+r[7]*o+r[11]*i+r[15]*u,n}function L(n,t,r){var e=t[0],o=t[1],i=t[2],u=r[0],a=r[1],c=r[2],s=r[3],f=s*e+a*i-c*o,l=s*o+c*e-u*i,h=s*i+u*o-a*e,d=-u*e-a*o-c*i;return n[0]=f*s+d*-u+l*-c-h*-a,n[1]=l*s+d*-a+h*-u-f*-c,n[2]=h*s+d*-c+f*-a-l*-u,n[3]=t[3],n}function O(n){return"vec4("+n[0]+", "+n[1]+", "+n[2]+", "+n[3]+")"}function R(n,t){return n[0]===t[0]&&n[1]===t[1]&&n[2]===t[2]&&n[3]===t[3]}function z(n,t){var r=n[0],o=n[1],i=n[2],u=n[3],a=t[0],c=t[1],s=t[2],f=t[3];return Math.abs(r-a)<=e.EPSILON*Math.max(1,Math.abs(r),Math.abs(a))&&Math.abs(o-c)<=e.EPSILON*Math.max(1,Math.abs(o),Math.abs(c))&&Math.abs(i-s)<=e.EPSILON*Math.max(1,Math.abs(i),Math.abs(s))&&Math.abs(u-f)<=e.EPSILON*Math.max(1,Math.abs(u),Math.abs(f))}var C,V=f,B=l,N=h,D=b,k=y,Y=M,q=w,U=(C=o(),function(n,t,r,e,o,i){var u=void 0,a=void 0;for(t||(t=4),r||(r=0),a=e?Math.min(e*t+r,n.length):n.length,u=r;u>>1,k=[["ary",A],["bind",m],["bindKey",x],["curry",b],["curryRight",y],["flip",P],["partial",M],["partialRight",w],["rearg",E]],Y="[object Arguments]",q="[object Array]",U="[object AsyncFunction]",F="[object Boolean]",X="[object Date]",Z="[object DOMException]",G="[object Error]",W="[object Function]",H="[object GeneratorFunction]",$="[object Map]",K="[object Number]",Q="[object Null]",J="[object Object]",nn="[object Proxy]",tn="[object RegExp]",rn="[object Set]",en="[object String]",on="[object Symbol]",un="[object Undefined]",an="[object WeakMap]",cn="[object WeakSet]",sn="[object ArrayBuffer]",fn="[object DataView]",ln="[object Float32Array]",hn="[object Float64Array]",dn="[object Int8Array]",pn="[object Int16Array]",gn="[object Int32Array]",vn="[object Uint8Array]",mn="[object Uint8ClampedArray]",xn="[object Uint16Array]",_n="[object Uint32Array]",bn=/\b__p \+= '';/g,yn=/\b(__p \+=) '' \+/g,Mn=/(__e\(.*?\)|\b__t\)) \+\n'';/g,wn=/&(?:amp|lt|gt|quot|#39);/g,An=/[&<>"']/g,En=RegExp(wn.source),Pn=RegExp(An.source),In=/<%-([\s\S]+?)%>/g,Sn=/<%([\s\S]+?)%>/g,Tn=/<%=([\s\S]+?)%>/g,jn=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,Ln=/^\w*$/,On=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,Rn=/[\\^$.*+?()[\]{}|]/g,zn=RegExp(Rn.source),Cn=/^\s+|\s+$/g,Vn=/^\s+/,Bn=/\s+$/,Nn=/\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/,Dn=/\{\n\/\* \[wrapped with (.+)\] \*/,kn=/,? & /,Yn=/[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g,qn=/\\(\\)?/g,Un=/\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g,Fn=/\w*$/,Xn=/^[-+]0x[0-9a-f]+$/i,Zn=/^0b[01]+$/i,Gn=/^\[object .+?Constructor\]$/,Wn=/^0o[0-7]+$/i,Hn=/^(?:0|[1-9]\d*)$/,$n=/[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g,Kn=/($^)/,Qn=/['\n\r\u2028\u2029\\]/g,Jn="\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff",nt="\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000",tt="[\\ud800-\\udfff]",rt="["+nt+"]",et="["+Jn+"]",ot="\\d+",it="[\\u2700-\\u27bf]",ut="[a-z\\xdf-\\xf6\\xf8-\\xff]",at="[^\\ud800-\\udfff"+nt+ot+"\\u2700-\\u27bfa-z\\xdf-\\xf6\\xf8-\\xffA-Z\\xc0-\\xd6\\xd8-\\xde]",ct="\\ud83c[\\udffb-\\udfff]",st="[^\\ud800-\\udfff]",ft="(?:\\ud83c[\\udde6-\\uddff]){2}",lt="[\\ud800-\\udbff][\\udc00-\\udfff]",ht="[A-Z\\xc0-\\xd6\\xd8-\\xde]",dt="(?:"+ut+"|"+at+")",pt="(?:"+ht+"|"+at+")",gt="(?:"+et+"|"+ct+")"+"?",vt="[\\ufe0e\\ufe0f]?"+gt+("(?:\\u200d(?:"+[st,ft,lt].join("|")+")[\\ufe0e\\ufe0f]?"+gt+")*"),mt="(?:"+[it,ft,lt].join("|")+")"+vt,xt="(?:"+[st+et+"?",et,ft,lt,tt].join("|")+")",_t=RegExp("['’]","g"),bt=RegExp(et,"g"),yt=RegExp(ct+"(?="+ct+")|"+xt+vt,"g"),Mt=RegExp([ht+"?"+ut+"+(?:['’](?:d|ll|m|re|s|t|ve))?(?="+[rt,ht,"$"].join("|")+")",pt+"+(?:['’](?:D|LL|M|RE|S|T|VE))?(?="+[rt,ht+dt,"$"].join("|")+")",ht+"?"+dt+"+(?:['’](?:d|ll|m|re|s|t|ve))?",ht+"+(?:['’](?:D|LL|M|RE|S|T|VE))?","\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])","\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])",ot,mt].join("|"),"g"),wt=RegExp("[\\u200d\\ud800-\\udfff"+Jn+"\\ufe0e\\ufe0f]"),At=/[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/,Et=["Array","Buffer","DataView","Date","Error","Float32Array","Float64Array","Function","Int8Array","Int16Array","Int32Array","Map","Math","Object","Promise","RegExp","Set","String","Symbol","TypeError","Uint8Array","Uint8ClampedArray","Uint16Array","Uint32Array","WeakMap","_","clearTimeout","isFinite","parseInt","setTimeout"],Pt=-1,It={};It[ln]=It[hn]=It[dn]=It[pn]=It[gn]=It[vn]=It[mn]=It[xn]=It[_n]=!0,It[Y]=It[q]=It[sn]=It[F]=It[fn]=It[X]=It[G]=It[W]=It[$]=It[K]=It[J]=It[tn]=It[rn]=It[en]=It[an]=!1;var St={};St[Y]=St[q]=St[sn]=St[fn]=St[F]=St[X]=St[ln]=St[hn]=St[dn]=St[pn]=St[gn]=St[$]=St[K]=St[J]=St[tn]=St[rn]=St[en]=St[on]=St[vn]=St[mn]=St[xn]=St[_n]=!0,St[G]=St[W]=St[an]=!1;var Tt={"\\":"\\","'":"'","\n":"n","\r":"r","\u2028":"u2028","\u2029":"u2029"},jt=parseFloat,Lt=parseInt,Ot="object"==typeof n&&n&&n.Object===Object&&n,Rt="object"==typeof self&&self&&self.Object===Object&&self,zt=Ot||Rt||Function("return this")(),Ct=t&&!t.nodeType&&t,Vt=Ct&&"object"==typeof e&&e&&!e.nodeType&&e,Bt=Vt&&Vt.exports===Ct,Nt=Bt&&Ot.process,Dt=function(){try{var n=Vt&&Vt.require&&Vt.require("util").types;return n||Nt&&Nt.binding&&Nt.binding("util")}catch(n){}}(),kt=Dt&&Dt.isArrayBuffer,Yt=Dt&&Dt.isDate,qt=Dt&&Dt.isMap,Ut=Dt&&Dt.isRegExp,Ft=Dt&&Dt.isSet,Xt=Dt&&Dt.isTypedArray;function Zt(n,t,r){switch(r.length){case 0:return n.call(t);case 1:return n.call(t,r[0]);case 2:return n.call(t,r[0],r[1]);case 3:return n.call(t,r[0],r[1],r[2])}return n.apply(t,r)}function Gt(n,t,r,e){for(var o=-1,i=null==n?0:n.length;++o-1}function Jt(n,t,r){for(var e=-1,o=null==n?0:n.length;++e-1;);return r}function yr(n,t){for(var r=n.length;r--&&cr(t,n[r],0)>-1;);return r}var Mr=dr({"À":"A","Á":"A","Â":"A","Ã":"A","Ä":"A","Å":"A","à":"a","á":"a","â":"a","ã":"a","ä":"a","å":"a","Ç":"C","ç":"c","Ð":"D","ð":"d","È":"E","É":"E","Ê":"E","Ë":"E","è":"e","é":"e","ê":"e","ë":"e","Ì":"I","Í":"I","Î":"I","Ï":"I","ì":"i","í":"i","î":"i","ï":"i","Ñ":"N","ñ":"n","Ò":"O","Ó":"O","Ô":"O","Õ":"O","Ö":"O","Ø":"O","ò":"o","ó":"o","ô":"o","õ":"o","ö":"o","ø":"o","Ù":"U","Ú":"U","Û":"U","Ü":"U","ù":"u","ú":"u","û":"u","ü":"u","Ý":"Y","ý":"y","ÿ":"y","Æ":"Ae","æ":"ae","Þ":"Th","þ":"th","ß":"ss","Ā":"A","Ă":"A","Ą":"A","ā":"a","ă":"a","ą":"a","Ć":"C","Ĉ":"C","Ċ":"C","Č":"C","ć":"c","ĉ":"c","ċ":"c","č":"c","Ď":"D","Đ":"D","ď":"d","đ":"d","Ē":"E","Ĕ":"E","Ė":"E","Ę":"E","Ě":"E","ē":"e","ĕ":"e","ė":"e","ę":"e","ě":"e","Ĝ":"G","Ğ":"G","Ġ":"G","Ģ":"G","ĝ":"g","ğ":"g","ġ":"g","ģ":"g","Ĥ":"H","Ħ":"H","ĥ":"h","ħ":"h","Ĩ":"I","Ī":"I","Ĭ":"I","Į":"I","İ":"I","ĩ":"i","ī":"i","ĭ":"i","į":"i","ı":"i","Ĵ":"J","ĵ":"j","Ķ":"K","ķ":"k","ĸ":"k","Ĺ":"L","Ļ":"L","Ľ":"L","Ŀ":"L","Ł":"L","ĺ":"l","ļ":"l","ľ":"l","ŀ":"l","ł":"l","Ń":"N","Ņ":"N","Ň":"N","Ŋ":"N","ń":"n","ņ":"n","ň":"n","ŋ":"n","Ō":"O","Ŏ":"O","Ő":"O","ō":"o","ŏ":"o","ő":"o","Ŕ":"R","Ŗ":"R","Ř":"R","ŕ":"r","ŗ":"r","ř":"r","Ś":"S","Ŝ":"S","Ş":"S","Š":"S","ś":"s","ŝ":"s","ş":"s","š":"s","Ţ":"T","Ť":"T","Ŧ":"T","ţ":"t","ť":"t","ŧ":"t","Ũ":"U","Ū":"U","Ŭ":"U","Ů":"U","Ű":"U","Ų":"U","ũ":"u","ū":"u","ŭ":"u","ů":"u","ű":"u","ų":"u","Ŵ":"W","ŵ":"w","Ŷ":"Y","ŷ":"y","Ÿ":"Y","Ź":"Z","Ż":"Z","Ž":"Z","ź":"z","ż":"z","ž":"z","IJ":"IJ","ij":"ij","Œ":"Oe","œ":"oe","ʼn":"'n","ſ":"s"}),wr=dr({"&":"&","<":"<",">":">",'"':""","'":"'"});function Ar(n){return"\\"+Tt[n]}function Er(n){return wt.test(n)}function Pr(n){var t=-1,r=Array(n.size);return n.forEach(function(n,e){r[++t]=[e,n]}),r}function Ir(n,t){return function(r){return n(t(r))}}function Sr(n,t){for(var r=-1,e=n.length,o=0,i=[];++r",""":'"',"'":"'"});var zr=function n(t){var r,e=(t=null==t?zt:zr.defaults(zt.Object(),t,zr.pick(zt,Et))).Array,o=t.Date,Jn=t.Error,nt=t.Function,tt=t.Math,rt=t.Object,et=t.RegExp,ot=t.String,it=t.TypeError,ut=e.prototype,at=nt.prototype,ct=rt.prototype,st=t["__core-js_shared__"],ft=at.toString,lt=ct.hasOwnProperty,ht=0,dt=(r=/[^.]+$/.exec(st&&st.keys&&st.keys.IE_PROTO||""))?"Symbol(src)_1."+r:"",pt=ct.toString,gt=ft.call(rt),vt=zt._,mt=et("^"+ft.call(lt).replace(Rn,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),xt=Bt?t.Buffer:i,yt=t.Symbol,wt=t.Uint8Array,Tt=xt?xt.allocUnsafe:i,Ot=Ir(rt.getPrototypeOf,rt),Rt=rt.create,Ct=ct.propertyIsEnumerable,Vt=ut.splice,Nt=yt?yt.isConcatSpreadable:i,Dt=yt?yt.iterator:i,ir=yt?yt.toStringTag:i,dr=function(){try{var n=Di(rt,"defineProperty");return n({},"",{}),n}catch(n){}}(),Cr=t.clearTimeout!==zt.clearTimeout&&t.clearTimeout,Vr=o&&o.now!==zt.Date.now&&o.now,Br=t.setTimeout!==zt.setTimeout&&t.setTimeout,Nr=tt.ceil,Dr=tt.floor,kr=rt.getOwnPropertySymbols,Yr=xt?xt.isBuffer:i,qr=t.isFinite,Ur=ut.join,Fr=Ir(rt.keys,rt),Xr=tt.max,Zr=tt.min,Gr=o.now,Wr=t.parseInt,Hr=tt.random,$r=ut.reverse,Kr=Di(t,"DataView"),Qr=Di(t,"Map"),Jr=Di(t,"Promise"),ne=Di(t,"Set"),te=Di(t,"WeakMap"),re=Di(rt,"create"),ee=te&&new te,oe={},ie=lu(Kr),ue=lu(Qr),ae=lu(Jr),ce=lu(ne),se=lu(te),fe=yt?yt.prototype:i,le=fe?fe.valueOf:i,he=fe?fe.toString:i;function de(n){if(Sa(n)&&!ma(n)&&!(n instanceof me)){if(n instanceof ve)return n;if(lt.call(n,"__wrapped__"))return hu(n)}return new ve(n)}var pe=function(){function n(){}return function(t){if(!Ia(t))return{};if(Rt)return Rt(t);n.prototype=t;var r=new n;return n.prototype=i,r}}();function ge(){}function ve(n,t){this.__wrapped__=n,this.__actions__=[],this.__chain__=!!t,this.__index__=0,this.__values__=i}function me(n){this.__wrapped__=n,this.__actions__=[],this.__dir__=1,this.__filtered__=!1,this.__iteratees__=[],this.__takeCount__=B,this.__views__=[]}function xe(n){var t=-1,r=null==n?0:n.length;for(this.clear();++t=t?n:t)),n}function Ce(n,t,r,e,o,u){var a,c=t&h,s=t&d,f=t&p;if(r&&(a=o?r(n,e,o,u):r(n)),a!==i)return a;if(!Ia(n))return n;var l=ma(n);if(l){if(a=function(n){var t=n.length,r=new n.constructor(t);return t&&"string"==typeof n[0]&<.call(n,"index")&&(r.index=n.index,r.input=n.input),r}(n),!c)return ei(n,a)}else{var g=qi(n),v=g==W||g==H;if(ya(n))return Ko(n,c);if(g==J||g==Y||v&&!o){if(a=s||v?{}:Fi(n),!c)return s?function(n,t){return oi(n,Yi(n),t)}(n,function(n,t){return n&&oi(t,ic(t),n)}(a,n)):function(n,t){return oi(n,ki(n),t)}(n,Le(a,n))}else{if(!St[g])return o?n:{};a=function(n,t,r){var e,o,i,u=n.constructor;switch(t){case sn:return Qo(n);case F:case X:return new u(+n);case fn:return function(n,t){var r=t?Qo(n.buffer):n.buffer;return new n.constructor(r,n.byteOffset,n.byteLength)}(n,r);case ln:case hn:case dn:case pn:case gn:case vn:case mn:case xn:case _n:return Jo(n,r);case $:return new u;case K:case en:return new u(n);case tn:return(i=new(o=n).constructor(o.source,Fn.exec(o))).lastIndex=o.lastIndex,i;case rn:return new u;case on:return e=n,le?rt(le.call(e)):{}}}(n,g,c)}}u||(u=new Me);var m=u.get(n);if(m)return m;if(u.set(n,a),Ra(n))return n.forEach(function(e){a.add(Ce(e,t,r,e,n,u))}),a;if(Ta(n))return n.forEach(function(e,o){a.set(o,Ce(e,t,r,o,n,u))}),a;var x=l?i:(f?s?Oi:Li:s?ic:oc)(n);return Wt(x||n,function(e,o){x&&(e=n[o=e]),Se(a,o,Ce(e,t,r,o,n,u))}),a}function Ve(n,t,r){var e=r.length;if(null==n)return!e;for(n=rt(n);e--;){var o=r[e],u=t[o],a=n[o];if(a===i&&!(o in n)||!u(a))return!1}return!0}function Be(n,t,r){if("function"!=typeof n)throw new it(c);return ou(function(){n.apply(i,r)},t)}function Ne(n,t,r,e){var o=-1,i=Qt,a=!0,c=n.length,s=[],f=t.length;if(!c)return s;r&&(t=nr(t,mr(r))),e?(i=Jt,a=!1):t.length>=u&&(i=_r,a=!1,t=new ye(t));n:for(;++o-1},_e.prototype.set=function(n,t){var r=this.__data__,e=Te(r,n);return e<0?(++this.size,r.push([n,t])):r[e][1]=t,this},be.prototype.clear=function(){this.size=0,this.__data__={hash:new xe,map:new(Qr||_e),string:new xe}},be.prototype.delete=function(n){var t=Bi(this,n).delete(n);return this.size-=t?1:0,t},be.prototype.get=function(n){return Bi(this,n).get(n)},be.prototype.has=function(n){return Bi(this,n).has(n)},be.prototype.set=function(n,t){var r=Bi(this,n),e=r.size;return r.set(n,t),this.size+=r.size==e?0:1,this},ye.prototype.add=ye.prototype.push=function(n){return this.__data__.set(n,s),this},ye.prototype.has=function(n){return this.__data__.has(n)},Me.prototype.clear=function(){this.__data__=new _e,this.size=0},Me.prototype.delete=function(n){var t=this.__data__,r=t.delete(n);return this.size=t.size,r},Me.prototype.get=function(n){return this.__data__.get(n)},Me.prototype.has=function(n){return this.__data__.has(n)},Me.prototype.set=function(n,t){var r=this.__data__;if(r instanceof _e){var e=r.__data__;if(!Qr||e.length0&&r(a)?t>1?Fe(a,t-1,r,e,o):tr(o,a):e||(o[o.length]=a)}return o}var Xe=ci(),Ze=ci(!0);function Ge(n,t){return n&&Xe(n,t,oc)}function We(n,t){return n&&Ze(n,t,oc)}function He(n,t){return Kt(t,function(t){return Aa(n[t])})}function $e(n,t){for(var r=0,e=(t=Go(t,n)).length;null!=n&&rt}function no(n,t){return null!=n&<.call(n,t)}function to(n,t){return null!=n&&t in rt(n)}function ro(n,t,r){for(var o=r?Jt:Qt,u=n[0].length,a=n.length,c=a,s=e(a),f=1/0,l=[];c--;){var h=n[c];c&&t&&(h=nr(h,mr(t))),f=Zr(h.length,f),s[c]=!r&&(t||u>=120&&h.length>=120)?new ye(c&&h):i}h=n[0];var d=-1,p=s[0];n:for(;++d=a)return c;var s=r[e];return c*("desc"==s?-1:1)}}return n.index-t.index}(n,t,r)})}function _o(n,t,r){for(var e=-1,o=t.length,i={};++e-1;)a!==n&&Vt.call(a,c,1),Vt.call(n,c,1);return n}function yo(n,t){for(var r=n?t.length:0,e=r-1;r--;){var o=t[r];if(r==e||o!==i){var i=o;Zi(o)?Vt.call(n,o,1):Do(n,o)}}return n}function Mo(n,t){return n+Dr(Hr()*(t-n+1))}function wo(n,t){var r="";if(!n||t<1||t>z)return r;do{t%2&&(r+=n),(t=Dr(t/2))&&(n+=n)}while(t);return r}function Ao(n,t){return iu(nu(n,t,jc),n+"")}function Eo(n){return Ae(dc(n))}function Po(n,t){var r=dc(n);return cu(r,ze(t,0,r.length))}function Io(n,t,r,e){if(!Ia(n))return n;for(var o=-1,u=(t=Go(t,n)).length,a=u-1,c=n;null!=c&&++oi?0:i+t),(r=r>i?i:r)<0&&(r+=i),i=t>r?0:r-t>>>0,t>>>=0;for(var u=e(i);++o>>1,u=n[i];null!==u&&!Ca(u)&&(r?u<=t:u=u){var f=t?null:wi(n);if(f)return Tr(f);a=!1,o=_r,s=new ye}else s=t?[]:c;n:for(;++e=e?n:Lo(n,t,r)}var $o=Cr||function(n){return zt.clearTimeout(n)};function Ko(n,t){if(t)return n.slice();var r=n.length,e=Tt?Tt(r):new n.constructor(r);return n.copy(e),e}function Qo(n){var t=new n.constructor(n.byteLength);return new wt(t).set(new wt(n)),t}function Jo(n,t){var r=t?Qo(n.buffer):n.buffer;return new n.constructor(r,n.byteOffset,n.length)}function ni(n,t){if(n!==t){var r=n!==i,e=null===n,o=n==n,u=Ca(n),a=t!==i,c=null===t,s=t==t,f=Ca(t);if(!c&&!f&&!u&&n>t||u&&a&&s&&!c&&!f||e&&a&&s||!r&&s||!o)return 1;if(!e&&!u&&!f&&n1?r[o-1]:i,a=o>2?r[2]:i;for(u=n.length>3&&"function"==typeof u?(o--,u):i,a&&Gi(r[0],r[1],a)&&(u=o<3?i:u,o=1),t=rt(t);++e-1?o[u?t[a]:a]:i}}function di(n){return ji(function(t){var r=t.length,e=r,o=ve.prototype.thru;for(n&&t.reverse();e--;){var u=t[e];if("function"!=typeof u)throw new it(c);if(o&&!a&&"wrapper"==zi(u))var a=new ve([],!0)}for(e=a?e:r;++e1&&b.reverse(),h&&fc))return!1;var f=u.get(n);if(f&&u.get(t))return f==t;var l=-1,h=!0,d=r&v?new ye:i;for(u.set(n,t),u.set(t,n);++l-1&&n%1==0&&n1?"& ":"")+t[e],t=t.join(r>2?", ":" "),n.replace(Nn,"{\n/* [wrapped with "+t+"] */\n")}(e,function(n,t){return Wt(k,function(r){var e="_."+r[0];t&r[1]&&!Qt(n,e)&&n.push(e)}),n.sort()}(function(n){var t=n.match(Dn);return t?t[1].split(kn):[]}(e),r)))}function au(n){var t=0,r=0;return function(){var e=Gr(),o=j-(e-r);if(r=e,o>0){if(++t>=T)return arguments[0]}else t=0;return n.apply(i,arguments)}}function cu(n,t){var r=-1,e=n.length,o=e-1;for(t=t===i?e:t;++r1?n[t-1]:i;return Ou(n,r="function"==typeof r?(n.pop(),r):i)});function Du(n){var t=de(n);return t.__chain__=!0,t}function ku(n,t){return t(n)}var Yu=ji(function(n){var t=n.length,r=t?n[0]:0,e=this.__wrapped__,o=function(t){return Re(t,n)};return!(t>1||this.__actions__.length)&&e instanceof me&&Zi(r)?((e=e.slice(r,+r+(t?1:0))).__actions__.push({func:ku,args:[o],thisArg:i}),new ve(e,this.__chain__).thru(function(n){return t&&!n.length&&n.push(i),n})):this.thru(o)});var qu=ii(function(n,t,r){lt.call(n,r)?++n[r]:Oe(n,r,1)});var Uu=hi(vu),Fu=hi(mu);function Xu(n,t){return(ma(n)?Wt:De)(n,Vi(t,3))}function Zu(n,t){return(ma(n)?Ht:ke)(n,Vi(t,3))}var Gu=ii(function(n,t,r){lt.call(n,r)?n[r].push(t):Oe(n,r,[t])});var Wu=Ao(function(n,t,r){var o=-1,i="function"==typeof t,u=_a(n)?e(n.length):[];return De(n,function(n){u[++o]=i?Zt(t,n,r):eo(n,t,r)}),u}),Hu=ii(function(n,t,r){Oe(n,r,t)});function $u(n,t){return(ma(n)?nr:ho)(n,Vi(t,3))}var Ku=ii(function(n,t,r){n[r?0:1].push(t)},function(){return[[],[]]});var Qu=Ao(function(n,t){if(null==n)return[];var r=t.length;return r>1&&Gi(n,t[0],t[1])?t=[]:r>2&&Gi(t[0],t[1],t[2])&&(t=[t[0]]),xo(n,Fe(t,1),[])}),Ju=Vr||function(){return zt.Date.now()};function na(n,t,r){return t=r?i:t,t=n&&null==t?n.length:t,Ei(n,A,i,i,i,i,t)}function ta(n,t){var r;if("function"!=typeof t)throw new it(c);return n=Ya(n),function(){return--n>0&&(r=t.apply(this,arguments)),n<=1&&(t=i),r}}var ra=Ao(function(n,t,r){var e=m;if(r.length){var o=Sr(r,Ci(ra));e|=M}return Ei(n,e,t,r,o)}),ea=Ao(function(n,t,r){var e=m|x;if(r.length){var o=Sr(r,Ci(ea));e|=M}return Ei(t,e,n,r,o)});function oa(n,t,r){var e,o,u,a,s,f,l=0,h=!1,d=!1,p=!0;if("function"!=typeof n)throw new it(c);function g(t){var r=e,u=o;return e=o=i,l=t,a=n.apply(u,r)}function v(n){var r=n-f;return f===i||r>=t||r<0||d&&n-l>=u}function m(){var n=Ju();if(v(n))return x(n);s=ou(m,function(n){var r=t-(n-f);return d?Zr(r,u-(n-l)):r}(n))}function x(n){return s=i,p&&e?g(n):(e=o=i,a)}function _(){var n=Ju(),r=v(n);if(e=arguments,o=this,f=n,r){if(s===i)return function(n){return l=n,s=ou(m,t),h?g(n):a}(f);if(d)return s=ou(m,t),g(f)}return s===i&&(s=ou(m,t)),a}return t=Ua(t)||0,Ia(r)&&(h=!!r.leading,u=(d="maxWait"in r)?Xr(Ua(r.maxWait)||0,t):u,p="trailing"in r?!!r.trailing:p),_.cancel=function(){s!==i&&$o(s),l=0,e=f=o=s=i},_.flush=function(){return s===i?a:x(Ju())},_}var ia=Ao(function(n,t){return Be(n,1,t)}),ua=Ao(function(n,t,r){return Be(n,Ua(t)||0,r)});function aa(n,t){if("function"!=typeof n||null!=t&&"function"!=typeof t)throw new it(c);var r=function(){var e=arguments,o=t?t.apply(this,e):e[0],i=r.cache;if(i.has(o))return i.get(o);var u=n.apply(this,e);return r.cache=i.set(o,u)||i,u};return r.cache=new(aa.Cache||be),r}function ca(n){if("function"!=typeof n)throw new it(c);return function(){var t=arguments;switch(t.length){case 0:return!n.call(this);case 1:return!n.call(this,t[0]);case 2:return!n.call(this,t[0],t[1]);case 3:return!n.call(this,t[0],t[1],t[2])}return!n.apply(this,t)}}aa.Cache=be;var sa=Wo(function(n,t){var r=(t=1==t.length&&ma(t[0])?nr(t[0],mr(Vi())):nr(Fe(t,1),mr(Vi()))).length;return Ao(function(e){for(var o=-1,i=Zr(e.length,r);++o=t}),va=oo(function(){return arguments}())?oo:function(n){return Sa(n)&<.call(n,"callee")&&!Ct.call(n,"callee")},ma=e.isArray,xa=kt?mr(kt):function(n){return Sa(n)&&Qe(n)==sn};function _a(n){return null!=n&&Pa(n.length)&&!Aa(n)}function ba(n){return Sa(n)&&_a(n)}var ya=Yr||Uc,Ma=Yt?mr(Yt):function(n){return Sa(n)&&Qe(n)==X};function wa(n){if(!Sa(n))return!1;var t=Qe(n);return t==G||t==Z||"string"==typeof n.message&&"string"==typeof n.name&&!La(n)}function Aa(n){if(!Ia(n))return!1;var t=Qe(n);return t==W||t==H||t==U||t==nn}function Ea(n){return"number"==typeof n&&n==Ya(n)}function Pa(n){return"number"==typeof n&&n>-1&&n%1==0&&n<=z}function Ia(n){var t=typeof n;return null!=n&&("object"==t||"function"==t)}function Sa(n){return null!=n&&"object"==typeof n}var Ta=qt?mr(qt):function(n){return Sa(n)&&qi(n)==$};function ja(n){return"number"==typeof n||Sa(n)&&Qe(n)==K}function La(n){if(!Sa(n)||Qe(n)!=J)return!1;var t=Ot(n);if(null===t)return!0;var r=lt.call(t,"constructor")&&t.constructor;return"function"==typeof r&&r instanceof r&&ft.call(r)==gt}var Oa=Ut?mr(Ut):function(n){return Sa(n)&&Qe(n)==tn};var Ra=Ft?mr(Ft):function(n){return Sa(n)&&qi(n)==rn};function za(n){return"string"==typeof n||!ma(n)&&Sa(n)&&Qe(n)==en}function Ca(n){return"symbol"==typeof n||Sa(n)&&Qe(n)==on}var Va=Xt?mr(Xt):function(n){return Sa(n)&&Pa(n.length)&&!!It[Qe(n)]};var Ba=bi(lo),Na=bi(function(n,t){return n<=t});function Da(n){if(!n)return[];if(_a(n))return za(n)?Or(n):ei(n);if(Dt&&n[Dt])return function(n){for(var t,r=[];!(t=n.next()).done;)r.push(t.value);return r}(n[Dt]());var t=qi(n);return(t==$?Pr:t==rn?Tr:dc)(n)}function ka(n){return n?(n=Ua(n))===R||n===-R?(n<0?-1:1)*C:n==n?n:0:0===n?n:0}function Ya(n){var t=ka(n),r=t%1;return t==t?r?t-r:t:0}function qa(n){return n?ze(Ya(n),0,B):0}function Ua(n){if("number"==typeof n)return n;if(Ca(n))return V;if(Ia(n)){var t="function"==typeof n.valueOf?n.valueOf():n;n=Ia(t)?t+"":t}if("string"!=typeof n)return 0===n?n:+n;n=n.replace(Cn,"");var r=Zn.test(n);return r||Wn.test(n)?Lt(n.slice(2),r?2:8):Xn.test(n)?V:+n}function Fa(n){return oi(n,ic(n))}function Xa(n){return null==n?"":Bo(n)}var Za=ui(function(n,t){if(Ki(t)||_a(t))oi(t,oc(t),n);else for(var r in t)lt.call(t,r)&&Se(n,r,t[r])}),Ga=ui(function(n,t){oi(t,ic(t),n)}),Wa=ui(function(n,t,r,e){oi(t,ic(t),n,e)}),Ha=ui(function(n,t,r,e){oi(t,oc(t),n,e)}),$a=ji(Re);var Ka=Ao(function(n,t){n=rt(n);var r=-1,e=t.length,o=e>2?t[2]:i;for(o&&Gi(t[0],t[1],o)&&(e=1);++r1),t}),oi(n,Oi(n),r),e&&(r=Ce(r,h|d|p,Si));for(var o=t.length;o--;)Do(r,t[o]);return r});var sc=ji(function(n,t){return null==n?{}:function(n,t){return _o(n,t,function(t,r){return nc(n,r)})}(n,t)});function fc(n,t){if(null==n)return{};var r=nr(Oi(n),function(n){return[n]});return t=Vi(t),_o(n,r,function(n,r){return t(n,r[0])})}var lc=Ai(oc),hc=Ai(ic);function dc(n){return null==n?[]:xr(n,oc(n))}var pc=fi(function(n,t,r){return t=t.toLowerCase(),n+(r?gc(t):t)});function gc(n){return wc(Xa(n).toLowerCase())}function vc(n){return(n=Xa(n))&&n.replace($n,Mr).replace(bt,"")}var mc=fi(function(n,t,r){return n+(r?"-":"")+t.toLowerCase()}),xc=fi(function(n,t,r){return n+(r?" ":"")+t.toLowerCase()}),_c=si("toLowerCase");var bc=fi(function(n,t,r){return n+(r?"_":"")+t.toLowerCase()});var yc=fi(function(n,t,r){return n+(r?" ":"")+wc(t)});var Mc=fi(function(n,t,r){return n+(r?" ":"")+t.toUpperCase()}),wc=si("toUpperCase");function Ac(n,t,r){return n=Xa(n),(t=r?i:t)===i?function(n){return At.test(n)}(n)?function(n){return n.match(Mt)||[]}(n):function(n){return n.match(Yn)||[]}(n):n.match(t)||[]}var Ec=Ao(function(n,t){try{return Zt(n,i,t)}catch(n){return wa(n)?n:new Jn(n)}}),Pc=ji(function(n,t){return Wt(t,function(t){t=fu(t),Oe(n,t,ra(n[t],n))}),n});function Ic(n){return function(){return n}}var Sc=di(),Tc=di(!0);function jc(n){return n}function Lc(n){return co("function"==typeof n?n:Ce(n,h))}var Oc=Ao(function(n,t){return function(r){return eo(r,n,t)}}),Rc=Ao(function(n,t){return function(r){return eo(n,r,t)}});function zc(n,t,r){var e=oc(t),o=He(t,e);null!=r||Ia(t)&&(o.length||!e.length)||(r=t,t=n,n=this,o=He(t,oc(t)));var i=!(Ia(r)&&"chain"in r&&!r.chain),u=Aa(n);return Wt(o,function(r){var e=t[r];n[r]=e,u&&(n.prototype[r]=function(){var t=this.__chain__;if(i||t){var r=n(this.__wrapped__);return(r.__actions__=ei(this.__actions__)).push({func:e,args:arguments,thisArg:n}),r.__chain__=t,r}return e.apply(n,tr([this.value()],arguments))})}),n}function Cc(){}var Vc=mi(nr),Bc=mi($t),Nc=mi(or);function Dc(n){return Wi(n)?hr(fu(n)):function(n){return function(t){return $e(t,n)}}(n)}var kc=_i(),Yc=_i(!0);function qc(){return[]}function Uc(){return!1}var Fc=vi(function(n,t){return n+t},0),Xc=Mi("ceil"),Zc=vi(function(n,t){return n/t},1),Gc=Mi("floor");var Wc,Hc=vi(function(n,t){return n*t},1),$c=Mi("round"),Kc=vi(function(n,t){return n-t},0);return de.after=function(n,t){if("function"!=typeof t)throw new it(c);return n=Ya(n),function(){if(--n<1)return t.apply(this,arguments)}},de.ary=na,de.assign=Za,de.assignIn=Ga,de.assignInWith=Wa,de.assignWith=Ha,de.at=$a,de.before=ta,de.bind=ra,de.bindAll=Pc,de.bindKey=ea,de.castArray=function(){if(!arguments.length)return[];var n=arguments[0];return ma(n)?n:[n]},de.chain=Du,de.chunk=function(n,t,r){t=(r?Gi(n,t,r):t===i)?1:Xr(Ya(t),0);var o=null==n?0:n.length;if(!o||t<1)return[];for(var u=0,a=0,c=e(Nr(o/t));uo?0:o+r),(e=e===i||e>o?o:Ya(e))<0&&(e+=o),e=r>e?0:qa(e);r>>0)?(n=Xa(n))&&("string"==typeof t||null!=t&&!Oa(t))&&!(t=Bo(t))&&Er(n)?Ho(Or(n),0,r):n.split(t,r):[]},de.spread=function(n,t){if("function"!=typeof n)throw new it(c);return t=null==t?0:Xr(Ya(t),0),Ao(function(r){var e=r[t],o=Ho(r,0,t);return e&&tr(o,e),Zt(n,this,o)})},de.tail=function(n){var t=null==n?0:n.length;return t?Lo(n,1,t):[]},de.take=function(n,t,r){return n&&n.length?Lo(n,0,(t=r||t===i?1:Ya(t))<0?0:t):[]},de.takeRight=function(n,t,r){var e=null==n?0:n.length;return e?Lo(n,(t=e-(t=r||t===i?1:Ya(t)))<0?0:t,e):[]},de.takeRightWhile=function(n,t){return n&&n.length?Yo(n,Vi(t,3),!1,!0):[]},de.takeWhile=function(n,t){return n&&n.length?Yo(n,Vi(t,3)):[]},de.tap=function(n,t){return t(n),n},de.throttle=function(n,t,r){var e=!0,o=!0;if("function"!=typeof n)throw new it(c);return Ia(r)&&(e="leading"in r?!!r.leading:e,o="trailing"in r?!!r.trailing:o),oa(n,t,{leading:e,maxWait:t,trailing:o})},de.thru=ku,de.toArray=Da,de.toPairs=lc,de.toPairsIn=hc,de.toPath=function(n){return ma(n)?nr(n,fu):Ca(n)?[n]:ei(su(Xa(n)))},de.toPlainObject=Fa,de.transform=function(n,t,r){var e=ma(n),o=e||ya(n)||Va(n);if(t=Vi(t,4),null==r){var i=n&&n.constructor;r=o?e?new i:[]:Ia(n)&&Aa(i)?pe(Ot(n)):{}}return(o?Wt:Ge)(n,function(n,e,o){return t(r,n,e,o)}),r},de.unary=function(n){return na(n,1)},de.union=Su,de.unionBy=Tu,de.unionWith=ju,de.uniq=function(n){return n&&n.length?No(n):[]},de.uniqBy=function(n,t){return n&&n.length?No(n,Vi(t,2)):[]},de.uniqWith=function(n,t){return t="function"==typeof t?t:i,n&&n.length?No(n,i,t):[]},de.unset=function(n,t){return null==n||Do(n,t)},de.unzip=Lu,de.unzipWith=Ou,de.update=function(n,t,r){return null==n?n:ko(n,t,Zo(r))},de.updateWith=function(n,t,r,e){return e="function"==typeof e?e:i,null==n?n:ko(n,t,Zo(r),e)},de.values=dc,de.valuesIn=function(n){return null==n?[]:xr(n,ic(n))},de.without=Ru,de.words=Ac,de.wrap=function(n,t){return fa(Zo(t),n)},de.xor=zu,de.xorBy=Cu,de.xorWith=Vu,de.zip=Bu,de.zipObject=function(n,t){return Fo(n||[],t||[],Se)},de.zipObjectDeep=function(n,t){return Fo(n||[],t||[],Io)},de.zipWith=Nu,de.entries=lc,de.entriesIn=hc,de.extend=Ga,de.extendWith=Wa,zc(de,de),de.add=Fc,de.attempt=Ec,de.camelCase=pc,de.capitalize=gc,de.ceil=Xc,de.clamp=function(n,t,r){return r===i&&(r=t,t=i),r!==i&&(r=(r=Ua(r))==r?r:0),t!==i&&(t=(t=Ua(t))==t?t:0),ze(Ua(n),t,r)},de.clone=function(n){return Ce(n,p)},de.cloneDeep=function(n){return Ce(n,h|p)},de.cloneDeepWith=function(n,t){return Ce(n,h|p,t="function"==typeof t?t:i)},de.cloneWith=function(n,t){return Ce(n,p,t="function"==typeof t?t:i)},de.conformsTo=function(n,t){return null==t||Ve(n,t,oc(t))},de.deburr=vc,de.defaultTo=function(n,t){return null==n||n!=n?t:n},de.divide=Zc,de.endsWith=function(n,t,r){n=Xa(n),t=Bo(t);var e=n.length,o=r=r===i?e:ze(Ya(r),0,e);return(r-=t.length)>=0&&n.slice(r,o)==t},de.eq=da,de.escape=function(n){return(n=Xa(n))&&Pn.test(n)?n.replace(An,wr):n},de.escapeRegExp=function(n){return(n=Xa(n))&&zn.test(n)?n.replace(Rn,"\\$&"):n},de.every=function(n,t,r){var e=ma(n)?$t:Ye;return r&&Gi(n,t,r)&&(t=i),e(n,Vi(t,3))},de.find=Uu,de.findIndex=vu,de.findKey=function(n,t){return ur(n,Vi(t,3),Ge)},de.findLast=Fu,de.findLastIndex=mu,de.findLastKey=function(n,t){return ur(n,Vi(t,3),We)},de.floor=Gc,de.forEach=Xu,de.forEachRight=Zu,de.forIn=function(n,t){return null==n?n:Xe(n,Vi(t,3),ic)},de.forInRight=function(n,t){return null==n?n:Ze(n,Vi(t,3),ic)},de.forOwn=function(n,t){return n&&Ge(n,Vi(t,3))},de.forOwnRight=function(n,t){return n&&We(n,Vi(t,3))},de.get=Ja,de.gt=pa,de.gte=ga,de.has=function(n,t){return null!=n&&Ui(n,t,no)},de.hasIn=nc,de.head=_u,de.identity=jc,de.includes=function(n,t,r,e){n=_a(n)?n:dc(n),r=r&&!e?Ya(r):0;var o=n.length;return r<0&&(r=Xr(o+r,0)),za(n)?r<=o&&n.indexOf(t,r)>-1:!!o&&cr(n,t,r)>-1},de.indexOf=function(n,t,r){var e=null==n?0:n.length;if(!e)return-1;var o=null==r?0:Ya(r);return o<0&&(o=Xr(e+o,0)),cr(n,t,o)},de.inRange=function(n,t,r){return t=ka(t),r===i?(r=t,t=0):r=ka(r),function(n,t,r){return n>=Zr(t,r)&&n=-z&&n<=z},de.isSet=Ra,de.isString=za,de.isSymbol=Ca,de.isTypedArray=Va,de.isUndefined=function(n){return n===i},de.isWeakMap=function(n){return Sa(n)&&qi(n)==an},de.isWeakSet=function(n){return Sa(n)&&Qe(n)==cn},de.join=function(n,t){return null==n?"":Ur.call(n,t)},de.kebabCase=mc,de.last=wu,de.lastIndexOf=function(n,t,r){var e=null==n?0:n.length;if(!e)return-1;var o=e;return r!==i&&(o=(o=Ya(r))<0?Xr(e+o,0):Zr(o,e-1)),t==t?function(n,t,r){for(var e=r+1;e--;)if(n[e]===t)return e;return e}(n,t,o):ar(n,fr,o,!0)},de.lowerCase=xc,de.lowerFirst=_c,de.lt=Ba,de.lte=Na,de.max=function(n){return n&&n.length?qe(n,jc,Je):i},de.maxBy=function(n,t){return n&&n.length?qe(n,Vi(t,2),Je):i},de.mean=function(n){return lr(n,jc)},de.meanBy=function(n,t){return lr(n,Vi(t,2))},de.min=function(n){return n&&n.length?qe(n,jc,lo):i},de.minBy=function(n,t){return n&&n.length?qe(n,Vi(t,2),lo):i},de.stubArray=qc,de.stubFalse=Uc,de.stubObject=function(){return{}},de.stubString=function(){return""},de.stubTrue=function(){return!0},de.multiply=Hc,de.nth=function(n,t){return n&&n.length?mo(n,Ya(t)):i},de.noConflict=function(){return zt._===this&&(zt._=vt),this},de.noop=Cc,de.now=Ju,de.pad=function(n,t,r){n=Xa(n);var e=(t=Ya(t))?Lr(n):0;if(!t||e>=t)return n;var o=(t-e)/2;return xi(Dr(o),r)+n+xi(Nr(o),r)},de.padEnd=function(n,t,r){n=Xa(n);var e=(t=Ya(t))?Lr(n):0;return t&&et){var e=n;n=t,t=e}if(r||n%1||t%1){var o=Hr();return Zr(n+o*(t-n+jt("1e-"+((o+"").length-1))),t)}return Mo(n,t)},de.reduce=function(n,t,r){var e=ma(n)?rr:pr,o=arguments.length<3;return e(n,Vi(t,4),r,o,De)},de.reduceRight=function(n,t,r){var e=ma(n)?er:pr,o=arguments.length<3;return e(n,Vi(t,4),r,o,ke)},de.repeat=function(n,t,r){return t=(r?Gi(n,t,r):t===i)?1:Ya(t),wo(Xa(n),t)},de.replace=function(){var n=arguments,t=Xa(n[0]);return n.length<3?t:t.replace(n[1],n[2])},de.result=function(n,t,r){var e=-1,o=(t=Go(t,n)).length;for(o||(o=1,n=i);++ez)return[];var r=B,e=Zr(n,B);t=Vi(t),n-=B;for(var o=vr(e,t);++r=u)return n;var c=r-Lr(e);if(c<1)return e;var s=a?Ho(a,0,c).join(""):n.slice(0,c);if(o===i)return s+e;if(a&&(c+=s.length-c),Oa(o)){if(n.slice(c).search(o)){var f,l=s;for(o.global||(o=et(o.source,Xa(Fn.exec(o))+"g")),o.lastIndex=0;f=o.exec(l);)var h=f.index;s=s.slice(0,h===i?c:h)}}else if(n.indexOf(Bo(o),c)!=c){var d=s.lastIndexOf(o);d>-1&&(s=s.slice(0,d))}return s+e},de.unescape=function(n){return(n=Xa(n))&&En.test(n)?n.replace(wn,Rr):n},de.uniqueId=function(n){var t=++ht;return Xa(n)+t},de.upperCase=Mc,de.upperFirst=wc,de.each=Xu,de.eachRight=Zu,de.first=_u,zc(de,(Wc={},Ge(de,function(n,t){lt.call(de.prototype,t)||(Wc[t]=n)}),Wc),{chain:!1}),de.VERSION="4.17.11",Wt(["bind","bindKey","curry","curryRight","partial","partialRight"],function(n){de[n].placeholder=de}),Wt(["drop","take"],function(n,t){me.prototype[n]=function(r){r=r===i?1:Xr(Ya(r),0);var e=this.__filtered__&&!t?new me(this):this.clone();return e.__filtered__?e.__takeCount__=Zr(r,e.__takeCount__):e.__views__.push({size:Zr(r,B),type:n+(e.__dir__<0?"Right":"")}),e},me.prototype[n+"Right"]=function(t){return this.reverse()[n](t).reverse()}}),Wt(["filter","map","takeWhile"],function(n,t){var r=t+1,e=r==L||3==r;me.prototype[n]=function(n){var t=this.clone();return t.__iteratees__.push({iteratee:Vi(n,3),type:r}),t.__filtered__=t.__filtered__||e,t}}),Wt(["head","last"],function(n,t){var r="take"+(t?"Right":"");me.prototype[n]=function(){return this[r](1).value()[0]}}),Wt(["initial","tail"],function(n,t){var r="drop"+(t?"":"Right");me.prototype[n]=function(){return this.__filtered__?new me(this):this[r](1)}}),me.prototype.compact=function(){return this.filter(jc)},me.prototype.find=function(n){return this.filter(n).head()},me.prototype.findLast=function(n){return this.reverse().find(n)},me.prototype.invokeMap=Ao(function(n,t){return"function"==typeof n?new me(this):this.map(function(r){return eo(r,n,t)})}),me.prototype.reject=function(n){return this.filter(ca(Vi(n)))},me.prototype.slice=function(n,t){n=Ya(n);var r=this;return r.__filtered__&&(n>0||t<0)?new me(r):(n<0?r=r.takeRight(-n):n&&(r=r.drop(n)),t!==i&&(r=(t=Ya(t))<0?r.dropRight(-t):r.take(t-n)),r)},me.prototype.takeRightWhile=function(n){return this.reverse().takeWhile(n).reverse()},me.prototype.toArray=function(){return this.take(B)},Ge(me.prototype,function(n,t){var r=/^(?:filter|find|map|reject)|While$/.test(t),e=/^(?:head|last)$/.test(t),o=de[e?"take"+("last"==t?"Right":""):t],u=e||/^find/.test(t);o&&(de.prototype[t]=function(){var t=this.__wrapped__,a=e?[1]:arguments,c=t instanceof me,s=a[0],f=c||ma(t),l=function(n){var t=o.apply(de,tr([n],a));return e&&h?t[0]:t};f&&r&&"function"==typeof s&&1!=s.length&&(c=f=!1);var h=this.__chain__,d=!!this.__actions__.length,p=u&&!h,g=c&&!d;if(!u&&f){t=g?t:new me(this);var v=n.apply(t,a);return v.__actions__.push({func:ku,args:[l],thisArg:i}),new ve(v,h)}return p&&g?n.apply(this,a):(v=this.thru(l),p?e?v.value()[0]:v.value():v)})}),Wt(["pop","push","shift","sort","splice","unshift"],function(n){var t=ut[n],r=/^(?:push|sort|unshift)$/.test(n)?"tap":"thru",e=/^(?:pop|shift)$/.test(n);de.prototype[n]=function(){var n=arguments;if(e&&!this.__chain__){var o=this.value();return t.apply(ma(o)?o:[],n)}return this[r](function(r){return t.apply(ma(r)?r:[],n)})}}),Ge(me.prototype,function(n,t){var r=de[t];if(r){var e=r.name+"";(oe[e]||(oe[e]=[])).push({name:t,func:r})}}),oe[pi(i,x).name]=[{name:"wrapper",func:i}],me.prototype.clone=function(){var n=new me(this.__wrapped__);return n.__actions__=ei(this.__actions__),n.__dir__=this.__dir__,n.__filtered__=this.__filtered__,n.__iteratees__=ei(this.__iteratees__),n.__takeCount__=this.__takeCount__,n.__views__=ei(this.__views__),n},me.prototype.reverse=function(){if(this.__filtered__){var n=new me(this);n.__dir__=-1,n.__filtered__=!0}else(n=this.clone()).__dir__*=-1;return n},me.prototype.value=function(){var n=this.__wrapped__.value(),t=this.__dir__,r=ma(n),e=t<0,o=r?n.length:0,i=function(n,t,r){for(var e=-1,o=r.length;++e=this.__values__.length;return{done:n,value:n?i:this.__values__[this.__index__++]}},de.prototype.plant=function(n){for(var t,r=this;r instanceof ge;){var e=hu(r);e.__index__=0,e.__values__=i,t?o.__wrapped__=e:t=e;var o=e;r=r.__wrapped__}return o.__wrapped__=n,t},de.prototype.reverse=function(){var n=this.__wrapped__;if(n instanceof me){var t=n;return this.__actions__.length&&(t=new me(this)),(t=t.reverse()).__actions__.push({func:ku,args:[Iu],thisArg:i}),new ve(t,this.__chain__)}return this.thru(Iu)},de.prototype.toJSON=de.prototype.valueOf=de.prototype.value=function(){return qo(this.__wrapped__,this.__actions__)},de.prototype.first=de.prototype.head,Dt&&(de.prototype[Dt]=function(){return this}),de}();zt._=zr,(o=function(){return zr}.call(t,r,t,e))===i||(e.exports=o)}).call(this)}).call(this,r("./node_modules/webpack/buildin/global.js"),r("./node_modules/webpack/buildin/module.js")(n))},"./node_modules/webpack/buildin/global.js":function(n,t){var r;r=function(){return this}();try{r=r||Function("return this")()||(0,eval)("this")}catch(n){"object"==typeof window&&(r=window)}n.exports=r},"./node_modules/webpack/buildin/module.js":function(n,t){n.exports=function(n){return n.webpackPolyfill||(n.deprecate=function(){},n.paths=[],n.children||(n.children=[]),Object.defineProperty(n,"loaded",{enumerable:!0,get:function(){return n.l}}),Object.defineProperty(n,"id",{enumerable:!0,get:function(){return n.i}}),n.webpackPolyfill=1),n}}})}); \ No newline at end of file +!function(n,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.ElGrapho=t():n.ElGrapho=t()}(this,function(){return function(n){var t={};function r(e){if(t[e])return t[e].exports;var o=t[e]={i:e,l:!1,exports:{}};return n[e].call(o.exports,o,o.exports,r),o.l=!0,o.exports}return r.m=n,r.c=t,r.d=function(n,t,e){r.o(n,t)||Object.defineProperty(n,t,{enumerable:!0,get:e})},r.r=function(n){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(n,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(n,"__esModule",{value:!0})},r.t=function(n,t){if(1&t&&(n=r(n)),8&t)return n;if(4&t&&"object"==typeof n&&n&&n.__esModule)return n;var e=Object.create(null);if(r.r(e),Object.defineProperty(e,"default",{enumerable:!0,value:n}),2&t&&"string"!=typeof n)for(var o in n)r.d(e,o,function(t){return n[t]}.bind(null,o));return e},r.n=function(n){var t=n&&n.__esModule?function(){return n.default}:function(){return n};return r.d(t,"a",t),t},r.o=function(n,t){return Object.prototype.hasOwnProperty.call(n,t)},r.p="",r(r.s="./engine/src/ElGrapho.js")}({"../../concrete/build/concrete.js":function(n,t,r){var e,o={},i=0;o.PIXEL_RATIO=window&&window.navigator&&window.navigator.userAgent&&!/PhantomJS/.test(window.navigator.userAgent)?2:1,o.viewports=[],o.Viewport=function(n){n||(n={}),this.container=n.container,this.layers=[],this.id=i++,this.scene=new o.Scene,this.setSize(n.width||0,n.height||0),n.container.innerHTML="",n.container.appendChild(this.scene.canvas),o.viewports.push(this)},o.Viewport.prototype={add:function(n){return this.layers.push(n),n.setSize(n.width||this.width,n.height||this.height),n.viewport=this,this},setSize:function(n,t){return this.width=n,this.height=t,this.scene.setSize(n,t),this},getIntersection:function(n,t){var r,e,o=this.layers;for(r=o.length-1;r>=0;r--)if((e=o[r].hit.getIntersection(n,t))>=0)return e;return-1},getIndex:function(){var n,t=o.viewports,r=t.length,e=0;for(e=0;e0&&(t[n]=t[n-1],t[n-1]=this),this},moveToTop:function(){var n=this.getIndex(),t=this.viewport.layers;t.splice(n,1),t.push(this)},moveToBottom:function(){var n=this.getIndex(),t=this.viewport.layers;return t.splice(n,1),t.unshift(this),this},getIndex:function(){var n,t=this.viewport.layers,r=t.length,e=0;for(e=0;e>16,(65280&n)>>8,255&n]}},function(i){"use strict";void 0===(e=function(){return o}.call(t,r,t,n))||(n.exports=e)}()},"./engine/dist/icons/boxZoomIcon.svg.js":function(n,t){n.exports='\n\n\x3c!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --\x3e\n\n\n\n \n \n \n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n'},"./engine/dist/icons/moveIcon.svg.js":function(n,t){n.exports='\n\n\n\n \n \n \n\n'},"./engine/dist/icons/resetIcon.svg.js":function(n,t){n.exports='\n\n\x3c!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --\x3e\n\n\n \n \n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n'},"./engine/dist/icons/selectIcon.svg.js":function(n,t){n.exports='\n\n\x3c!-- Generator: Adobe Illustrator 17.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --\x3e\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n'},"./engine/dist/icons/zoomInIcon.svg.js":function(n,t){n.exports='\n\n\x3c!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --\x3e\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n'},"./engine/dist/icons/zoomOutIcon.svg.js":function(n,t){n.exports='\n\n\x3c!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --\x3e\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n'},"./engine/dist/shaders/hitPoint.vert.js":function(n,t){n.exports="attribute vec4 aVertexPosition;\n\nattribute float aVertexIndex;\n\nuniform mat4 uModelViewMatrix;\nuniform mat4 uProjectionMatrix;\nuniform bool magicZoom;\nuniform float nodeSize;\n\nvarying vec4 vVertexColor;\n\n// unsigned rIntValue = (u_color / 256 / 256) % 256;\n// unsigned gIntValue = (u_color / 256 ) % 256;\n// unsigned bIntValue = (u_color ) % 256;\n\n// https://stackoverflow.com/questions/6893302/decode-rgb-value-to-single-float-without-bit-shift-in-glsl\n// had to flip r and b to match concrete notation\nvec3 unpackColor(float f) {\n vec3 color;\n color.r = floor(f / 256.0 / 256.0);\n color.g = floor((f - color.r * 256.0 * 256.0) / 256.0);\n color.b = floor(f - color.r * 256.0 * 256.0 - color.g * 256.0);\n // now we have a vec3 with the 3 components in range [0..255]. Let's normalize it!\n return color / 255.0;\n}\n\nvoid main() {\n gl_Position = uProjectionMatrix * uModelViewMatrix * aVertexPosition;\n\n if (magicZoom) {\n gl_PointSize = nodeSize; \n }\n else {\n float size = nodeSize * min(length(uModelViewMatrix[0]), length(uModelViewMatrix[1]));\n gl_PointSize = max(size, 5.0);\n }\n\n vVertexColor = vec4(unpackColor(aVertexIndex), 1.0);\n}"},"./engine/dist/shaders/point.frag.js":function(n,t){n.exports="//https://www.desultoryquest.com/blog/drawing-anti-aliased-circular-points-using-opengl-slash-webgl/\nprecision mediump float;\nvarying vec4 vVertexColor;\n\nvoid main(void) {\n float r = 0.0, delta = 0.0, alpha = 1.0;\n vec2 cxy = 2.0 * gl_PointCoord - 1.0;\n r = dot(cxy, cxy);\n if (r > 1.0) {\n discard;\n }\n gl_FragColor = vVertexColor * (alpha);\n}"},"./engine/dist/shaders/point.vert.js":function(n,t){n.exports="attribute vec4 aVertexPosition;\nattribute float aVertexColor;\nattribute float aVertexFocused;\n\nuniform mat4 uModelViewMatrix;\nuniform mat4 uProjectionMatrix;\nuniform bool magicZoom;\nuniform float nodeSize;\n\nvarying vec4 vVertexColor;\n\n// const PALETTE_HEX = [\n// '3366CC',\n// 'DC3912',\n// 'FF9900',\n// '109618',\n// '990099',\n// '3B3EAC',\n// '0099C6',\n// 'DD4477',\n// '66AA00',\n// 'B82E2E',\n// '316395',\n// '994499',\n// '22AA99',\n// 'AAAA11',\n// '6633CC',\n// 'E67300',\n// '8B0707',\n// '329262',\n// '5574A6',\n// '3B3EAC'\n// ];\n\nvoid main() {\n gl_Position = uProjectionMatrix * uModelViewMatrix * aVertexPosition;\n\n if (magicZoom) {\n gl_PointSize = nodeSize; \n }\n else {\n gl_PointSize = nodeSize * min(length(uModelViewMatrix[0]), length(uModelViewMatrix[1]));\n }\n\n // normal color\n if (aVertexFocused == 0.0) {\n if (aVertexColor == 0.0) {\n vVertexColor = vec4(51.0/255.0, 102.0/255.0, 204.0/255.0, 1.0); // 3366CC\n }\n else if (aVertexColor == 1.0) {\n vVertexColor = vec4(220.0/255.0, 57.0/255.0, 18.0/255.0, 1.0); // DC3912\n }\n else if (aVertexColor == 2.0) {\n vVertexColor = vec4(255.0/255.0, 153.0/255.0, 0.0/255.0, 1.0); // FF9900\n }\n else if (aVertexColor == 3.0) {\n vVertexColor = vec4(16.0/255.0, 150.0/255.0, 24.0/255.0, 1.0); // 109618\n }\n else if (aVertexColor == 4.0) {\n vVertexColor = vec4(153.0/255.0, 0.0/255.0, 153.0/255.0, 1.0); // 990099\n }\n else if (aVertexColor == 5.0) {\n vVertexColor = vec4(59.0/255.0, 62.0/255.0, 172.0/255.0, 1.0); // 3B3EAC\n }\n else if (aVertexColor == 6.0) {\n vVertexColor = vec4(0.0/255.0, 153.0/255.0, 198.0/255.0, 1.0); // 0099C6\n }\n else if (aVertexColor == 7.0) {\n vVertexColor = vec4(221.0/255.0, 68.0/255.0, 119.0/255.0, 1.0); // DD4477\n }\n }\n // focused color\n else {\n // pink for now\n vVertexColor = vec4(255.0/255.0, 105.0/255.0, 147.0/255.0, 1.0); \n }\n}"},"./engine/dist/shaders/pointStroke.vert.js":function(n,t){n.exports="attribute vec4 aVertexPosition;\n\nuniform mat4 uModelViewMatrix;\nuniform mat4 uProjectionMatrix;\nuniform bool magicZoom;\nuniform float nodeSize;\n\nvarying vec4 vVertexColor;\n\nconst float POINT_STROKE_WIDTH_FACTOR = 1.5;\n\nvoid main() {\n gl_Position = uProjectionMatrix * uModelViewMatrix * aVertexPosition;\n\n if (magicZoom) {\n gl_PointSize = nodeSize * POINT_STROKE_WIDTH_FACTOR; \n }\n else {\n gl_PointSize = nodeSize * min(length(uModelViewMatrix[0]), length(uModelViewMatrix[1])) * POINT_STROKE_WIDTH_FACTOR;\n }\n\n\n vVertexColor = vec4(1.0, 1.0, 1.0, 1.0); \n\n}"},"./engine/dist/shaders/triangle.frag.js":function(n,t){n.exports="// use lowp for solid colors to improve perf\n// https://stackoverflow.com/questions/13780609/what-does-precision-mediump-float-mean\nprecision mediump float;\nvarying vec4 vVertexColor;\n\nvoid main(void) {\n gl_FragColor = vVertexColor;\n}"},"./engine/dist/shaders/triangle.vert.js":function(n,t){n.exports="attribute vec4 aVertexPosition;\nattribute vec4 normal;\nattribute float aVertexColor;\n\nuniform mat4 uModelViewMatrix;\nuniform mat4 uProjectionMatrix;\nuniform bool magicZoom;\nuniform float nodeSize;\n\nfloat MAX_NODE_SIZE = 16.0;\nconst float PI = 3.1415926535897932384626433832795;\n\nvarying vec4 vVertexColor;\n\nvec2 rotate(vec2 v, float a) {\n\tfloat s = sin(a);\n\tfloat c = cos(a);\n\tmat2 m = mat2(c, -s, s, c);\n\treturn m * v;\n}\n\n// https://mattdesl.svbtle.com/drawing-lines-is-hard\n// https://github.com/mattdesl/three-line-2d/blob/master/shaders/basic.js\nvoid main() {\n float zoomX = length(uModelViewMatrix[0]);\n float zoomY = length(uModelViewMatrix[1]);\n // vec2 standardZoomVector = normalize(vec2(1.0, 0.0));\n // vec2 zoomVector = normalize(vec2(zoomX, zoomY));\n // float zoomAngle = dot(standardZoomVector, zoomVector);\n // vec2 vec2Normal = vec2(normal.xy);\n // vec2 rotatedNormal = rotate(vec2Normal, zoomAngle);\n // vec4 newNormal = vec4(rotatedNormal.x, rotatedNormal.y, 0.0, 0.0);\n\n vec4 newNormal = vec4(normal.x, normal.y, 0.0, 0.0);\n\n if (magicZoom) {\n gl_Position = uProjectionMatrix * ((uModelViewMatrix * aVertexPosition) + newNormal);\n }\n else {\n newNormal.x = newNormal.x * zoomX * nodeSize / MAX_NODE_SIZE;\n newNormal.y = newNormal.y * zoomY * nodeSize / MAX_NODE_SIZE;\n gl_Position = uProjectionMatrix * ((uModelViewMatrix * aVertexPosition) + newNormal);\n }\n \n\n if (aVertexColor == 0.0) {\n vVertexColor = vec4(51.0/255.0, 102.0/255.0, 204.0/255.0, 1.0); // 3366CC\n }\n else if (aVertexColor == 1.0) {\n vVertexColor = vec4(220.0/255.0, 57.0/255.0, 18.0/255.0, 1.0); // DC3912\n }\n else if (aVertexColor == 2.0) {\n vVertexColor = vec4(255.0/255.0, 153.0/255.0, 0.0/255.0, 1.0); // FF9900\n }\n else if (aVertexColor == 3.0) {\n vVertexColor = vec4(16.0/255.0, 150.0/255.0, 24.0/255.0, 1.0); // 109618\n }\n else if (aVertexColor == 4.0) {\n vVertexColor = vec4(153.0/255.0, 0.0/255.0, 153.0/255.0, 1.0); // 990099\n }\n else if (aVertexColor == 5.0) {\n vVertexColor = vec4(59.0/255.0, 62.0/255.0, 172.0/255.0, 1.0); // 3B3EAC\n }\n else if (aVertexColor == 6.0) {\n vVertexColor = vec4(0.0/255.0, 153.0/255.0, 198.0/255.0, 1.0); // 0099C6\n }\n else if (aVertexColor == 7.0) {\n vVertexColor = vec4(221.0/255.0, 68.0/255.0, 119.0/255.0, 1.0); // DD4477\n }\n}"},"./engine/dist/styles/ElGrapho.min.css.js":function(n,t){n.exports=".el-grapho-tooltip{position:fixed;background-color:white;pointer-events:none;padding:10px;border:1px solid #333;border-radius:3px;font-family:verdana;font-size:12px;user-select:none}.el-grapho-controls{position:absolute;right:0;top:5px;opacity:0;transition:opacity .3s ease-in-out}.el-grapho-controls button{background:white;padding:5px;cursor:pointer;outline:0;border:2px solid black;border-radius:3px;margin-right:5px}.el-grapho-wrapper:hover .el-grapho-controls{opacity:1}.el-grapho-count{position:absolute;bottom:5px;right:5px;pointer-events:none;font-family:monospace;background-color:white;border-radius:3px;padding:3px;opacity:.9}.el-grapho-count::selection{background:transparent}.el-grapho-box-zoom-component{position:fixed;border:1px solid #119fe0;background-color:rgba(17,159,224,0.1);pointer-events:none}.el-grapho-loading-component{width:100%;height:100%;background-color:rgba(255,255,255,0.9);position:absolute;top:0;opacity:0;transition:opacity .3s ease-in-out;pointer-events:none}.el-grapho-loading .el-grapho-loading-component{opacity:1}.spinner{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.spinner>div{width:18px;height:18px;background-color:#333;border-radius:100%;display:inline-block;-webkit-animation:sk-bouncedelay 1.4s infinite ease-in-out both;animation:sk-bouncedelay 1.4s infinite ease-in-out both}.spinner .bounce1{-webkit-animation-delay:-0.32s;animation-delay:-0.32s}.spinner .bounce2{-webkit-animation-delay:-0.16s;animation-delay:-0.16s}@-webkit-keyframes sk-bouncedelay{0%,80%,100%{-webkit-transform:scale(0)}40%{-webkit-transform:scale(1)}}@keyframes sk-bouncedelay{0%,80%,100%{-webkit-transform:scale(0);transform:scale(0)}40%{-webkit-transform:scale(1);transform:scale(1)}}.el-grapho-wrapper{display:inline-block;position:relative;background-color:white;overflow:hidden}.el-grapho-wrapper.el-grapho-select-interaction-mode{cursor:default}.el-grapho-wrapper.el-grapho-select-interaction-mode .el-grapho-controls .el-grapho-select-control{border-color:#119fe0}.el-grapho-wrapper.el-grapho-select-interaction-mode .el-grapho-controls .el-grapho-select-control path,.el-grapho-wrapper.el-grapho-select-interaction-mode .el-grapho-controls .el-grapho-select-control polygon{fill:#119fe0}.el-grapho-wrapper.el-grapho-pan-interaction-mode{cursor:move}.el-grapho-wrapper.el-grapho-pan-interaction-mode .el-grapho-controls .el-grapho-pan-control{border-color:#119fe0}.el-grapho-wrapper.el-grapho-pan-interaction-mode .el-grapho-controls .el-grapho-pan-control path,.el-grapho-wrapper.el-grapho-pan-interaction-mode .el-grapho-controls .el-grapho-pan-control polygon{fill:#119fe0}.el-grapho-wrapper.el-grapho-box-zoom-interaction-mode{cursor:zoom-in}.el-grapho-wrapper.el-grapho-box-zoom-interaction-mode .el-grapho-controls .el-grapho-box-zoom-control{border-color:#119fe0}.el-grapho-wrapper.el-grapho-box-zoom-interaction-mode .el-grapho-controls .el-grapho-box-zoom-control path,.el-grapho-wrapper.el-grapho-box-zoom-interaction-mode .el-grapho-controls .el-grapho-box-zoom-control polygon{fill:#119fe0}\n"},"./engine/src/Color.js":function(n,t){const r={rgbToInt:function(n){return(n[0]<<16)+(n[1]<<8)+n[2]},intToRGB:function(n){return[(16711680&n)>>16,(65280&n)>>8,255&n]},hexToRgb:function(n){var t=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(n);return[parseInt(t[1],16),parseInt(t[2],16),parseInt(t[3],16)]}};n.exports=r},"./engine/src/Dom.js":function(n,t){const r={create:function(n){let t=document.createElement("div");return t.className=n,t},closest:function(n,t){if(!document.documentElement.contains(n))return null;do{if(n.matches(t))return n;n=n.parentElement||n.parentNode}while(null!==n&&1===n.nodeType);return null}};n.exports=r},"./engine/src/EasingFunctions.js":function(n,t){n.exports={linear:function(n){return n},easeInQuad:function(n){return n*n},easeOutQuad:function(n){return n*(2-n)},easeInOutQuad:function(n){return n<.5?2*n*n:(4-2*n)*n-1},easeInCubic:function(n){return n*n*n},easeOutCubic:function(n){return--n*n*n+1},easeInOutCubic:function(n){return n<.5?4*n*n*n:(n-1)*(2*n-2)*(2*n-2)+1},easeInQuart:function(n){return n*n*n*n},easeOutQuart:function(n){return 1- --n*n*n*n},easeInOutQuart:function(n){return n<.5?8*n*n*n*n:1-8*--n*n*n*n},easeInQuint:function(n){return n*n*n*n*n},easeOutQuint:function(n){return 1+--n*n*n*n*n},easeInOutQuint:function(n){return n<.5?16*n*n*n*n*n:1+16*--n*n*n*n*n}}},"./engine/src/ElGrapho.js":function(n,t,r){const e=r("./engine/src/UUID.js"),o=r("./engine/src/WebGL.js"),i=r("./engine/src/Profiler.js"),u=r("./engine/src/ElGraphoCollection.js"),a=r("./engine/src/components/Controls/Controls.js"),c=r("./engine/src/components/Count/Count.js"),s=r("./engine/src/Events.js"),f=r("../../concrete/build/concrete.js"),l=r("./node_modules/lodash/lodash.js"),h=r("./engine/src/Color.js"),d=r("./engine/src/Theme.js"),p=r("./engine/src/components/Tooltip/Tooltip.js"),g=r("./engine/src/formatters/NumberFormatter.js"),v=r("./engine/src/VertexBridge.js"),m=r("./engine/src/Enums.js"),x=r("./engine/src/components/BoxZoom/BoxZoom.js"),_=r("./engine/src/models/Tree.js"),b=r("./engine/src/models/Cluster.js"),y=r("./engine/src/Dom.js"),M=r("./engine/src/components/Loading/Loading.js"),w=r("./engine/src/models/Ring.js"),A=r("./engine/src/models/ForceDirectedGraph.js"),E=r("./engine/src/Labels.js");let P=function(n){this.container=n.container||document.createElement("div"),this.id=e.generate(),this.dirty=!0,this.hitDirty=!0,this.zoomX=1,this.zoomY=1,this.panX=0,this.panY=0,this.events=new s,this.width=n.model.width,this.height=n.model.height,this.nodeSize=n.nodeSize||16,this.animations=[],this.wrapper=document.createElement("div"),this.wrapper.className="el-grapho-wrapper",this.wrapper.style.width=this.width+"px",this.wrapper.style.height=this.height+"px",this.container.appendChild(this.wrapper),this.animations=void 0===n.animations||n.animations,this.setInteractionMode(m.interactionMode.SELECT),this.panStart=null,this.idle=!0,this.debug=void 0!==n.debug&&n.debug;let t=void 0===n.arrows||n.arrows;this.tooltipTemplate=function(n,t){t.innerHTML=P.NumberFormatter.addCommas(n)},this.hoveredDataIndex=-1;let r=this.viewport=new f.Viewport({container:this.wrapper,width:this.width,height:this.height}),i=new f.Layer({contextType:"webgl"}),a=this.labelsLayer=new f.Layer({contextType:"2d"});r.add(i),r.add(a);let l=this.webgl=new o({layer:i});u.initialized||u.init();let h=this.vertices=v.modelToVertices(n.model,this.width,this.height,t),d=h.points.positions.length/2;h.points.focused=new Float32Array(d),l.initBuffers(h),this.debug&&new c({container:this.wrapper,vertices:h}),this.initComponents(),this.labelStrs=n.labels||[],this.labels=new E,this.listen(),u.graphs.push(this)};P.prototype={initComponents:function(){this.controls=new a({container:this.wrapper,graph:this}),this.loading=new M({container:this.wrapper})},renderLabels:function(){let n=this;this.labels.clear();let t=this.vertices.points.positions;this.labelStrs.forEach(function(r,e){let o=2*e;n.labels.addLabel(r,t[o],t[o+1])});let r=this.labelsLayer.scene.context;r.save(),r.translate(this.width/2,this.height/2),r.textAlign="center",r.fillStyle="black",r.strokeStyle="white",r.lineWidth=4,this.labels.labelsAdded.forEach(function(t){let e=t.x*n.zoomX+n.panX,o=-1*t.y*n.zoomY-n.panY-10;r.strokeText(t.str,e,o),r.fillText(t.str,e,o)}),r.restore()},getMousePosition(n){let t=this.wrapper.getBoundingClientRect();return{x:n.clientX-t.left,y:n.clientY-t.top}},listen:function(){let n=this,t=this.viewport;this.on("zoom-in",function(){n.zoomIn()}),this.on("zoom-out",function(){n.zoomOut()}),this.on("reset",function(){n.reset()}),this.on("select",function(){n.setInteractionMode(m.interactionMode.SELECT)}),this.on("pan",function(){n.setInteractionMode(m.interactionMode.PAN)}),this.on("box-zoom",function(){n.setInteractionMode(m.interactionMode.BOX_ZOOM)}),document.addEventListener("mousedown",function(t){if(!y.closest(t.target,".el-grapho-controls")&&n.interactionMode===m.interactionMode.BOX_ZOOM){let r=n.getMousePosition(t);n.zoomBoxAnchor={x:r.x,y:r.y},x.create(t.clientX,t.clientY)}}),t.container.addEventListener("mousedown",function(t){if(!y.closest(t.target,".el-grapho-controls")&&n.interactionMode===m.interactionMode.PAN){let r=n.getMousePosition(t);n.panStart=r,p.hide()}}),document.addEventListener("mousemove",function(t){n.interactionMode===m.interactionMode.BOX_ZOOM&&x.update(t.clientX,t.clientY)}),t.container.addEventListener("mousemove",l.throttle(function(r){let e=n.getMousePosition(r),o=t.getIntersection(e.x,e.y);if(n.interactionMode===m.interactionMode.PAN&&n.panStart){let r={x:e.x-n.panStart.x,y:e.y-n.panStart.y};t.scene.canvas.style.marginLeft=r.x+"px",t.scene.canvas.style.marginTop=r.y+"px"}n.panStart||n.zoomBoxAnchor||(-1===o?p.hide():p.render(o,r.clientX,r.clientY,n.tooltipTemplate),o!==n.hoveredDataIndex&&(n.hoveredDataIndex>-1&&(n.vertices.points.focused[n.hoveredDataIndex]=0),n.vertices.points.focused[o]=1,n.webgl.initBuffers(n.vertices),n.dirty=!0,-1!==n.hoveredDataIndex&&n.fire(m.events.NODE_MOUSEOUT,{dataIndex:n.hoveredDataIndex}),n.hoveredDataIndex=o,-1!==n.hoveredDataIndex&&n.fire(m.events.NODE_MOUSEOVER,{dataIndex:n.hoveredDataIndex})))},17)),document.addEventListener("mouseup",function(r){if(!y.closest(r.target,".el-grapho-controls")&&n.interactionMode===m.interactionMode.BOX_ZOOM){if(!n.zoomBoxAnchor)return;let e,o,i,u,a,c,s=n.getMousePosition(r);s.x>n.zoomBoxAnchor.x&&s.y>n.zoomBoxAnchor.y?(i=s.x-n.zoomBoxAnchor.x,u=s.y-n.zoomBoxAnchor.y,e=n.zoomBoxAnchor.x,o=n.zoomBoxAnchor.y):s.x>n.zoomBoxAnchor.x&&s.y<=n.zoomBoxAnchor.y?(i=s.x-n.zoomBoxAnchor.x,u=n.zoomBoxAnchor.y-s.y,e=n.zoomBoxAnchor.x,o=s.y):s.x<=n.zoomBoxAnchor.x&&s.y<=n.zoomBoxAnchor.y?(i=n.zoomBoxAnchor.x-s.x,u=n.zoomBoxAnchor.y-s.y,e=s.x,o=s.y):s.x<=n.zoomBoxAnchor.x&&s.y>n.zoomBoxAnchor.y&&(i=n.zoomBoxAnchor.x-s.x,u=s.y-n.zoomBoxAnchor.y,e=s.x,o=n.zoomBoxAnchor.y);let f=t.width,l=t.height;i<2||u<2?(a=2,c=2,i=0,u=0,e=s.x,o=s.y):(a=f/i,c=l/u);let h=l/2,d=(f/2-(e+i/2))*n.zoomX,p=(o+u/2-h)*n.zoomY;n.zoomToPoint(d,p,a,c),x.destroy(),n.zoomBoxAnchor=null}}),t.container.addEventListener("mouseup",function(r){if(!y.closest(r.target,".el-grapho-controls")){if(!n.panStart&&!n.zoomBoxAnchor){let e=n.getMousePosition(r),o=t.getIntersection(e.x,e.y);-1!==o&&n.fire(m.events.NODE_CLICK,{dataIndex:o})}if(n.interactionMode===m.interactionMode.PAN){let e=n.getMousePosition(r),o={x:e.x-n.panStart.x,y:e.y-n.panStart.y};n.panX+=o.x,n.panY-=o.y,n.panStart=null,t.scene.canvas.style.marginLeft=0,t.scene.canvas.style.marginTop=0,n.dirty=!0,n.hitDirty=!0}}}),t.container.addEventListener("mouseout",l.throttle(function(){p.hide()}))},setInteractionMode:function(n){this.interactionMode=n,this.wrapper.className="el-grapho-wrapper el-grapho-"+n+"-interaction-mode"},zoomToPoint:function(n,t,r,e){if(this.animations){this.animations=[];let o=this;this.animations.push({startVal:o.zoomX,endVal:o.zoomX*r,startTime:(new Date).getTime(),endTime:(new Date).getTime()+300,prop:"zoomX"}),this.animations.push({startVal:o.zoomY,endVal:o.zoomY*e,startTime:(new Date).getTime(),endTime:(new Date).getTime()+300,prop:"zoomY"}),this.animations.push({startVal:o.panX,endVal:(o.panX+n/o.zoomX)*r,startTime:(new Date).getTime(),endTime:(new Date).getTime()+300,prop:"panX"}),this.animations.push({startVal:o.panY,endVal:(o.panY+t/o.zoomY)*e,startTime:(new Date).getTime(),endTime:(new Date).getTime()+300,prop:"panY"}),this.dirty=!0}else this.panX=(this.panX+n/this.zoomX)*r,this.panY=(this.panY+t/this.zoomY)*e,this.zoomX=this.zoomX*r,this.zoomY=this.zoomY*e,this.dirty=!0,this.hitDirty=!0},zoomIn:function(){this.zoomToPoint(0,0,2,2)},zoomOut:function(){this.zoomToPoint(0,0,.5,.5)},reset:function(){if(this.animations){this.animations=[];let n=this;this.animations.push({startVal:n.zoomX,endVal:1,startTime:(new Date).getTime(),endTime:(new Date).getTime()+300,prop:"zoomX"}),this.animations.push({startVal:n.zoomY,endVal:1,startTime:(new Date).getTime(),endTime:(new Date).getTime()+300,prop:"zoomY"}),this.animations.push({startVal:n.panX,endVal:0,startTime:(new Date).getTime(),endTime:(new Date).getTime()+300,prop:"panX"}),this.animations.push({startVal:n.panY,endVal:0,startTime:(new Date).getTime(),endTime:(new Date).getTime()+300,prop:"panY"}),this.dirty=!0}else this.zoomX=1,this.zoomY=1,this.panX=0,this.panY=0,this.dirty=!0,this.hitDirty=!0},on:function(n,t){this.events.on(n,t)},fire:function(n,t){this.events.fire(n,t)},showLoading:function(){this.wrapper.classList.add("el-grapho-loading")},hideLoading:function(){this.wrapper.classList.remove("el-grapho-loading")}},P.Theme=d,P.Color=h,P.Profiler=i,P.NumberFormatter=g,P.models={Tree:_,Cluster:b,Ring:w,ForceDirectedGraph:A},n.exports=P},"./engine/src/ElGraphoCollection.js":function(n,t,r){const e=r("./engine/src/EasingFunctions.js"),o=r("./engine/dist/styles/ElGrapho.min.css.js"),i=r("./engine/src/Enums.js");let u={graphs:[],initialized:!1,init:function(){u.injectStyles(),u.executeFrame()},injectStyles:function(){let n=document.getElementsByTagName("head")[0],t=document.createElement("style");t.setAttribute("type","text/css"),t.styleSheet?t.styleSheet.cssText=o:t.appendChild(document.createTextNode(o)),n.appendChild(t)},executeFrame:function(){let n=(new Date).getTime();u.graphs.forEach(function(t){let r,o,u=0,a=!0;for(;u=16?(r=!0,o=16):(r=!1,o=t.nodeSize),t.dirty&&(a=!1,t.webgl.drawScene(t.panX,t.panY,t.zoomX,t.zoomY,r,o),t.labelsLayer.scene.clear(),r&&t.renderLabels(),t.viewport.render(),t.dirty=!1),t.hitDirty&&(a=!1,t.webgl.drawHit(t.panX,t.panY,t.zoomX,t.zoomY,r,o),t.hitDirty=!1),a&&!t.idle&&t.fire(i.events.IDLE),t.idle=a}),requestAnimationFrame(u.executeFrame)}};n.exports=u,window&&(window.ElGraphoCollection=u)},"./engine/src/Enums.js":function(n,t){n.exports={events:{IDLE:"idle",NODE_MOUSEOVER:"node-mouseover",NODE_MOUSEOUT:"node-mouseout",NODE_CLICK:"node-click"},interactionMode:{SELECT:"select",PAN:"pan",BOX_ZOOM:"box-zoom"}}},"./engine/src/Events.js":function(n,t){let r=function(){};r.prototype={funcs:{},on:function(n,t){this.funcs[n]||(this.funcs[n]=[]),this.funcs[n].push(t)},fire:function(n,t){this.funcs[n]&&this.funcs[n].forEach(function(n){n(t)})}},n.exports=r},"./engine/src/Labels.js":function(n,t){let r=function(){this.labelsAdded=[]};r.prototype={clear:function(){this.labelsAdded=[]},addLabel:function(n,t,r){this.labelsAdded.push({str:n,x:t,y:r,width:100,height:10})}},n.exports=r},"./engine/src/Profiler.js":function(n,t){let r=function(n,t){return function(){let e=(new Date).getTime(),o=t.apply(this,arguments),i=(new Date).getTime()-e;return r.enabled&&console.log(n+"() took "+i+"ms"),o}};r.enabled=!1,n.exports=r},"./engine/src/Theme.js":function(n,t,r){const e=r("./engine/src/Color.js");let o=[];["3366CC","DC3912","FF9900","109618","990099","3B3EAC","0099C6","DD4477","66AA00","B82E2E","316395","994499","22AA99","AAAA11","6633CC","E67300","8B0707","329262","5574A6","3B3EAC"].forEach(function(n){o=o.concat(e.hexToRgb(n))});const i={palette:o};n.exports=i},"./engine/src/UUID.js":function(n,t){let r=0,e={generate:function(){return r++}};n.exports=e},"./engine/src/VertexBridge.js":function(n,t,r){const e=r("./engine/src/Profiler.js"),o=r("./node_modules/gl-matrix/lib/gl-matrix.js").vec2,i={modelToVertices:e("VertexBridges.modelToVertices",function(n,t,r,e){let i=n.nodes,u=n.edges,a=new Float32Array(2*i.xs.length),c=t/2,s=r/2;i.xs=i.xs.map(function(n){return n*c}),i.ys=i.ys.map(function(n){return n*s});let f=0;for(let n=0;no.anchorX?(r=o.anchorX,e=n):(r=n,e=o.anchorX),t>o.anchorY?(i=o.anchorY,u=t):(i=t,u=o.anchorY);let a=e-r,c=u-i;o.el.style.left=Math.floor(r)+"px",o.el.style.top=Math.floor(i)+"px",o.el.style.width=Math.floor(a)+"px",o.el.style.height=Math.floor(c)+"px"}},destroy:function(){let n=document.querySelector(".el-grapho-box-zoom-component");n&&n.remove(),o.active=!1}};n.exports=o},"./engine/src/components/Controls/Controls.js":function(n,t,r){const e=r("./engine/dist/icons/zoomInIcon.svg.js"),o=r("./engine/dist/icons/zoomOutIcon.svg.js"),i=r("./engine/dist/icons/moveIcon.svg.js"),u=r("./engine/dist/icons/selectIcon.svg.js"),a=r("./engine/dist/icons/boxZoomIcon.svg.js"),c=r("./engine/dist/icons/resetIcon.svg.js"),s=function(n){this.graph=n.graph,this.container=n.container,this.wrapper=document.createElement("div"),this.wrapper.className="el-grapho-controls",this.container.appendChild(this.wrapper),this.selectButton=this.addButton({icon:u,evtName:"select"}),this.boxZoomIcon=this.addButton({icon:a,evtName:"box-zoom"}),this.panButton=this.addButton({icon:i,evtName:"pan"}),this.resetButton=this.addButton({icon:c,evtName:"reset"}),this.zoomInButton=this.addButton({icon:e,evtName:"zoom-in"}),this.zoomOutButton=this.addButton({icon:o,evtName:"zoom-out"})};s.prototype={addButton:function(n){let t=document.createElement("button");t.className="el-grapho-"+n.evtName+"-control";let r=this.graph;return t.innerHTML=n.icon,t.addEventListener("click",function(){r.fire(n.evtName)}),this.wrapper.appendChild(t),t}},n.exports=s},"./engine/src/components/Count/Count.js":function(n,t,r){const e=r("./engine/src/formatters/NumberFormatter.js"),o=function(n){let t=this.wrapper=document.createElement("span"),r=n.container,o=n.vertices,i=o.points?o.points.positions.length/2:0,u=o.triangles?o.triangles.positions.length/6:0;t.innerHTML=e.addCommas(i)+" points + "+e.addCommas(u)+" triangles",t.className="el-grapho-count",r.appendChild(t)};o.prototype={},n.exports=o},"./engine/src/components/Loading/Loading.js":function(n,t,r){const e=r("./engine/src/Dom.js"),o=function(n){this.container=n.container,this.wrapper=e.create("el-grapho-loading-component");this.wrapper.innerHTML='\n
\n
\n
\n
\n
\n ',this.container.appendChild(this.wrapper)};o.prototype={},n.exports=o},"./engine/src/components/Tooltip/Tooltip.js":function(n,t,r){const e=r("./engine/src/Dom.js"),o={DEFAULT_TEMPLATE:function(n){this.wrapper.innerHTML=n},initialized:!1,init:function(){o.wrapper=e.create("el-grapho-tooltip"),document.body.appendChild(this.wrapper),o.initialized=!0},render:function(n,t,r,e){o.initialized||o.init(),o.wrapper.style.display="inline-block",o.wrapper.style.left=t+"px",o.wrapper.style.bottom=window.innerHeight-r+10+"px",e(n,this.wrapper)},hide:function(){o.initialized||o.init(),o.wrapper.style.display="none"}};n.exports=o},"./engine/src/formatters/NumberFormatter.js":function(n,t){const r={addCommas:function(n){return n.toString().replace(/\B(?=(\d{3})+(?!\d))/g,",")},roundToNearestDecimalPlace:function(n,t){let r=Math.pow(10,t);return Math.round(n*r)/r}};n.exports=r},"./engine/src/models/Cluster.js":function(n,t){n.exports=function(n){let t,r,e=n.width,o=n.height;e>o?(t=o/e,r=1):(t=1,r=e/o);let i={nodes:{xs:[],ys:[],colors:n.nodes.colors.slice()},edges:{from:n.edges.from.slice(),to:n.edges.to.slice()},width:n.width,height:n.height},u={};n.nodes.colors.forEach(function(n,t){void 0===u[n]&&(u[n]=[]),u[n].push(t)});let a,c=Object.keys(u).length,s=0,f=0;for(a in u)f=Math.max(f,u[a].length);let l=1/Math.sqrt(f);for(a in u){let n,e,o=u[a],f=-2*Math.PI*s/c+Math.PI/2;1===c?(n=0,e=0):(n=Math.cos(f)*t,e=Math.sin(f)*r);let h=l,d=l/h,p=0;o.forEach(function(o){let u=Math.cos(p)*h*t,a=Math.sin(p)*h*r;i.nodes.xs[o]=n+u,i.nodes.ys[o]=e+a,h+=l*d/(2*Math.PI),p-=d=l/h}),s++}return i}},"./engine/src/models/ForceDirectedGraph.js":function(n,t){n.exports=function(n){let t=n.nodes.colors.length,r=n.steps||10,e={nodes:{xs:[],ys:[],colors:n.nodes.colors.slice()},edges:{from:n.edges.from.slice(),to:n.edges.to.slice()},width:n.width,height:n.height};e.nodes.xs.length=t,e.nodes.xs.fill(0),e.nodes.ys.length=t,e.nodes.ys.fill(0);let o=e.nodes,i=e.edges,u=i.from.length,a=[];for(let n=0;n0){let r=10/(t*t),e=-1*r*u/(c*c),i=-1*r*a/(c*c);o.xs[n]+=e,o.ys[n]+=i}}for(let n=0;n0){let n=.1;t=n*s,r=n*f,o.xs[e]+=t,o.ys[e]+=r,o.xs[u]-=t,o.ys[u]-=r}}}return e}},"./engine/src/models/Ring.js":function(n,t){n.exports=function(n){let t=n.nodes.colors.length,r={nodes:{xs:[],ys:[],colors:n.nodes.colors.slice()},edges:{from:n.edges.from.slice(),to:n.edges.to.slice()},width:n.width,height:n.height};for(let n=0;ni&&(i=n.level)}),r.sort(function(n,t){return n.index-t.index});let u={nodes:{xs:[],ys:[],colors:[]},edges:{from:[],to:[]},width:n.width,height:n.height};return r.forEach(function(n,t){u.nodes.xs[t]=n.x,u.nodes.ys[t]=1-(n.level-1)/(i-1)*2,u.nodes.colors[t]=n.color,n.parent&&(u.edges.from[t]=n.parent.index,u.edges.to[t]=n.index)}),u}},"./node_modules/gl-matrix/lib/gl-matrix.js":function(n,t,r){"use strict";r.r(t);var e=r("./node_modules/gl-matrix/lib/gl-matrix/common.js");r.d(t,"glMatrix",function(){return e});var o=r("./node_modules/gl-matrix/lib/gl-matrix/mat2.js");r.d(t,"mat2",function(){return o});var i=r("./node_modules/gl-matrix/lib/gl-matrix/mat2d.js");r.d(t,"mat2d",function(){return i});var u=r("./node_modules/gl-matrix/lib/gl-matrix/mat3.js");r.d(t,"mat3",function(){return u});var a=r("./node_modules/gl-matrix/lib/gl-matrix/mat4.js");r.d(t,"mat4",function(){return a});var c=r("./node_modules/gl-matrix/lib/gl-matrix/quat.js");r.d(t,"quat",function(){return c});var s=r("./node_modules/gl-matrix/lib/gl-matrix/quat2.js");r.d(t,"quat2",function(){return s});var f=r("./node_modules/gl-matrix/lib/gl-matrix/vec2.js");r.d(t,"vec2",function(){return f});var l=r("./node_modules/gl-matrix/lib/gl-matrix/vec3.js");r.d(t,"vec3",function(){return l});var h=r("./node_modules/gl-matrix/lib/gl-matrix/vec4.js");r.d(t,"vec4",function(){return h})},"./node_modules/gl-matrix/lib/gl-matrix/common.js":function(n,t,r){"use strict";r.r(t),r.d(t,"EPSILON",function(){return e}),r.d(t,"ARRAY_TYPE",function(){return o}),r.d(t,"RANDOM",function(){return i}),r.d(t,"setMatrixArrayType",function(){return u}),r.d(t,"toRadian",function(){return c}),r.d(t,"equals",function(){return s});var e=1e-6,o="undefined"!=typeof Float32Array?Float32Array:Array,i=Math.random;function u(n){o=n}var a=Math.PI/180;function c(n){return n*a}function s(n,t){return Math.abs(n-t)<=e*Math.max(1,Math.abs(n),Math.abs(t))}},"./node_modules/gl-matrix/lib/gl-matrix/mat2.js":function(n,t,r){"use strict";r.r(t),r.d(t,"create",function(){return o}),r.d(t,"clone",function(){return i}),r.d(t,"copy",function(){return u}),r.d(t,"identity",function(){return a}),r.d(t,"fromValues",function(){return c}),r.d(t,"set",function(){return s}),r.d(t,"transpose",function(){return f}),r.d(t,"invert",function(){return l}),r.d(t,"adjoint",function(){return h}),r.d(t,"determinant",function(){return d}),r.d(t,"multiply",function(){return p}),r.d(t,"rotate",function(){return g}),r.d(t,"scale",function(){return v}),r.d(t,"fromRotation",function(){return m}),r.d(t,"fromScaling",function(){return x}),r.d(t,"str",function(){return _}),r.d(t,"frob",function(){return b}),r.d(t,"LDU",function(){return y}),r.d(t,"add",function(){return M}),r.d(t,"subtract",function(){return w}),r.d(t,"exactEquals",function(){return A}),r.d(t,"equals",function(){return E}),r.d(t,"multiplyScalar",function(){return P}),r.d(t,"multiplyScalarAndAdd",function(){return I}),r.d(t,"mul",function(){return S}),r.d(t,"sub",function(){return T});var e=r("./node_modules/gl-matrix/lib/gl-matrix/common.js");function o(){var n=new e.ARRAY_TYPE(4);return e.ARRAY_TYPE!=Float32Array&&(n[1]=0,n[2]=0),n[0]=1,n[3]=1,n}function i(n){var t=new e.ARRAY_TYPE(4);return t[0]=n[0],t[1]=n[1],t[2]=n[2],t[3]=n[3],t}function u(n,t){return n[0]=t[0],n[1]=t[1],n[2]=t[2],n[3]=t[3],n}function a(n){return n[0]=1,n[1]=0,n[2]=0,n[3]=1,n}function c(n,t,r,o){var i=new e.ARRAY_TYPE(4);return i[0]=n,i[1]=t,i[2]=r,i[3]=o,i}function s(n,t,r,e,o){return n[0]=t,n[1]=r,n[2]=e,n[3]=o,n}function f(n,t){if(n===t){var r=t[1];n[1]=t[2],n[2]=r}else n[0]=t[0],n[1]=t[2],n[2]=t[1],n[3]=t[3];return n}function l(n,t){var r=t[0],e=t[1],o=t[2],i=t[3],u=r*i-o*e;return u?(u=1/u,n[0]=i*u,n[1]=-e*u,n[2]=-o*u,n[3]=r*u,n):null}function h(n,t){var r=t[0];return n[0]=t[3],n[1]=-t[1],n[2]=-t[2],n[3]=r,n}function d(n){return n[0]*n[3]-n[2]*n[1]}function p(n,t,r){var e=t[0],o=t[1],i=t[2],u=t[3],a=r[0],c=r[1],s=r[2],f=r[3];return n[0]=e*a+i*c,n[1]=o*a+u*c,n[2]=e*s+i*f,n[3]=o*s+u*f,n}function g(n,t,r){var e=t[0],o=t[1],i=t[2],u=t[3],a=Math.sin(r),c=Math.cos(r);return n[0]=e*c+i*a,n[1]=o*c+u*a,n[2]=e*-a+i*c,n[3]=o*-a+u*c,n}function v(n,t,r){var e=t[0],o=t[1],i=t[2],u=t[3],a=r[0],c=r[1];return n[0]=e*a,n[1]=o*a,n[2]=i*c,n[3]=u*c,n}function m(n,t){var r=Math.sin(t),e=Math.cos(t);return n[0]=e,n[1]=r,n[2]=-r,n[3]=e,n}function x(n,t){return n[0]=t[0],n[1]=0,n[2]=0,n[3]=t[1],n}function _(n){return"mat2("+n[0]+", "+n[1]+", "+n[2]+", "+n[3]+")"}function b(n){return Math.sqrt(Math.pow(n[0],2)+Math.pow(n[1],2)+Math.pow(n[2],2)+Math.pow(n[3],2))}function y(n,t,r,e){return n[2]=e[2]/e[0],r[0]=e[0],r[1]=e[1],r[3]=e[3]-n[2]*r[1],[n,t,r]}function M(n,t,r){return n[0]=t[0]+r[0],n[1]=t[1]+r[1],n[2]=t[2]+r[2],n[3]=t[3]+r[3],n}function w(n,t,r){return n[0]=t[0]-r[0],n[1]=t[1]-r[1],n[2]=t[2]-r[2],n[3]=t[3]-r[3],n}function A(n,t){return n[0]===t[0]&&n[1]===t[1]&&n[2]===t[2]&&n[3]===t[3]}function E(n,t){var r=n[0],o=n[1],i=n[2],u=n[3],a=t[0],c=t[1],s=t[2],f=t[3];return Math.abs(r-a)<=e.EPSILON*Math.max(1,Math.abs(r),Math.abs(a))&&Math.abs(o-c)<=e.EPSILON*Math.max(1,Math.abs(o),Math.abs(c))&&Math.abs(i-s)<=e.EPSILON*Math.max(1,Math.abs(i),Math.abs(s))&&Math.abs(u-f)<=e.EPSILON*Math.max(1,Math.abs(u),Math.abs(f))}function P(n,t,r){return n[0]=t[0]*r,n[1]=t[1]*r,n[2]=t[2]*r,n[3]=t[3]*r,n}function I(n,t,r,e){return n[0]=t[0]+r[0]*e,n[1]=t[1]+r[1]*e,n[2]=t[2]+r[2]*e,n[3]=t[3]+r[3]*e,n}var S=p,T=w},"./node_modules/gl-matrix/lib/gl-matrix/mat2d.js":function(n,t,r){"use strict";r.r(t),r.d(t,"create",function(){return o}),r.d(t,"clone",function(){return i}),r.d(t,"copy",function(){return u}),r.d(t,"identity",function(){return a}),r.d(t,"fromValues",function(){return c}),r.d(t,"set",function(){return s}),r.d(t,"invert",function(){return f}),r.d(t,"determinant",function(){return l}),r.d(t,"multiply",function(){return h}),r.d(t,"rotate",function(){return d}),r.d(t,"scale",function(){return p}),r.d(t,"translate",function(){return g}),r.d(t,"fromRotation",function(){return v}),r.d(t,"fromScaling",function(){return m}),r.d(t,"fromTranslation",function(){return x}),r.d(t,"str",function(){return _}),r.d(t,"frob",function(){return b}),r.d(t,"add",function(){return y}),r.d(t,"subtract",function(){return M}),r.d(t,"multiplyScalar",function(){return w}),r.d(t,"multiplyScalarAndAdd",function(){return A}),r.d(t,"exactEquals",function(){return E}),r.d(t,"equals",function(){return P}),r.d(t,"mul",function(){return I}),r.d(t,"sub",function(){return S});var e=r("./node_modules/gl-matrix/lib/gl-matrix/common.js");function o(){var n=new e.ARRAY_TYPE(6);return e.ARRAY_TYPE!=Float32Array&&(n[1]=0,n[2]=0,n[4]=0,n[5]=0),n[0]=1,n[3]=1,n}function i(n){var t=new e.ARRAY_TYPE(6);return t[0]=n[0],t[1]=n[1],t[2]=n[2],t[3]=n[3],t[4]=n[4],t[5]=n[5],t}function u(n,t){return n[0]=t[0],n[1]=t[1],n[2]=t[2],n[3]=t[3],n[4]=t[4],n[5]=t[5],n}function a(n){return n[0]=1,n[1]=0,n[2]=0,n[3]=1,n[4]=0,n[5]=0,n}function c(n,t,r,o,i,u){var a=new e.ARRAY_TYPE(6);return a[0]=n,a[1]=t,a[2]=r,a[3]=o,a[4]=i,a[5]=u,a}function s(n,t,r,e,o,i,u){return n[0]=t,n[1]=r,n[2]=e,n[3]=o,n[4]=i,n[5]=u,n}function f(n,t){var r=t[0],e=t[1],o=t[2],i=t[3],u=t[4],a=t[5],c=r*i-e*o;return c?(c=1/c,n[0]=i*c,n[1]=-e*c,n[2]=-o*c,n[3]=r*c,n[4]=(o*a-i*u)*c,n[5]=(e*u-r*a)*c,n):null}function l(n){return n[0]*n[3]-n[1]*n[2]}function h(n,t,r){var e=t[0],o=t[1],i=t[2],u=t[3],a=t[4],c=t[5],s=r[0],f=r[1],l=r[2],h=r[3],d=r[4],p=r[5];return n[0]=e*s+i*f,n[1]=o*s+u*f,n[2]=e*l+i*h,n[3]=o*l+u*h,n[4]=e*d+i*p+a,n[5]=o*d+u*p+c,n}function d(n,t,r){var e=t[0],o=t[1],i=t[2],u=t[3],a=t[4],c=t[5],s=Math.sin(r),f=Math.cos(r);return n[0]=e*f+i*s,n[1]=o*f+u*s,n[2]=e*-s+i*f,n[3]=o*-s+u*f,n[4]=a,n[5]=c,n}function p(n,t,r){var e=t[0],o=t[1],i=t[2],u=t[3],a=t[4],c=t[5],s=r[0],f=r[1];return n[0]=e*s,n[1]=o*s,n[2]=i*f,n[3]=u*f,n[4]=a,n[5]=c,n}function g(n,t,r){var e=t[0],o=t[1],i=t[2],u=t[3],a=t[4],c=t[5],s=r[0],f=r[1];return n[0]=e,n[1]=o,n[2]=i,n[3]=u,n[4]=e*s+i*f+a,n[5]=o*s+u*f+c,n}function v(n,t){var r=Math.sin(t),e=Math.cos(t);return n[0]=e,n[1]=r,n[2]=-r,n[3]=e,n[4]=0,n[5]=0,n}function m(n,t){return n[0]=t[0],n[1]=0,n[2]=0,n[3]=t[1],n[4]=0,n[5]=0,n}function x(n,t){return n[0]=1,n[1]=0,n[2]=0,n[3]=1,n[4]=t[0],n[5]=t[1],n}function _(n){return"mat2d("+n[0]+", "+n[1]+", "+n[2]+", "+n[3]+", "+n[4]+", "+n[5]+")"}function b(n){return Math.sqrt(Math.pow(n[0],2)+Math.pow(n[1],2)+Math.pow(n[2],2)+Math.pow(n[3],2)+Math.pow(n[4],2)+Math.pow(n[5],2)+1)}function y(n,t,r){return n[0]=t[0]+r[0],n[1]=t[1]+r[1],n[2]=t[2]+r[2],n[3]=t[3]+r[3],n[4]=t[4]+r[4],n[5]=t[5]+r[5],n}function M(n,t,r){return n[0]=t[0]-r[0],n[1]=t[1]-r[1],n[2]=t[2]-r[2],n[3]=t[3]-r[3],n[4]=t[4]-r[4],n[5]=t[5]-r[5],n}function w(n,t,r){return n[0]=t[0]*r,n[1]=t[1]*r,n[2]=t[2]*r,n[3]=t[3]*r,n[4]=t[4]*r,n[5]=t[5]*r,n}function A(n,t,r,e){return n[0]=t[0]+r[0]*e,n[1]=t[1]+r[1]*e,n[2]=t[2]+r[2]*e,n[3]=t[3]+r[3]*e,n[4]=t[4]+r[4]*e,n[5]=t[5]+r[5]*e,n}function E(n,t){return n[0]===t[0]&&n[1]===t[1]&&n[2]===t[2]&&n[3]===t[3]&&n[4]===t[4]&&n[5]===t[5]}function P(n,t){var r=n[0],o=n[1],i=n[2],u=n[3],a=n[4],c=n[5],s=t[0],f=t[1],l=t[2],h=t[3],d=t[4],p=t[5];return Math.abs(r-s)<=e.EPSILON*Math.max(1,Math.abs(r),Math.abs(s))&&Math.abs(o-f)<=e.EPSILON*Math.max(1,Math.abs(o),Math.abs(f))&&Math.abs(i-l)<=e.EPSILON*Math.max(1,Math.abs(i),Math.abs(l))&&Math.abs(u-h)<=e.EPSILON*Math.max(1,Math.abs(u),Math.abs(h))&&Math.abs(a-d)<=e.EPSILON*Math.max(1,Math.abs(a),Math.abs(d))&&Math.abs(c-p)<=e.EPSILON*Math.max(1,Math.abs(c),Math.abs(p))}var I=h,S=M},"./node_modules/gl-matrix/lib/gl-matrix/mat3.js":function(n,t,r){"use strict";r.r(t),r.d(t,"create",function(){return o}),r.d(t,"fromMat4",function(){return i}),r.d(t,"clone",function(){return u}),r.d(t,"copy",function(){return a}),r.d(t,"fromValues",function(){return c}),r.d(t,"set",function(){return s}),r.d(t,"identity",function(){return f}),r.d(t,"transpose",function(){return l}),r.d(t,"invert",function(){return h}),r.d(t,"adjoint",function(){return d}),r.d(t,"determinant",function(){return p}),r.d(t,"multiply",function(){return g}),r.d(t,"translate",function(){return v}),r.d(t,"rotate",function(){return m}),r.d(t,"scale",function(){return x}),r.d(t,"fromTranslation",function(){return _}),r.d(t,"fromRotation",function(){return b}),r.d(t,"fromScaling",function(){return y}),r.d(t,"fromMat2d",function(){return M}),r.d(t,"fromQuat",function(){return w}),r.d(t,"normalFromMat4",function(){return A}),r.d(t,"projection",function(){return E}),r.d(t,"str",function(){return P}),r.d(t,"frob",function(){return I}),r.d(t,"add",function(){return S}),r.d(t,"subtract",function(){return T}),r.d(t,"multiplyScalar",function(){return j}),r.d(t,"multiplyScalarAndAdd",function(){return L}),r.d(t,"exactEquals",function(){return O}),r.d(t,"equals",function(){return R}),r.d(t,"mul",function(){return z}),r.d(t,"sub",function(){return C});var e=r("./node_modules/gl-matrix/lib/gl-matrix/common.js");function o(){var n=new e.ARRAY_TYPE(9);return e.ARRAY_TYPE!=Float32Array&&(n[1]=0,n[2]=0,n[3]=0,n[5]=0,n[6]=0,n[7]=0),n[0]=1,n[4]=1,n[8]=1,n}function i(n,t){return n[0]=t[0],n[1]=t[1],n[2]=t[2],n[3]=t[4],n[4]=t[5],n[5]=t[6],n[6]=t[8],n[7]=t[9],n[8]=t[10],n}function u(n){var t=new e.ARRAY_TYPE(9);return t[0]=n[0],t[1]=n[1],t[2]=n[2],t[3]=n[3],t[4]=n[4],t[5]=n[5],t[6]=n[6],t[7]=n[7],t[8]=n[8],t}function a(n,t){return n[0]=t[0],n[1]=t[1],n[2]=t[2],n[3]=t[3],n[4]=t[4],n[5]=t[5],n[6]=t[6],n[7]=t[7],n[8]=t[8],n}function c(n,t,r,o,i,u,a,c,s){var f=new e.ARRAY_TYPE(9);return f[0]=n,f[1]=t,f[2]=r,f[3]=o,f[4]=i,f[5]=u,f[6]=a,f[7]=c,f[8]=s,f}function s(n,t,r,e,o,i,u,a,c,s){return n[0]=t,n[1]=r,n[2]=e,n[3]=o,n[4]=i,n[5]=u,n[6]=a,n[7]=c,n[8]=s,n}function f(n){return n[0]=1,n[1]=0,n[2]=0,n[3]=0,n[4]=1,n[5]=0,n[6]=0,n[7]=0,n[8]=1,n}function l(n,t){if(n===t){var r=t[1],e=t[2],o=t[5];n[1]=t[3],n[2]=t[6],n[3]=r,n[5]=t[7],n[6]=e,n[7]=o}else n[0]=t[0],n[1]=t[3],n[2]=t[6],n[3]=t[1],n[4]=t[4],n[5]=t[7],n[6]=t[2],n[7]=t[5],n[8]=t[8];return n}function h(n,t){var r=t[0],e=t[1],o=t[2],i=t[3],u=t[4],a=t[5],c=t[6],s=t[7],f=t[8],l=f*u-a*s,h=-f*i+a*c,d=s*i-u*c,p=r*l+e*h+o*d;return p?(p=1/p,n[0]=l*p,n[1]=(-f*e+o*s)*p,n[2]=(a*e-o*u)*p,n[3]=h*p,n[4]=(f*r-o*c)*p,n[5]=(-a*r+o*i)*p,n[6]=d*p,n[7]=(-s*r+e*c)*p,n[8]=(u*r-e*i)*p,n):null}function d(n,t){var r=t[0],e=t[1],o=t[2],i=t[3],u=t[4],a=t[5],c=t[6],s=t[7],f=t[8];return n[0]=u*f-a*s,n[1]=o*s-e*f,n[2]=e*a-o*u,n[3]=a*c-i*f,n[4]=r*f-o*c,n[5]=o*i-r*a,n[6]=i*s-u*c,n[7]=e*c-r*s,n[8]=r*u-e*i,n}function p(n){var t=n[0],r=n[1],e=n[2],o=n[3],i=n[4],u=n[5],a=n[6],c=n[7],s=n[8];return t*(s*i-u*c)+r*(-s*o+u*a)+e*(c*o-i*a)}function g(n,t,r){var e=t[0],o=t[1],i=t[2],u=t[3],a=t[4],c=t[5],s=t[6],f=t[7],l=t[8],h=r[0],d=r[1],p=r[2],g=r[3],v=r[4],m=r[5],x=r[6],_=r[7],b=r[8];return n[0]=h*e+d*u+p*s,n[1]=h*o+d*a+p*f,n[2]=h*i+d*c+p*l,n[3]=g*e+v*u+m*s,n[4]=g*o+v*a+m*f,n[5]=g*i+v*c+m*l,n[6]=x*e+_*u+b*s,n[7]=x*o+_*a+b*f,n[8]=x*i+_*c+b*l,n}function v(n,t,r){var e=t[0],o=t[1],i=t[2],u=t[3],a=t[4],c=t[5],s=t[6],f=t[7],l=t[8],h=r[0],d=r[1];return n[0]=e,n[1]=o,n[2]=i,n[3]=u,n[4]=a,n[5]=c,n[6]=h*e+d*u+s,n[7]=h*o+d*a+f,n[8]=h*i+d*c+l,n}function m(n,t,r){var e=t[0],o=t[1],i=t[2],u=t[3],a=t[4],c=t[5],s=t[6],f=t[7],l=t[8],h=Math.sin(r),d=Math.cos(r);return n[0]=d*e+h*u,n[1]=d*o+h*a,n[2]=d*i+h*c,n[3]=d*u-h*e,n[4]=d*a-h*o,n[5]=d*c-h*i,n[6]=s,n[7]=f,n[8]=l,n}function x(n,t,r){var e=r[0],o=r[1];return n[0]=e*t[0],n[1]=e*t[1],n[2]=e*t[2],n[3]=o*t[3],n[4]=o*t[4],n[5]=o*t[5],n[6]=t[6],n[7]=t[7],n[8]=t[8],n}function _(n,t){return n[0]=1,n[1]=0,n[2]=0,n[3]=0,n[4]=1,n[5]=0,n[6]=t[0],n[7]=t[1],n[8]=1,n}function b(n,t){var r=Math.sin(t),e=Math.cos(t);return n[0]=e,n[1]=r,n[2]=0,n[3]=-r,n[4]=e,n[5]=0,n[6]=0,n[7]=0,n[8]=1,n}function y(n,t){return n[0]=t[0],n[1]=0,n[2]=0,n[3]=0,n[4]=t[1],n[5]=0,n[6]=0,n[7]=0,n[8]=1,n}function M(n,t){return n[0]=t[0],n[1]=t[1],n[2]=0,n[3]=t[2],n[4]=t[3],n[5]=0,n[6]=t[4],n[7]=t[5],n[8]=1,n}function w(n,t){var r=t[0],e=t[1],o=t[2],i=t[3],u=r+r,a=e+e,c=o+o,s=r*u,f=e*u,l=e*a,h=o*u,d=o*a,p=o*c,g=i*u,v=i*a,m=i*c;return n[0]=1-l-p,n[3]=f-m,n[6]=h+v,n[1]=f+m,n[4]=1-s-p,n[7]=d-g,n[2]=h-v,n[5]=d+g,n[8]=1-s-l,n}function A(n,t){var r=t[0],e=t[1],o=t[2],i=t[3],u=t[4],a=t[5],c=t[6],s=t[7],f=t[8],l=t[9],h=t[10],d=t[11],p=t[12],g=t[13],v=t[14],m=t[15],x=r*a-e*u,_=r*c-o*u,b=r*s-i*u,y=e*c-o*a,M=e*s-i*a,w=o*s-i*c,A=f*g-l*p,E=f*v-h*p,P=f*m-d*p,I=l*v-h*g,S=l*m-d*g,T=h*m-d*v,j=x*T-_*S+b*I+y*P-M*E+w*A;return j?(j=1/j,n[0]=(a*T-c*S+s*I)*j,n[1]=(c*P-u*T-s*E)*j,n[2]=(u*S-a*P+s*A)*j,n[3]=(o*S-e*T-i*I)*j,n[4]=(r*T-o*P+i*E)*j,n[5]=(e*P-r*S-i*A)*j,n[6]=(g*w-v*M+m*y)*j,n[7]=(v*b-p*w-m*_)*j,n[8]=(p*M-g*b+m*x)*j,n):null}function E(n,t,r){return n[0]=2/t,n[1]=0,n[2]=0,n[3]=0,n[4]=-2/r,n[5]=0,n[6]=-1,n[7]=1,n[8]=1,n}function P(n){return"mat3("+n[0]+", "+n[1]+", "+n[2]+", "+n[3]+", "+n[4]+", "+n[5]+", "+n[6]+", "+n[7]+", "+n[8]+")"}function I(n){return Math.sqrt(Math.pow(n[0],2)+Math.pow(n[1],2)+Math.pow(n[2],2)+Math.pow(n[3],2)+Math.pow(n[4],2)+Math.pow(n[5],2)+Math.pow(n[6],2)+Math.pow(n[7],2)+Math.pow(n[8],2))}function S(n,t,r){return n[0]=t[0]+r[0],n[1]=t[1]+r[1],n[2]=t[2]+r[2],n[3]=t[3]+r[3],n[4]=t[4]+r[4],n[5]=t[5]+r[5],n[6]=t[6]+r[6],n[7]=t[7]+r[7],n[8]=t[8]+r[8],n}function T(n,t,r){return n[0]=t[0]-r[0],n[1]=t[1]-r[1],n[2]=t[2]-r[2],n[3]=t[3]-r[3],n[4]=t[4]-r[4],n[5]=t[5]-r[5],n[6]=t[6]-r[6],n[7]=t[7]-r[7],n[8]=t[8]-r[8],n}function j(n,t,r){return n[0]=t[0]*r,n[1]=t[1]*r,n[2]=t[2]*r,n[3]=t[3]*r,n[4]=t[4]*r,n[5]=t[5]*r,n[6]=t[6]*r,n[7]=t[7]*r,n[8]=t[8]*r,n}function L(n,t,r,e){return n[0]=t[0]+r[0]*e,n[1]=t[1]+r[1]*e,n[2]=t[2]+r[2]*e,n[3]=t[3]+r[3]*e,n[4]=t[4]+r[4]*e,n[5]=t[5]+r[5]*e,n[6]=t[6]+r[6]*e,n[7]=t[7]+r[7]*e,n[8]=t[8]+r[8]*e,n}function O(n,t){return n[0]===t[0]&&n[1]===t[1]&&n[2]===t[2]&&n[3]===t[3]&&n[4]===t[4]&&n[5]===t[5]&&n[6]===t[6]&&n[7]===t[7]&&n[8]===t[8]}function R(n,t){var r=n[0],o=n[1],i=n[2],u=n[3],a=n[4],c=n[5],s=n[6],f=n[7],l=n[8],h=t[0],d=t[1],p=t[2],g=t[3],v=t[4],m=t[5],x=t[6],_=t[7],b=t[8];return Math.abs(r-h)<=e.EPSILON*Math.max(1,Math.abs(r),Math.abs(h))&&Math.abs(o-d)<=e.EPSILON*Math.max(1,Math.abs(o),Math.abs(d))&&Math.abs(i-p)<=e.EPSILON*Math.max(1,Math.abs(i),Math.abs(p))&&Math.abs(u-g)<=e.EPSILON*Math.max(1,Math.abs(u),Math.abs(g))&&Math.abs(a-v)<=e.EPSILON*Math.max(1,Math.abs(a),Math.abs(v))&&Math.abs(c-m)<=e.EPSILON*Math.max(1,Math.abs(c),Math.abs(m))&&Math.abs(s-x)<=e.EPSILON*Math.max(1,Math.abs(s),Math.abs(x))&&Math.abs(f-_)<=e.EPSILON*Math.max(1,Math.abs(f),Math.abs(_))&&Math.abs(l-b)<=e.EPSILON*Math.max(1,Math.abs(l),Math.abs(b))}var z=g,C=T},"./node_modules/gl-matrix/lib/gl-matrix/mat4.js":function(n,t,r){"use strict";r.r(t),r.d(t,"create",function(){return o}),r.d(t,"clone",function(){return i}),r.d(t,"copy",function(){return u}),r.d(t,"fromValues",function(){return a}),r.d(t,"set",function(){return c}),r.d(t,"identity",function(){return s}),r.d(t,"transpose",function(){return f}),r.d(t,"invert",function(){return l}),r.d(t,"adjoint",function(){return h}),r.d(t,"determinant",function(){return d}),r.d(t,"multiply",function(){return p}),r.d(t,"translate",function(){return g}),r.d(t,"scale",function(){return v}),r.d(t,"rotate",function(){return m}),r.d(t,"rotateX",function(){return x}),r.d(t,"rotateY",function(){return _}),r.d(t,"rotateZ",function(){return b}),r.d(t,"fromTranslation",function(){return y}),r.d(t,"fromScaling",function(){return M}),r.d(t,"fromRotation",function(){return w}),r.d(t,"fromXRotation",function(){return A}),r.d(t,"fromYRotation",function(){return E}),r.d(t,"fromZRotation",function(){return P}),r.d(t,"fromRotationTranslation",function(){return I}),r.d(t,"fromQuat2",function(){return S}),r.d(t,"getTranslation",function(){return T}),r.d(t,"getScaling",function(){return j}),r.d(t,"getRotation",function(){return L}),r.d(t,"fromRotationTranslationScale",function(){return O}),r.d(t,"fromRotationTranslationScaleOrigin",function(){return R}),r.d(t,"fromQuat",function(){return z}),r.d(t,"frustum",function(){return C}),r.d(t,"perspective",function(){return V}),r.d(t,"perspectiveFromFieldOfView",function(){return B}),r.d(t,"ortho",function(){return N}),r.d(t,"lookAt",function(){return D}),r.d(t,"targetTo",function(){return k}),r.d(t,"str",function(){return Y}),r.d(t,"frob",function(){return q}),r.d(t,"add",function(){return U}),r.d(t,"subtract",function(){return F}),r.d(t,"multiplyScalar",function(){return X}),r.d(t,"multiplyScalarAndAdd",function(){return Z}),r.d(t,"exactEquals",function(){return G}),r.d(t,"equals",function(){return W}),r.d(t,"mul",function(){return H}),r.d(t,"sub",function(){return $});var e=r("./node_modules/gl-matrix/lib/gl-matrix/common.js");function o(){var n=new e.ARRAY_TYPE(16);return e.ARRAY_TYPE!=Float32Array&&(n[1]=0,n[2]=0,n[3]=0,n[4]=0,n[6]=0,n[7]=0,n[8]=0,n[9]=0,n[11]=0,n[12]=0,n[13]=0,n[14]=0),n[0]=1,n[5]=1,n[10]=1,n[15]=1,n}function i(n){var t=new e.ARRAY_TYPE(16);return t[0]=n[0],t[1]=n[1],t[2]=n[2],t[3]=n[3],t[4]=n[4],t[5]=n[5],t[6]=n[6],t[7]=n[7],t[8]=n[8],t[9]=n[9],t[10]=n[10],t[11]=n[11],t[12]=n[12],t[13]=n[13],t[14]=n[14],t[15]=n[15],t}function u(n,t){return n[0]=t[0],n[1]=t[1],n[2]=t[2],n[3]=t[3],n[4]=t[4],n[5]=t[5],n[6]=t[6],n[7]=t[7],n[8]=t[8],n[9]=t[9],n[10]=t[10],n[11]=t[11],n[12]=t[12],n[13]=t[13],n[14]=t[14],n[15]=t[15],n}function a(n,t,r,o,i,u,a,c,s,f,l,h,d,p,g,v){var m=new e.ARRAY_TYPE(16);return m[0]=n,m[1]=t,m[2]=r,m[3]=o,m[4]=i,m[5]=u,m[6]=a,m[7]=c,m[8]=s,m[9]=f,m[10]=l,m[11]=h,m[12]=d,m[13]=p,m[14]=g,m[15]=v,m}function c(n,t,r,e,o,i,u,a,c,s,f,l,h,d,p,g,v){return n[0]=t,n[1]=r,n[2]=e,n[3]=o,n[4]=i,n[5]=u,n[6]=a,n[7]=c,n[8]=s,n[9]=f,n[10]=l,n[11]=h,n[12]=d,n[13]=p,n[14]=g,n[15]=v,n}function s(n){return n[0]=1,n[1]=0,n[2]=0,n[3]=0,n[4]=0,n[5]=1,n[6]=0,n[7]=0,n[8]=0,n[9]=0,n[10]=1,n[11]=0,n[12]=0,n[13]=0,n[14]=0,n[15]=1,n}function f(n,t){if(n===t){var r=t[1],e=t[2],o=t[3],i=t[6],u=t[7],a=t[11];n[1]=t[4],n[2]=t[8],n[3]=t[12],n[4]=r,n[6]=t[9],n[7]=t[13],n[8]=e,n[9]=i,n[11]=t[14],n[12]=o,n[13]=u,n[14]=a}else n[0]=t[0],n[1]=t[4],n[2]=t[8],n[3]=t[12],n[4]=t[1],n[5]=t[5],n[6]=t[9],n[7]=t[13],n[8]=t[2],n[9]=t[6],n[10]=t[10],n[11]=t[14],n[12]=t[3],n[13]=t[7],n[14]=t[11],n[15]=t[15];return n}function l(n,t){var r=t[0],e=t[1],o=t[2],i=t[3],u=t[4],a=t[5],c=t[6],s=t[7],f=t[8],l=t[9],h=t[10],d=t[11],p=t[12],g=t[13],v=t[14],m=t[15],x=r*a-e*u,_=r*c-o*u,b=r*s-i*u,y=e*c-o*a,M=e*s-i*a,w=o*s-i*c,A=f*g-l*p,E=f*v-h*p,P=f*m-d*p,I=l*v-h*g,S=l*m-d*g,T=h*m-d*v,j=x*T-_*S+b*I+y*P-M*E+w*A;return j?(j=1/j,n[0]=(a*T-c*S+s*I)*j,n[1]=(o*S-e*T-i*I)*j,n[2]=(g*w-v*M+m*y)*j,n[3]=(h*M-l*w-d*y)*j,n[4]=(c*P-u*T-s*E)*j,n[5]=(r*T-o*P+i*E)*j,n[6]=(v*b-p*w-m*_)*j,n[7]=(f*w-h*b+d*_)*j,n[8]=(u*S-a*P+s*A)*j,n[9]=(e*P-r*S-i*A)*j,n[10]=(p*M-g*b+m*x)*j,n[11]=(l*b-f*M-d*x)*j,n[12]=(a*E-u*I-c*A)*j,n[13]=(r*I-e*E+o*A)*j,n[14]=(g*_-p*y-v*x)*j,n[15]=(f*y-l*_+h*x)*j,n):null}function h(n,t){var r=t[0],e=t[1],o=t[2],i=t[3],u=t[4],a=t[5],c=t[6],s=t[7],f=t[8],l=t[9],h=t[10],d=t[11],p=t[12],g=t[13],v=t[14],m=t[15];return n[0]=a*(h*m-d*v)-l*(c*m-s*v)+g*(c*d-s*h),n[1]=-(e*(h*m-d*v)-l*(o*m-i*v)+g*(o*d-i*h)),n[2]=e*(c*m-s*v)-a*(o*m-i*v)+g*(o*s-i*c),n[3]=-(e*(c*d-s*h)-a*(o*d-i*h)+l*(o*s-i*c)),n[4]=-(u*(h*m-d*v)-f*(c*m-s*v)+p*(c*d-s*h)),n[5]=r*(h*m-d*v)-f*(o*m-i*v)+p*(o*d-i*h),n[6]=-(r*(c*m-s*v)-u*(o*m-i*v)+p*(o*s-i*c)),n[7]=r*(c*d-s*h)-u*(o*d-i*h)+f*(o*s-i*c),n[8]=u*(l*m-d*g)-f*(a*m-s*g)+p*(a*d-s*l),n[9]=-(r*(l*m-d*g)-f*(e*m-i*g)+p*(e*d-i*l)),n[10]=r*(a*m-s*g)-u*(e*m-i*g)+p*(e*s-i*a),n[11]=-(r*(a*d-s*l)-u*(e*d-i*l)+f*(e*s-i*a)),n[12]=-(u*(l*v-h*g)-f*(a*v-c*g)+p*(a*h-c*l)),n[13]=r*(l*v-h*g)-f*(e*v-o*g)+p*(e*h-o*l),n[14]=-(r*(a*v-c*g)-u*(e*v-o*g)+p*(e*c-o*a)),n[15]=r*(a*h-c*l)-u*(e*h-o*l)+f*(e*c-o*a),n}function d(n){var t=n[0],r=n[1],e=n[2],o=n[3],i=n[4],u=n[5],a=n[6],c=n[7],s=n[8],f=n[9],l=n[10],h=n[11],d=n[12],p=n[13],g=n[14],v=n[15];return(t*u-r*i)*(l*v-h*g)-(t*a-e*i)*(f*v-h*p)+(t*c-o*i)*(f*g-l*p)+(r*a-e*u)*(s*v-h*d)-(r*c-o*u)*(s*g-l*d)+(e*c-o*a)*(s*p-f*d)}function p(n,t,r){var e=t[0],o=t[1],i=t[2],u=t[3],a=t[4],c=t[5],s=t[6],f=t[7],l=t[8],h=t[9],d=t[10],p=t[11],g=t[12],v=t[13],m=t[14],x=t[15],_=r[0],b=r[1],y=r[2],M=r[3];return n[0]=_*e+b*a+y*l+M*g,n[1]=_*o+b*c+y*h+M*v,n[2]=_*i+b*s+y*d+M*m,n[3]=_*u+b*f+y*p+M*x,_=r[4],b=r[5],y=r[6],M=r[7],n[4]=_*e+b*a+y*l+M*g,n[5]=_*o+b*c+y*h+M*v,n[6]=_*i+b*s+y*d+M*m,n[7]=_*u+b*f+y*p+M*x,_=r[8],b=r[9],y=r[10],M=r[11],n[8]=_*e+b*a+y*l+M*g,n[9]=_*o+b*c+y*h+M*v,n[10]=_*i+b*s+y*d+M*m,n[11]=_*u+b*f+y*p+M*x,_=r[12],b=r[13],y=r[14],M=r[15],n[12]=_*e+b*a+y*l+M*g,n[13]=_*o+b*c+y*h+M*v,n[14]=_*i+b*s+y*d+M*m,n[15]=_*u+b*f+y*p+M*x,n}function g(n,t,r){var e=r[0],o=r[1],i=r[2],u=void 0,a=void 0,c=void 0,s=void 0,f=void 0,l=void 0,h=void 0,d=void 0,p=void 0,g=void 0,v=void 0,m=void 0;return t===n?(n[12]=t[0]*e+t[4]*o+t[8]*i+t[12],n[13]=t[1]*e+t[5]*o+t[9]*i+t[13],n[14]=t[2]*e+t[6]*o+t[10]*i+t[14],n[15]=t[3]*e+t[7]*o+t[11]*i+t[15]):(u=t[0],a=t[1],c=t[2],s=t[3],f=t[4],l=t[5],h=t[6],d=t[7],p=t[8],g=t[9],v=t[10],m=t[11],n[0]=u,n[1]=a,n[2]=c,n[3]=s,n[4]=f,n[5]=l,n[6]=h,n[7]=d,n[8]=p,n[9]=g,n[10]=v,n[11]=m,n[12]=u*e+f*o+p*i+t[12],n[13]=a*e+l*o+g*i+t[13],n[14]=c*e+h*o+v*i+t[14],n[15]=s*e+d*o+m*i+t[15]),n}function v(n,t,r){var e=r[0],o=r[1],i=r[2];return n[0]=t[0]*e,n[1]=t[1]*e,n[2]=t[2]*e,n[3]=t[3]*e,n[4]=t[4]*o,n[5]=t[5]*o,n[6]=t[6]*o,n[7]=t[7]*o,n[8]=t[8]*i,n[9]=t[9]*i,n[10]=t[10]*i,n[11]=t[11]*i,n[12]=t[12],n[13]=t[13],n[14]=t[14],n[15]=t[15],n}function m(n,t,r,o){var i,u,a,c,s,f,l,h,d,p,g,v,m,x,_,b,y,M,w,A,E,P,I,S,T=o[0],j=o[1],L=o[2],O=Math.sqrt(T*T+j*j+L*L);return O0?(r[0]=2*(c*a+l*o+s*u-f*i)/h,r[1]=2*(s*a+l*i+f*o-c*u)/h,r[2]=2*(f*a+l*u+c*i-s*o)/h):(r[0]=2*(c*a+l*o+s*u-f*i),r[1]=2*(s*a+l*i+f*o-c*u),r[2]=2*(f*a+l*u+c*i-s*o)),I(n,t,r),n}function T(n,t){return n[0]=t[12],n[1]=t[13],n[2]=t[14],n}function j(n,t){var r=t[0],e=t[1],o=t[2],i=t[4],u=t[5],a=t[6],c=t[8],s=t[9],f=t[10];return n[0]=Math.sqrt(r*r+e*e+o*o),n[1]=Math.sqrt(i*i+u*u+a*a),n[2]=Math.sqrt(c*c+s*s+f*f),n}function L(n,t){var r=t[0]+t[5]+t[10],e=0;return r>0?(e=2*Math.sqrt(r+1),n[3]=.25*e,n[0]=(t[6]-t[9])/e,n[1]=(t[8]-t[2])/e,n[2]=(t[1]-t[4])/e):t[0]>t[5]&&t[0]>t[10]?(e=2*Math.sqrt(1+t[0]-t[5]-t[10]),n[3]=(t[6]-t[9])/e,n[0]=.25*e,n[1]=(t[1]+t[4])/e,n[2]=(t[8]+t[2])/e):t[5]>t[10]?(e=2*Math.sqrt(1+t[5]-t[0]-t[10]),n[3]=(t[8]-t[2])/e,n[0]=(t[1]+t[4])/e,n[1]=.25*e,n[2]=(t[6]+t[9])/e):(e=2*Math.sqrt(1+t[10]-t[0]-t[5]),n[3]=(t[1]-t[4])/e,n[0]=(t[8]+t[2])/e,n[1]=(t[6]+t[9])/e,n[2]=.25*e),n}function O(n,t,r,e){var o=t[0],i=t[1],u=t[2],a=t[3],c=o+o,s=i+i,f=u+u,l=o*c,h=o*s,d=o*f,p=i*s,g=i*f,v=u*f,m=a*c,x=a*s,_=a*f,b=e[0],y=e[1],M=e[2];return n[0]=(1-(p+v))*b,n[1]=(h+_)*b,n[2]=(d-x)*b,n[3]=0,n[4]=(h-_)*y,n[5]=(1-(l+v))*y,n[6]=(g+m)*y,n[7]=0,n[8]=(d+x)*M,n[9]=(g-m)*M,n[10]=(1-(l+p))*M,n[11]=0,n[12]=r[0],n[13]=r[1],n[14]=r[2],n[15]=1,n}function R(n,t,r,e,o){var i=t[0],u=t[1],a=t[2],c=t[3],s=i+i,f=u+u,l=a+a,h=i*s,d=i*f,p=i*l,g=u*f,v=u*l,m=a*l,x=c*s,_=c*f,b=c*l,y=e[0],M=e[1],w=e[2],A=o[0],E=o[1],P=o[2],I=(1-(g+m))*y,S=(d+b)*y,T=(p-_)*y,j=(d-b)*M,L=(1-(h+m))*M,O=(v+x)*M,R=(p+_)*w,z=(v-x)*w,C=(1-(h+g))*w;return n[0]=I,n[1]=S,n[2]=T,n[3]=0,n[4]=j,n[5]=L,n[6]=O,n[7]=0,n[8]=R,n[9]=z,n[10]=C,n[11]=0,n[12]=r[0]+A-(I*A+j*E+R*P),n[13]=r[1]+E-(S*A+L*E+z*P),n[14]=r[2]+P-(T*A+O*E+C*P),n[15]=1,n}function z(n,t){var r=t[0],e=t[1],o=t[2],i=t[3],u=r+r,a=e+e,c=o+o,s=r*u,f=e*u,l=e*a,h=o*u,d=o*a,p=o*c,g=i*u,v=i*a,m=i*c;return n[0]=1-l-p,n[1]=f+m,n[2]=h-v,n[3]=0,n[4]=f-m,n[5]=1-s-p,n[6]=d+g,n[7]=0,n[8]=h+v,n[9]=d-g,n[10]=1-s-l,n[11]=0,n[12]=0,n[13]=0,n[14]=0,n[15]=1,n}function C(n,t,r,e,o,i,u){var a=1/(r-t),c=1/(o-e),s=1/(i-u);return n[0]=2*i*a,n[1]=0,n[2]=0,n[3]=0,n[4]=0,n[5]=2*i*c,n[6]=0,n[7]=0,n[8]=(r+t)*a,n[9]=(o+e)*c,n[10]=(u+i)*s,n[11]=-1,n[12]=0,n[13]=0,n[14]=u*i*2*s,n[15]=0,n}function V(n,t,r,e,o){var i=1/Math.tan(t/2),u=void 0;return n[0]=i/r,n[1]=0,n[2]=0,n[3]=0,n[4]=0,n[5]=i,n[6]=0,n[7]=0,n[8]=0,n[9]=0,n[11]=-1,n[12]=0,n[13]=0,n[15]=0,null!=o&&o!==1/0?(u=1/(e-o),n[10]=(o+e)*u,n[14]=2*o*e*u):(n[10]=-1,n[14]=-2*e),n}function B(n,t,r,e){var o=Math.tan(t.upDegrees*Math.PI/180),i=Math.tan(t.downDegrees*Math.PI/180),u=Math.tan(t.leftDegrees*Math.PI/180),a=Math.tan(t.rightDegrees*Math.PI/180),c=2/(u+a),s=2/(o+i);return n[0]=c,n[1]=0,n[2]=0,n[3]=0,n[4]=0,n[5]=s,n[6]=0,n[7]=0,n[8]=-(u-a)*c*.5,n[9]=(o-i)*s*.5,n[10]=e/(r-e),n[11]=-1,n[12]=0,n[13]=0,n[14]=e*r/(r-e),n[15]=0,n}function N(n,t,r,e,o,i,u){var a=1/(t-r),c=1/(e-o),s=1/(i-u);return n[0]=-2*a,n[1]=0,n[2]=0,n[3]=0,n[4]=0,n[5]=-2*c,n[6]=0,n[7]=0,n[8]=0,n[9]=0,n[10]=2*s,n[11]=0,n[12]=(t+r)*a,n[13]=(o+e)*c,n[14]=(u+i)*s,n[15]=1,n}function D(n,t,r,o){var i=void 0,u=void 0,a=void 0,c=void 0,f=void 0,l=void 0,h=void 0,d=void 0,p=void 0,g=void 0,v=t[0],m=t[1],x=t[2],_=o[0],b=o[1],y=o[2],M=r[0],w=r[1],A=r[2];return Math.abs(v-M)0&&(f*=d=1/Math.sqrt(d),l*=d,h*=d);var p=c*h-s*l,g=s*f-a*h,v=a*l-c*f;return(d=p*p+g*g+v*v)>0&&(p*=d=1/Math.sqrt(d),g*=d,v*=d),n[0]=p,n[1]=g,n[2]=v,n[3]=0,n[4]=l*v-h*g,n[5]=h*p-f*v,n[6]=f*g-l*p,n[7]=0,n[8]=f,n[9]=l,n[10]=h,n[11]=0,n[12]=o,n[13]=i,n[14]=u,n[15]=1,n}function Y(n){return"mat4("+n[0]+", "+n[1]+", "+n[2]+", "+n[3]+", "+n[4]+", "+n[5]+", "+n[6]+", "+n[7]+", "+n[8]+", "+n[9]+", "+n[10]+", "+n[11]+", "+n[12]+", "+n[13]+", "+n[14]+", "+n[15]+")"}function q(n){return Math.sqrt(Math.pow(n[0],2)+Math.pow(n[1],2)+Math.pow(n[2],2)+Math.pow(n[3],2)+Math.pow(n[4],2)+Math.pow(n[5],2)+Math.pow(n[6],2)+Math.pow(n[7],2)+Math.pow(n[8],2)+Math.pow(n[9],2)+Math.pow(n[10],2)+Math.pow(n[11],2)+Math.pow(n[12],2)+Math.pow(n[13],2)+Math.pow(n[14],2)+Math.pow(n[15],2))}function U(n,t,r){return n[0]=t[0]+r[0],n[1]=t[1]+r[1],n[2]=t[2]+r[2],n[3]=t[3]+r[3],n[4]=t[4]+r[4],n[5]=t[5]+r[5],n[6]=t[6]+r[6],n[7]=t[7]+r[7],n[8]=t[8]+r[8],n[9]=t[9]+r[9],n[10]=t[10]+r[10],n[11]=t[11]+r[11],n[12]=t[12]+r[12],n[13]=t[13]+r[13],n[14]=t[14]+r[14],n[15]=t[15]+r[15],n}function F(n,t,r){return n[0]=t[0]-r[0],n[1]=t[1]-r[1],n[2]=t[2]-r[2],n[3]=t[3]-r[3],n[4]=t[4]-r[4],n[5]=t[5]-r[5],n[6]=t[6]-r[6],n[7]=t[7]-r[7],n[8]=t[8]-r[8],n[9]=t[9]-r[9],n[10]=t[10]-r[10],n[11]=t[11]-r[11],n[12]=t[12]-r[12],n[13]=t[13]-r[13],n[14]=t[14]-r[14],n[15]=t[15]-r[15],n}function X(n,t,r){return n[0]=t[0]*r,n[1]=t[1]*r,n[2]=t[2]*r,n[3]=t[3]*r,n[4]=t[4]*r,n[5]=t[5]*r,n[6]=t[6]*r,n[7]=t[7]*r,n[8]=t[8]*r,n[9]=t[9]*r,n[10]=t[10]*r,n[11]=t[11]*r,n[12]=t[12]*r,n[13]=t[13]*r,n[14]=t[14]*r,n[15]=t[15]*r,n}function Z(n,t,r,e){return n[0]=t[0]+r[0]*e,n[1]=t[1]+r[1]*e,n[2]=t[2]+r[2]*e,n[3]=t[3]+r[3]*e,n[4]=t[4]+r[4]*e,n[5]=t[5]+r[5]*e,n[6]=t[6]+r[6]*e,n[7]=t[7]+r[7]*e,n[8]=t[8]+r[8]*e,n[9]=t[9]+r[9]*e,n[10]=t[10]+r[10]*e,n[11]=t[11]+r[11]*e,n[12]=t[12]+r[12]*e,n[13]=t[13]+r[13]*e,n[14]=t[14]+r[14]*e,n[15]=t[15]+r[15]*e,n}function G(n,t){return n[0]===t[0]&&n[1]===t[1]&&n[2]===t[2]&&n[3]===t[3]&&n[4]===t[4]&&n[5]===t[5]&&n[6]===t[6]&&n[7]===t[7]&&n[8]===t[8]&&n[9]===t[9]&&n[10]===t[10]&&n[11]===t[11]&&n[12]===t[12]&&n[13]===t[13]&&n[14]===t[14]&&n[15]===t[15]}function W(n,t){var r=n[0],o=n[1],i=n[2],u=n[3],a=n[4],c=n[5],s=n[6],f=n[7],l=n[8],h=n[9],d=n[10],p=n[11],g=n[12],v=n[13],m=n[14],x=n[15],_=t[0],b=t[1],y=t[2],M=t[3],w=t[4],A=t[5],E=t[6],P=t[7],I=t[8],S=t[9],T=t[10],j=t[11],L=t[12],O=t[13],R=t[14],z=t[15];return Math.abs(r-_)<=e.EPSILON*Math.max(1,Math.abs(r),Math.abs(_))&&Math.abs(o-b)<=e.EPSILON*Math.max(1,Math.abs(o),Math.abs(b))&&Math.abs(i-y)<=e.EPSILON*Math.max(1,Math.abs(i),Math.abs(y))&&Math.abs(u-M)<=e.EPSILON*Math.max(1,Math.abs(u),Math.abs(M))&&Math.abs(a-w)<=e.EPSILON*Math.max(1,Math.abs(a),Math.abs(w))&&Math.abs(c-A)<=e.EPSILON*Math.max(1,Math.abs(c),Math.abs(A))&&Math.abs(s-E)<=e.EPSILON*Math.max(1,Math.abs(s),Math.abs(E))&&Math.abs(f-P)<=e.EPSILON*Math.max(1,Math.abs(f),Math.abs(P))&&Math.abs(l-I)<=e.EPSILON*Math.max(1,Math.abs(l),Math.abs(I))&&Math.abs(h-S)<=e.EPSILON*Math.max(1,Math.abs(h),Math.abs(S))&&Math.abs(d-T)<=e.EPSILON*Math.max(1,Math.abs(d),Math.abs(T))&&Math.abs(p-j)<=e.EPSILON*Math.max(1,Math.abs(p),Math.abs(j))&&Math.abs(g-L)<=e.EPSILON*Math.max(1,Math.abs(g),Math.abs(L))&&Math.abs(v-O)<=e.EPSILON*Math.max(1,Math.abs(v),Math.abs(O))&&Math.abs(m-R)<=e.EPSILON*Math.max(1,Math.abs(m),Math.abs(R))&&Math.abs(x-z)<=e.EPSILON*Math.max(1,Math.abs(x),Math.abs(z))}var H=p,$=F},"./node_modules/gl-matrix/lib/gl-matrix/quat.js":function(n,t,r){"use strict";r.r(t),r.d(t,"create",function(){return a}),r.d(t,"identity",function(){return c}),r.d(t,"setAxisAngle",function(){return s}),r.d(t,"getAxisAngle",function(){return f}),r.d(t,"multiply",function(){return l}),r.d(t,"rotateX",function(){return h}),r.d(t,"rotateY",function(){return d}),r.d(t,"rotateZ",function(){return p}),r.d(t,"calculateW",function(){return g}),r.d(t,"slerp",function(){return v}),r.d(t,"random",function(){return m}),r.d(t,"invert",function(){return x}),r.d(t,"conjugate",function(){return _}),r.d(t,"fromMat3",function(){return b}),r.d(t,"fromEuler",function(){return y}),r.d(t,"str",function(){return M}),r.d(t,"clone",function(){return T}),r.d(t,"fromValues",function(){return j}),r.d(t,"copy",function(){return L}),r.d(t,"set",function(){return O}),r.d(t,"add",function(){return R}),r.d(t,"mul",function(){return z}),r.d(t,"scale",function(){return C}),r.d(t,"dot",function(){return V}),r.d(t,"lerp",function(){return B}),r.d(t,"length",function(){return N}),r.d(t,"len",function(){return D}),r.d(t,"squaredLength",function(){return k}),r.d(t,"sqrLen",function(){return Y}),r.d(t,"normalize",function(){return q}),r.d(t,"exactEquals",function(){return U}),r.d(t,"equals",function(){return F}),r.d(t,"rotationTo",function(){return X}),r.d(t,"sqlerp",function(){return Z}),r.d(t,"setAxes",function(){return G});var e=r("./node_modules/gl-matrix/lib/gl-matrix/common.js"),o=r("./node_modules/gl-matrix/lib/gl-matrix/mat3.js"),i=r("./node_modules/gl-matrix/lib/gl-matrix/vec3.js"),u=r("./node_modules/gl-matrix/lib/gl-matrix/vec4.js");function a(){var n=new e.ARRAY_TYPE(4);return e.ARRAY_TYPE!=Float32Array&&(n[0]=0,n[1]=0,n[2]=0),n[3]=1,n}function c(n){return n[0]=0,n[1]=0,n[2]=0,n[3]=1,n}function s(n,t,r){r*=.5;var e=Math.sin(r);return n[0]=e*t[0],n[1]=e*t[1],n[2]=e*t[2],n[3]=Math.cos(r),n}function f(n,t){var r=2*Math.acos(t[3]),o=Math.sin(r/2);return o>e.EPSILON?(n[0]=t[0]/o,n[1]=t[1]/o,n[2]=t[2]/o):(n[0]=1,n[1]=0,n[2]=0),r}function l(n,t,r){var e=t[0],o=t[1],i=t[2],u=t[3],a=r[0],c=r[1],s=r[2],f=r[3];return n[0]=e*f+u*a+o*s-i*c,n[1]=o*f+u*c+i*a-e*s,n[2]=i*f+u*s+e*c-o*a,n[3]=u*f-e*a-o*c-i*s,n}function h(n,t,r){r*=.5;var e=t[0],o=t[1],i=t[2],u=t[3],a=Math.sin(r),c=Math.cos(r);return n[0]=e*c+u*a,n[1]=o*c+i*a,n[2]=i*c-o*a,n[3]=u*c-e*a,n}function d(n,t,r){r*=.5;var e=t[0],o=t[1],i=t[2],u=t[3],a=Math.sin(r),c=Math.cos(r);return n[0]=e*c-i*a,n[1]=o*c+u*a,n[2]=i*c+e*a,n[3]=u*c-o*a,n}function p(n,t,r){r*=.5;var e=t[0],o=t[1],i=t[2],u=t[3],a=Math.sin(r),c=Math.cos(r);return n[0]=e*c+o*a,n[1]=o*c-e*a,n[2]=i*c+u*a,n[3]=u*c-i*a,n}function g(n,t){var r=t[0],e=t[1],o=t[2];return n[0]=r,n[1]=e,n[2]=o,n[3]=Math.sqrt(Math.abs(1-r*r-e*e-o*o)),n}function v(n,t,r,o){var i=t[0],u=t[1],a=t[2],c=t[3],s=r[0],f=r[1],l=r[2],h=r[3],d=void 0,p=void 0,g=void 0,v=void 0,m=void 0;return(p=i*s+u*f+a*l+c*h)<0&&(p=-p,s=-s,f=-f,l=-l,h=-h),1-p>e.EPSILON?(d=Math.acos(p),g=Math.sin(d),v=Math.sin((1-o)*d)/g,m=Math.sin(o*d)/g):(v=1-o,m=o),n[0]=v*i+m*s,n[1]=v*u+m*f,n[2]=v*a+m*l,n[3]=v*c+m*h,n}function m(n){var t=e.RANDOM(),r=e.RANDOM(),o=e.RANDOM(),i=Math.sqrt(1-t),u=Math.sqrt(t);return n[0]=i*Math.sin(2*Math.PI*r),n[1]=i*Math.cos(2*Math.PI*r),n[2]=u*Math.sin(2*Math.PI*o),n[3]=u*Math.cos(2*Math.PI*o),n}function x(n,t){var r=t[0],e=t[1],o=t[2],i=t[3],u=r*r+e*e+o*o+i*i,a=u?1/u:0;return n[0]=-r*a,n[1]=-e*a,n[2]=-o*a,n[3]=i*a,n}function _(n,t){return n[0]=-t[0],n[1]=-t[1],n[2]=-t[2],n[3]=t[3],n}function b(n,t){var r=t[0]+t[4]+t[8],e=void 0;if(r>0)e=Math.sqrt(r+1),n[3]=.5*e,e=.5/e,n[0]=(t[5]-t[7])*e,n[1]=(t[6]-t[2])*e,n[2]=(t[1]-t[3])*e;else{var o=0;t[4]>t[0]&&(o=1),t[8]>t[3*o+o]&&(o=2);var i=(o+1)%3,u=(o+2)%3;e=Math.sqrt(t[3*o+o]-t[3*i+i]-t[3*u+u]+1),n[o]=.5*e,e=.5/e,n[3]=(t[3*i+u]-t[3*u+i])*e,n[i]=(t[3*i+o]+t[3*o+i])*e,n[u]=(t[3*u+o]+t[3*o+u])*e}return n}function y(n,t,r,e){var o=.5*Math.PI/180;t*=o,r*=o,e*=o;var i=Math.sin(t),u=Math.cos(t),a=Math.sin(r),c=Math.cos(r),s=Math.sin(e),f=Math.cos(e);return n[0]=i*c*f-u*a*s,n[1]=u*a*f+i*c*s,n[2]=u*c*s-i*a*f,n[3]=u*c*f+i*a*s,n}function M(n){return"quat("+n[0]+", "+n[1]+", "+n[2]+", "+n[3]+")"}var w,A,E,P,I,S,T=u.clone,j=u.fromValues,L=u.copy,O=u.set,R=u.add,z=l,C=u.scale,V=u.dot,B=u.lerp,N=u.length,D=N,k=u.squaredLength,Y=k,q=u.normalize,U=u.exactEquals,F=u.equals,X=(w=i.create(),A=i.fromValues(1,0,0),E=i.fromValues(0,1,0),function(n,t,r){var e=i.dot(t,r);return e<-.999999?(i.cross(w,A,t),i.len(w)<1e-6&&i.cross(w,E,t),i.normalize(w,w),s(n,w,Math.PI),n):e>.999999?(n[0]=0,n[1]=0,n[2]=0,n[3]=1,n):(i.cross(w,t,r),n[0]=w[0],n[1]=w[1],n[2]=w[2],n[3]=1+e,q(n,n))}),Z=(P=a(),I=a(),function(n,t,r,e,o,i){return v(P,t,o,i),v(I,r,e,i),v(n,P,I,2*i*(1-i)),n}),G=(S=o.create(),function(n,t,r,e){return S[0]=r[0],S[3]=r[1],S[6]=r[2],S[1]=e[0],S[4]=e[1],S[7]=e[2],S[2]=-t[0],S[5]=-t[1],S[8]=-t[2],q(n,b(n,S))})},"./node_modules/gl-matrix/lib/gl-matrix/quat2.js":function(n,t,r){"use strict";r.r(t),r.d(t,"create",function(){return u}),r.d(t,"clone",function(){return a}),r.d(t,"fromValues",function(){return c}),r.d(t,"fromRotationTranslationValues",function(){return s}),r.d(t,"fromRotationTranslation",function(){return f}),r.d(t,"fromTranslation",function(){return l}),r.d(t,"fromRotation",function(){return h}),r.d(t,"fromMat4",function(){return d}),r.d(t,"copy",function(){return p}),r.d(t,"identity",function(){return g}),r.d(t,"set",function(){return v}),r.d(t,"getReal",function(){return m}),r.d(t,"getDual",function(){return x}),r.d(t,"setReal",function(){return _}),r.d(t,"setDual",function(){return b}),r.d(t,"getTranslation",function(){return y}),r.d(t,"translate",function(){return M}),r.d(t,"rotateX",function(){return w}),r.d(t,"rotateY",function(){return A}),r.d(t,"rotateZ",function(){return E}),r.d(t,"rotateByQuatAppend",function(){return P}),r.d(t,"rotateByQuatPrepend",function(){return I}),r.d(t,"rotateAroundAxis",function(){return S}),r.d(t,"add",function(){return T}),r.d(t,"multiply",function(){return j}),r.d(t,"mul",function(){return L}),r.d(t,"scale",function(){return O}),r.d(t,"dot",function(){return R}),r.d(t,"lerp",function(){return z}),r.d(t,"invert",function(){return C}),r.d(t,"conjugate",function(){return V}),r.d(t,"length",function(){return B}),r.d(t,"len",function(){return N}),r.d(t,"squaredLength",function(){return D}),r.d(t,"sqrLen",function(){return k}),r.d(t,"normalize",function(){return Y}),r.d(t,"str",function(){return q}),r.d(t,"exactEquals",function(){return U}),r.d(t,"equals",function(){return F});var e=r("./node_modules/gl-matrix/lib/gl-matrix/common.js"),o=r("./node_modules/gl-matrix/lib/gl-matrix/quat.js"),i=r("./node_modules/gl-matrix/lib/gl-matrix/mat4.js");function u(){var n=new e.ARRAY_TYPE(8);return e.ARRAY_TYPE!=Float32Array&&(n[0]=0,n[1]=0,n[2]=0,n[4]=0,n[5]=0,n[6]=0,n[7]=0),n[3]=1,n}function a(n){var t=new e.ARRAY_TYPE(8);return t[0]=n[0],t[1]=n[1],t[2]=n[2],t[3]=n[3],t[4]=n[4],t[5]=n[5],t[6]=n[6],t[7]=n[7],t}function c(n,t,r,o,i,u,a,c){var s=new e.ARRAY_TYPE(8);return s[0]=n,s[1]=t,s[2]=r,s[3]=o,s[4]=i,s[5]=u,s[6]=a,s[7]=c,s}function s(n,t,r,o,i,u,a){var c=new e.ARRAY_TYPE(8);c[0]=n,c[1]=t,c[2]=r,c[3]=o;var s=.5*i,f=.5*u,l=.5*a;return c[4]=s*o+f*r-l*t,c[5]=f*o+l*n-s*r,c[6]=l*o+s*t-f*n,c[7]=-s*n-f*t-l*r,c}function f(n,t,r){var e=.5*r[0],o=.5*r[1],i=.5*r[2],u=t[0],a=t[1],c=t[2],s=t[3];return n[0]=u,n[1]=a,n[2]=c,n[3]=s,n[4]=e*s+o*c-i*a,n[5]=o*s+i*u-e*c,n[6]=i*s+e*a-o*u,n[7]=-e*u-o*a-i*c,n}function l(n,t){return n[0]=0,n[1]=0,n[2]=0,n[3]=1,n[4]=.5*t[0],n[5]=.5*t[1],n[6]=.5*t[2],n[7]=0,n}function h(n,t){return n[0]=t[0],n[1]=t[1],n[2]=t[2],n[3]=t[3],n[4]=0,n[5]=0,n[6]=0,n[7]=0,n}function d(n,t){var r=o.create();i.getRotation(r,t);var u=new e.ARRAY_TYPE(3);return i.getTranslation(u,t),f(n,r,u),n}function p(n,t){return n[0]=t[0],n[1]=t[1],n[2]=t[2],n[3]=t[3],n[4]=t[4],n[5]=t[5],n[6]=t[6],n[7]=t[7],n}function g(n){return n[0]=0,n[1]=0,n[2]=0,n[3]=1,n[4]=0,n[5]=0,n[6]=0,n[7]=0,n}function v(n,t,r,e,o,i,u,a,c){return n[0]=t,n[1]=r,n[2]=e,n[3]=o,n[4]=i,n[5]=u,n[6]=a,n[7]=c,n}var m=o.copy;function x(n,t){return n[0]=t[4],n[1]=t[5],n[2]=t[6],n[3]=t[7],n}var _=o.copy;function b(n,t){return n[4]=t[0],n[5]=t[1],n[6]=t[2],n[7]=t[3],n}function y(n,t){var r=t[4],e=t[5],o=t[6],i=t[7],u=-t[0],a=-t[1],c=-t[2],s=t[3];return n[0]=2*(r*s+i*u+e*c-o*a),n[1]=2*(e*s+i*a+o*u-r*c),n[2]=2*(o*s+i*c+r*a-e*u),n}function M(n,t,r){var e=t[0],o=t[1],i=t[2],u=t[3],a=.5*r[0],c=.5*r[1],s=.5*r[2],f=t[4],l=t[5],h=t[6],d=t[7];return n[0]=e,n[1]=o,n[2]=i,n[3]=u,n[4]=u*a+o*s-i*c+f,n[5]=u*c+i*a-e*s+l,n[6]=u*s+e*c-o*a+h,n[7]=-e*a-o*c-i*s+d,n}function w(n,t,r){var e=-t[0],i=-t[1],u=-t[2],a=t[3],c=t[4],s=t[5],f=t[6],l=t[7],h=c*a+l*e+s*u-f*i,d=s*a+l*i+f*e-c*u,p=f*a+l*u+c*i-s*e,g=l*a-c*e-s*i-f*u;return o.rotateX(n,t,r),e=n[0],i=n[1],u=n[2],a=n[3],n[4]=h*a+g*e+d*u-p*i,n[5]=d*a+g*i+p*e-h*u,n[6]=p*a+g*u+h*i-d*e,n[7]=g*a-h*e-d*i-p*u,n}function A(n,t,r){var e=-t[0],i=-t[1],u=-t[2],a=t[3],c=t[4],s=t[5],f=t[6],l=t[7],h=c*a+l*e+s*u-f*i,d=s*a+l*i+f*e-c*u,p=f*a+l*u+c*i-s*e,g=l*a-c*e-s*i-f*u;return o.rotateY(n,t,r),e=n[0],i=n[1],u=n[2],a=n[3],n[4]=h*a+g*e+d*u-p*i,n[5]=d*a+g*i+p*e-h*u,n[6]=p*a+g*u+h*i-d*e,n[7]=g*a-h*e-d*i-p*u,n}function E(n,t,r){var e=-t[0],i=-t[1],u=-t[2],a=t[3],c=t[4],s=t[5],f=t[6],l=t[7],h=c*a+l*e+s*u-f*i,d=s*a+l*i+f*e-c*u,p=f*a+l*u+c*i-s*e,g=l*a-c*e-s*i-f*u;return o.rotateZ(n,t,r),e=n[0],i=n[1],u=n[2],a=n[3],n[4]=h*a+g*e+d*u-p*i,n[5]=d*a+g*i+p*e-h*u,n[6]=p*a+g*u+h*i-d*e,n[7]=g*a-h*e-d*i-p*u,n}function P(n,t,r){var e=r[0],o=r[1],i=r[2],u=r[3],a=t[0],c=t[1],s=t[2],f=t[3];return n[0]=a*u+f*e+c*i-s*o,n[1]=c*u+f*o+s*e-a*i,n[2]=s*u+f*i+a*o-c*e,n[3]=f*u-a*e-c*o-s*i,a=t[4],c=t[5],s=t[6],f=t[7],n[4]=a*u+f*e+c*i-s*o,n[5]=c*u+f*o+s*e-a*i,n[6]=s*u+f*i+a*o-c*e,n[7]=f*u-a*e-c*o-s*i,n}function I(n,t,r){var e=t[0],o=t[1],i=t[2],u=t[3],a=r[0],c=r[1],s=r[2],f=r[3];return n[0]=e*f+u*a+o*s-i*c,n[1]=o*f+u*c+i*a-e*s,n[2]=i*f+u*s+e*c-o*a,n[3]=u*f-e*a-o*c-i*s,a=r[4],c=r[5],s=r[6],f=r[7],n[4]=e*f+u*a+o*s-i*c,n[5]=o*f+u*c+i*a-e*s,n[6]=i*f+u*s+e*c-o*a,n[7]=u*f-e*a-o*c-i*s,n}function S(n,t,r,o){if(Math.abs(o)0){r=Math.sqrt(r);var e=t[0]/r,o=t[1]/r,i=t[2]/r,u=t[3]/r,a=t[4],c=t[5],s=t[6],f=t[7],l=e*a+o*c+i*s+u*f;n[0]=e,n[1]=o,n[2]=i,n[3]=u,n[4]=(a-e*l)/r,n[5]=(c-o*l)/r,n[6]=(s-i*l)/r,n[7]=(f-u*l)/r}return n}function q(n){return"quat2("+n[0]+", "+n[1]+", "+n[2]+", "+n[3]+", "+n[4]+", "+n[5]+", "+n[6]+", "+n[7]+")"}function U(n,t){return n[0]===t[0]&&n[1]===t[1]&&n[2]===t[2]&&n[3]===t[3]&&n[4]===t[4]&&n[5]===t[5]&&n[6]===t[6]&&n[7]===t[7]}function F(n,t){var r=n[0],o=n[1],i=n[2],u=n[3],a=n[4],c=n[5],s=n[6],f=n[7],l=t[0],h=t[1],d=t[2],p=t[3],g=t[4],v=t[5],m=t[6],x=t[7];return Math.abs(r-l)<=e.EPSILON*Math.max(1,Math.abs(r),Math.abs(l))&&Math.abs(o-h)<=e.EPSILON*Math.max(1,Math.abs(o),Math.abs(h))&&Math.abs(i-d)<=e.EPSILON*Math.max(1,Math.abs(i),Math.abs(d))&&Math.abs(u-p)<=e.EPSILON*Math.max(1,Math.abs(u),Math.abs(p))&&Math.abs(a-g)<=e.EPSILON*Math.max(1,Math.abs(a),Math.abs(g))&&Math.abs(c-v)<=e.EPSILON*Math.max(1,Math.abs(c),Math.abs(v))&&Math.abs(s-m)<=e.EPSILON*Math.max(1,Math.abs(s),Math.abs(m))&&Math.abs(f-x)<=e.EPSILON*Math.max(1,Math.abs(f),Math.abs(x))}},"./node_modules/gl-matrix/lib/gl-matrix/vec2.js":function(n,t,r){"use strict";r.r(t),r.d(t,"create",function(){return o}),r.d(t,"clone",function(){return i}),r.d(t,"fromValues",function(){return u}),r.d(t,"copy",function(){return a}),r.d(t,"set",function(){return c}),r.d(t,"add",function(){return s}),r.d(t,"subtract",function(){return f}),r.d(t,"multiply",function(){return l}),r.d(t,"divide",function(){return h}),r.d(t,"ceil",function(){return d}),r.d(t,"floor",function(){return p}),r.d(t,"min",function(){return g}),r.d(t,"max",function(){return v}),r.d(t,"round",function(){return m}),r.d(t,"scale",function(){return x}),r.d(t,"scaleAndAdd",function(){return _}),r.d(t,"distance",function(){return b}),r.d(t,"squaredDistance",function(){return y}),r.d(t,"length",function(){return M}),r.d(t,"squaredLength",function(){return w}),r.d(t,"negate",function(){return A}),r.d(t,"inverse",function(){return E}),r.d(t,"normalize",function(){return P}),r.d(t,"dot",function(){return I}),r.d(t,"cross",function(){return S}),r.d(t,"lerp",function(){return T}),r.d(t,"random",function(){return j}),r.d(t,"transformMat2",function(){return L}),r.d(t,"transformMat2d",function(){return O}),r.d(t,"transformMat3",function(){return R}),r.d(t,"transformMat4",function(){return z}),r.d(t,"rotate",function(){return C}),r.d(t,"angle",function(){return V}),r.d(t,"str",function(){return B}),r.d(t,"exactEquals",function(){return N}),r.d(t,"equals",function(){return D}),r.d(t,"len",function(){return Y}),r.d(t,"sub",function(){return q}),r.d(t,"mul",function(){return U}),r.d(t,"div",function(){return F}),r.d(t,"dist",function(){return X}),r.d(t,"sqrDist",function(){return Z}),r.d(t,"sqrLen",function(){return G}),r.d(t,"forEach",function(){return W});var e=r("./node_modules/gl-matrix/lib/gl-matrix/common.js");function o(){var n=new e.ARRAY_TYPE(2);return e.ARRAY_TYPE!=Float32Array&&(n[0]=0,n[1]=0),n}function i(n){var t=new e.ARRAY_TYPE(2);return t[0]=n[0],t[1]=n[1],t}function u(n,t){var r=new e.ARRAY_TYPE(2);return r[0]=n,r[1]=t,r}function a(n,t){return n[0]=t[0],n[1]=t[1],n}function c(n,t,r){return n[0]=t,n[1]=r,n}function s(n,t,r){return n[0]=t[0]+r[0],n[1]=t[1]+r[1],n}function f(n,t,r){return n[0]=t[0]-r[0],n[1]=t[1]-r[1],n}function l(n,t,r){return n[0]=t[0]*r[0],n[1]=t[1]*r[1],n}function h(n,t,r){return n[0]=t[0]/r[0],n[1]=t[1]/r[1],n}function d(n,t){return n[0]=Math.ceil(t[0]),n[1]=Math.ceil(t[1]),n}function p(n,t){return n[0]=Math.floor(t[0]),n[1]=Math.floor(t[1]),n}function g(n,t,r){return n[0]=Math.min(t[0],r[0]),n[1]=Math.min(t[1],r[1]),n}function v(n,t,r){return n[0]=Math.max(t[0],r[0]),n[1]=Math.max(t[1],r[1]),n}function m(n,t){return n[0]=Math.round(t[0]),n[1]=Math.round(t[1]),n}function x(n,t,r){return n[0]=t[0]*r,n[1]=t[1]*r,n}function _(n,t,r,e){return n[0]=t[0]+r[0]*e,n[1]=t[1]+r[1]*e,n}function b(n,t){var r=t[0]-n[0],e=t[1]-n[1];return Math.sqrt(r*r+e*e)}function y(n,t){var r=t[0]-n[0],e=t[1]-n[1];return r*r+e*e}function M(n){var t=n[0],r=n[1];return Math.sqrt(t*t+r*r)}function w(n){var t=n[0],r=n[1];return t*t+r*r}function A(n,t){return n[0]=-t[0],n[1]=-t[1],n}function E(n,t){return n[0]=1/t[0],n[1]=1/t[1],n}function P(n,t){var r=t[0],e=t[1],o=r*r+e*e;return o>0&&(o=1/Math.sqrt(o),n[0]=t[0]*o,n[1]=t[1]*o),n}function I(n,t){return n[0]*t[0]+n[1]*t[1]}function S(n,t,r){var e=t[0]*r[1]-t[1]*r[0];return n[0]=n[1]=0,n[2]=e,n}function T(n,t,r,e){var o=t[0],i=t[1];return n[0]=o+e*(r[0]-o),n[1]=i+e*(r[1]-i),n}function j(n,t){t=t||1;var r=2*e.RANDOM()*Math.PI;return n[0]=Math.cos(r)*t,n[1]=Math.sin(r)*t,n}function L(n,t,r){var e=t[0],o=t[1];return n[0]=r[0]*e+r[2]*o,n[1]=r[1]*e+r[3]*o,n}function O(n,t,r){var e=t[0],o=t[1];return n[0]=r[0]*e+r[2]*o+r[4],n[1]=r[1]*e+r[3]*o+r[5],n}function R(n,t,r){var e=t[0],o=t[1];return n[0]=r[0]*e+r[3]*o+r[6],n[1]=r[1]*e+r[4]*o+r[7],n}function z(n,t,r){var e=t[0],o=t[1];return n[0]=r[0]*e+r[4]*o+r[12],n[1]=r[1]*e+r[5]*o+r[13],n}function C(n,t,r,e){var o=t[0]-r[0],i=t[1]-r[1],u=Math.sin(e),a=Math.cos(e);return n[0]=o*a-i*u+r[0],n[1]=o*u+i*a+r[1],n}function V(n,t){var r=n[0],e=n[1],o=t[0],i=t[1],u=r*r+e*e;u>0&&(u=1/Math.sqrt(u));var a=o*o+i*i;a>0&&(a=1/Math.sqrt(a));var c=(r*o+e*i)*u*a;return c>1?0:c<-1?Math.PI:Math.acos(c)}function B(n){return"vec2("+n[0]+", "+n[1]+")"}function N(n,t){return n[0]===t[0]&&n[1]===t[1]}function D(n,t){var r=n[0],o=n[1],i=t[0],u=t[1];return Math.abs(r-i)<=e.EPSILON*Math.max(1,Math.abs(r),Math.abs(i))&&Math.abs(o-u)<=e.EPSILON*Math.max(1,Math.abs(o),Math.abs(u))}var k,Y=M,q=f,U=l,F=h,X=b,Z=y,G=w,W=(k=o(),function(n,t,r,e,o,i){var u=void 0,a=void 0;for(t||(t=2),r||(r=0),a=e?Math.min(e*t+r,n.length):n.length,u=r;u0&&(i=1/Math.sqrt(i),n[0]=t[0]*i,n[1]=t[1]*i,n[2]=t[2]*i),n}function I(n,t){return n[0]*t[0]+n[1]*t[1]+n[2]*t[2]}function S(n,t,r){var e=t[0],o=t[1],i=t[2],u=r[0],a=r[1],c=r[2];return n[0]=o*c-i*a,n[1]=i*u-e*c,n[2]=e*a-o*u,n}function T(n,t,r,e){var o=t[0],i=t[1],u=t[2];return n[0]=o+e*(r[0]-o),n[1]=i+e*(r[1]-i),n[2]=u+e*(r[2]-u),n}function j(n,t,r,e,o,i){var u=i*i,a=u*(2*i-3)+1,c=u*(i-2)+i,s=u*(i-1),f=u*(3-2*i);return n[0]=t[0]*a+r[0]*c+e[0]*s+o[0]*f,n[1]=t[1]*a+r[1]*c+e[1]*s+o[1]*f,n[2]=t[2]*a+r[2]*c+e[2]*s+o[2]*f,n}function L(n,t,r,e,o,i){var u=1-i,a=u*u,c=i*i,s=a*u,f=3*i*a,l=3*c*u,h=c*i;return n[0]=t[0]*s+r[0]*f+e[0]*l+o[0]*h,n[1]=t[1]*s+r[1]*f+e[1]*l+o[1]*h,n[2]=t[2]*s+r[2]*f+e[2]*l+o[2]*h,n}function O(n,t){t=t||1;var r=2*e.RANDOM()*Math.PI,o=2*e.RANDOM()-1,i=Math.sqrt(1-o*o)*t;return n[0]=Math.cos(r)*i,n[1]=Math.sin(r)*i,n[2]=o*t,n}function R(n,t,r){var e=t[0],o=t[1],i=t[2],u=r[3]*e+r[7]*o+r[11]*i+r[15];return u=u||1,n[0]=(r[0]*e+r[4]*o+r[8]*i+r[12])/u,n[1]=(r[1]*e+r[5]*o+r[9]*i+r[13])/u,n[2]=(r[2]*e+r[6]*o+r[10]*i+r[14])/u,n}function z(n,t,r){var e=t[0],o=t[1],i=t[2];return n[0]=e*r[0]+o*r[3]+i*r[6],n[1]=e*r[1]+o*r[4]+i*r[7],n[2]=e*r[2]+o*r[5]+i*r[8],n}function C(n,t,r){var e=r[0],o=r[1],i=r[2],u=r[3],a=t[0],c=t[1],s=t[2],f=o*s-i*c,l=i*a-e*s,h=e*c-o*a,d=o*h-i*l,p=i*f-e*h,g=e*l-o*f,v=2*u;return f*=v,l*=v,h*=v,d*=2,p*=2,g*=2,n[0]=a+f+d,n[1]=c+l+p,n[2]=s+h+g,n}function V(n,t,r,e){var o=[],i=[];return o[0]=t[0]-r[0],o[1]=t[1]-r[1],o[2]=t[2]-r[2],i[0]=o[0],i[1]=o[1]*Math.cos(e)-o[2]*Math.sin(e),i[2]=o[1]*Math.sin(e)+o[2]*Math.cos(e),n[0]=i[0]+r[0],n[1]=i[1]+r[1],n[2]=i[2]+r[2],n}function B(n,t,r,e){var o=[],i=[];return o[0]=t[0]-r[0],o[1]=t[1]-r[1],o[2]=t[2]-r[2],i[0]=o[2]*Math.sin(e)+o[0]*Math.cos(e),i[1]=o[1],i[2]=o[2]*Math.cos(e)-o[0]*Math.sin(e),n[0]=i[0]+r[0],n[1]=i[1]+r[1],n[2]=i[2]+r[2],n}function N(n,t,r,e){var o=[],i=[];return o[0]=t[0]-r[0],o[1]=t[1]-r[1],o[2]=t[2]-r[2],i[0]=o[0]*Math.cos(e)-o[1]*Math.sin(e),i[1]=o[0]*Math.sin(e)+o[1]*Math.cos(e),i[2]=o[2],n[0]=i[0]+r[0],n[1]=i[1]+r[1],n[2]=i[2]+r[2],n}function D(n,t){var r=a(n[0],n[1],n[2]),e=a(t[0],t[1],t[2]);P(r,r),P(e,e);var o=I(r,e);return o>1?0:o<-1?Math.PI:Math.acos(o)}function k(n){return"vec3("+n[0]+", "+n[1]+", "+n[2]+")"}function Y(n,t){return n[0]===t[0]&&n[1]===t[1]&&n[2]===t[2]}function q(n,t){var r=n[0],o=n[1],i=n[2],u=t[0],a=t[1],c=t[2];return Math.abs(r-u)<=e.EPSILON*Math.max(1,Math.abs(r),Math.abs(u))&&Math.abs(o-a)<=e.EPSILON*Math.max(1,Math.abs(o),Math.abs(a))&&Math.abs(i-c)<=e.EPSILON*Math.max(1,Math.abs(i),Math.abs(c))}var U,F=l,X=h,Z=d,G=y,W=M,H=u,$=w,K=(U=o(),function(n,t,r,e,o,i){var u=void 0,a=void 0;for(t||(t=3),r||(r=0),a=e?Math.min(e*t+r,n.length):n.length,u=r;u0&&(u=1/Math.sqrt(u),n[0]=r*u,n[1]=e*u,n[2]=o*u,n[3]=i*u),n}function I(n,t){return n[0]*t[0]+n[1]*t[1]+n[2]*t[2]+n[3]*t[3]}function S(n,t,r,e){var o=t[0],i=t[1],u=t[2],a=t[3];return n[0]=o+e*(r[0]-o),n[1]=i+e*(r[1]-i),n[2]=u+e*(r[2]-u),n[3]=a+e*(r[3]-a),n}function T(n,t){var r,o,i,u,a,c;t=t||1;do{a=(r=2*e.RANDOM()-1)*r+(o=2*e.RANDOM()-1)*o}while(a>=1);do{c=(i=2*e.RANDOM()-1)*i+(u=2*e.RANDOM()-1)*u}while(c>=1);var s=Math.sqrt((1-a)/c);return n[0]=t*r,n[1]=t*o,n[2]=t*i*s,n[3]=t*u*s,n}function j(n,t,r){var e=t[0],o=t[1],i=t[2],u=t[3];return n[0]=r[0]*e+r[4]*o+r[8]*i+r[12]*u,n[1]=r[1]*e+r[5]*o+r[9]*i+r[13]*u,n[2]=r[2]*e+r[6]*o+r[10]*i+r[14]*u,n[3]=r[3]*e+r[7]*o+r[11]*i+r[15]*u,n}function L(n,t,r){var e=t[0],o=t[1],i=t[2],u=r[0],a=r[1],c=r[2],s=r[3],f=s*e+a*i-c*o,l=s*o+c*e-u*i,h=s*i+u*o-a*e,d=-u*e-a*o-c*i;return n[0]=f*s+d*-u+l*-c-h*-a,n[1]=l*s+d*-a+h*-u-f*-c,n[2]=h*s+d*-c+f*-a-l*-u,n[3]=t[3],n}function O(n){return"vec4("+n[0]+", "+n[1]+", "+n[2]+", "+n[3]+")"}function R(n,t){return n[0]===t[0]&&n[1]===t[1]&&n[2]===t[2]&&n[3]===t[3]}function z(n,t){var r=n[0],o=n[1],i=n[2],u=n[3],a=t[0],c=t[1],s=t[2],f=t[3];return Math.abs(r-a)<=e.EPSILON*Math.max(1,Math.abs(r),Math.abs(a))&&Math.abs(o-c)<=e.EPSILON*Math.max(1,Math.abs(o),Math.abs(c))&&Math.abs(i-s)<=e.EPSILON*Math.max(1,Math.abs(i),Math.abs(s))&&Math.abs(u-f)<=e.EPSILON*Math.max(1,Math.abs(u),Math.abs(f))}var C,V=f,B=l,N=h,D=b,k=y,Y=M,q=w,U=(C=o(),function(n,t,r,e,o,i){var u=void 0,a=void 0;for(t||(t=4),r||(r=0),a=e?Math.min(e*t+r,n.length):n.length,u=r;u>>1,k=[["ary",A],["bind",m],["bindKey",x],["curry",b],["curryRight",y],["flip",P],["partial",M],["partialRight",w],["rearg",E]],Y="[object Arguments]",q="[object Array]",U="[object AsyncFunction]",F="[object Boolean]",X="[object Date]",Z="[object DOMException]",G="[object Error]",W="[object Function]",H="[object GeneratorFunction]",$="[object Map]",K="[object Number]",Q="[object Null]",J="[object Object]",nn="[object Proxy]",tn="[object RegExp]",rn="[object Set]",en="[object String]",on="[object Symbol]",un="[object Undefined]",an="[object WeakMap]",cn="[object WeakSet]",sn="[object ArrayBuffer]",fn="[object DataView]",ln="[object Float32Array]",hn="[object Float64Array]",dn="[object Int8Array]",pn="[object Int16Array]",gn="[object Int32Array]",vn="[object Uint8Array]",mn="[object Uint8ClampedArray]",xn="[object Uint16Array]",_n="[object Uint32Array]",bn=/\b__p \+= '';/g,yn=/\b(__p \+=) '' \+/g,Mn=/(__e\(.*?\)|\b__t\)) \+\n'';/g,wn=/&(?:amp|lt|gt|quot|#39);/g,An=/[&<>"']/g,En=RegExp(wn.source),Pn=RegExp(An.source),In=/<%-([\s\S]+?)%>/g,Sn=/<%([\s\S]+?)%>/g,Tn=/<%=([\s\S]+?)%>/g,jn=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,Ln=/^\w*$/,On=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,Rn=/[\\^$.*+?()[\]{}|]/g,zn=RegExp(Rn.source),Cn=/^\s+|\s+$/g,Vn=/^\s+/,Bn=/\s+$/,Nn=/\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/,Dn=/\{\n\/\* \[wrapped with (.+)\] \*/,kn=/,? & /,Yn=/[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g,qn=/\\(\\)?/g,Un=/\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g,Fn=/\w*$/,Xn=/^[-+]0x[0-9a-f]+$/i,Zn=/^0b[01]+$/i,Gn=/^\[object .+?Constructor\]$/,Wn=/^0o[0-7]+$/i,Hn=/^(?:0|[1-9]\d*)$/,$n=/[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g,Kn=/($^)/,Qn=/['\n\r\u2028\u2029\\]/g,Jn="\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff",nt="\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000",tt="[\\ud800-\\udfff]",rt="["+nt+"]",et="["+Jn+"]",ot="\\d+",it="[\\u2700-\\u27bf]",ut="[a-z\\xdf-\\xf6\\xf8-\\xff]",at="[^\\ud800-\\udfff"+nt+ot+"\\u2700-\\u27bfa-z\\xdf-\\xf6\\xf8-\\xffA-Z\\xc0-\\xd6\\xd8-\\xde]",ct="\\ud83c[\\udffb-\\udfff]",st="[^\\ud800-\\udfff]",ft="(?:\\ud83c[\\udde6-\\uddff]){2}",lt="[\\ud800-\\udbff][\\udc00-\\udfff]",ht="[A-Z\\xc0-\\xd6\\xd8-\\xde]",dt="(?:"+ut+"|"+at+")",pt="(?:"+ht+"|"+at+")",gt="(?:"+et+"|"+ct+")"+"?",vt="[\\ufe0e\\ufe0f]?"+gt+("(?:\\u200d(?:"+[st,ft,lt].join("|")+")[\\ufe0e\\ufe0f]?"+gt+")*"),mt="(?:"+[it,ft,lt].join("|")+")"+vt,xt="(?:"+[st+et+"?",et,ft,lt,tt].join("|")+")",_t=RegExp("['’]","g"),bt=RegExp(et,"g"),yt=RegExp(ct+"(?="+ct+")|"+xt+vt,"g"),Mt=RegExp([ht+"?"+ut+"+(?:['’](?:d|ll|m|re|s|t|ve))?(?="+[rt,ht,"$"].join("|")+")",pt+"+(?:['’](?:D|LL|M|RE|S|T|VE))?(?="+[rt,ht+dt,"$"].join("|")+")",ht+"?"+dt+"+(?:['’](?:d|ll|m|re|s|t|ve))?",ht+"+(?:['’](?:D|LL|M|RE|S|T|VE))?","\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])","\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])",ot,mt].join("|"),"g"),wt=RegExp("[\\u200d\\ud800-\\udfff"+Jn+"\\ufe0e\\ufe0f]"),At=/[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/,Et=["Array","Buffer","DataView","Date","Error","Float32Array","Float64Array","Function","Int8Array","Int16Array","Int32Array","Map","Math","Object","Promise","RegExp","Set","String","Symbol","TypeError","Uint8Array","Uint8ClampedArray","Uint16Array","Uint32Array","WeakMap","_","clearTimeout","isFinite","parseInt","setTimeout"],Pt=-1,It={};It[ln]=It[hn]=It[dn]=It[pn]=It[gn]=It[vn]=It[mn]=It[xn]=It[_n]=!0,It[Y]=It[q]=It[sn]=It[F]=It[fn]=It[X]=It[G]=It[W]=It[$]=It[K]=It[J]=It[tn]=It[rn]=It[en]=It[an]=!1;var St={};St[Y]=St[q]=St[sn]=St[fn]=St[F]=St[X]=St[ln]=St[hn]=St[dn]=St[pn]=St[gn]=St[$]=St[K]=St[J]=St[tn]=St[rn]=St[en]=St[on]=St[vn]=St[mn]=St[xn]=St[_n]=!0,St[G]=St[W]=St[an]=!1;var Tt={"\\":"\\","'":"'","\n":"n","\r":"r","\u2028":"u2028","\u2029":"u2029"},jt=parseFloat,Lt=parseInt,Ot="object"==typeof n&&n&&n.Object===Object&&n,Rt="object"==typeof self&&self&&self.Object===Object&&self,zt=Ot||Rt||Function("return this")(),Ct=t&&!t.nodeType&&t,Vt=Ct&&"object"==typeof e&&e&&!e.nodeType&&e,Bt=Vt&&Vt.exports===Ct,Nt=Bt&&Ot.process,Dt=function(){try{var n=Vt&&Vt.require&&Vt.require("util").types;return n||Nt&&Nt.binding&&Nt.binding("util")}catch(n){}}(),kt=Dt&&Dt.isArrayBuffer,Yt=Dt&&Dt.isDate,qt=Dt&&Dt.isMap,Ut=Dt&&Dt.isRegExp,Ft=Dt&&Dt.isSet,Xt=Dt&&Dt.isTypedArray;function Zt(n,t,r){switch(r.length){case 0:return n.call(t);case 1:return n.call(t,r[0]);case 2:return n.call(t,r[0],r[1]);case 3:return n.call(t,r[0],r[1],r[2])}return n.apply(t,r)}function Gt(n,t,r,e){for(var o=-1,i=null==n?0:n.length;++o-1}function Jt(n,t,r){for(var e=-1,o=null==n?0:n.length;++e-1;);return r}function yr(n,t){for(var r=n.length;r--&&cr(t,n[r],0)>-1;);return r}var Mr=dr({"À":"A","Á":"A","Â":"A","Ã":"A","Ä":"A","Å":"A","à":"a","á":"a","â":"a","ã":"a","ä":"a","å":"a","Ç":"C","ç":"c","Ð":"D","ð":"d","È":"E","É":"E","Ê":"E","Ë":"E","è":"e","é":"e","ê":"e","ë":"e","Ì":"I","Í":"I","Î":"I","Ï":"I","ì":"i","í":"i","î":"i","ï":"i","Ñ":"N","ñ":"n","Ò":"O","Ó":"O","Ô":"O","Õ":"O","Ö":"O","Ø":"O","ò":"o","ó":"o","ô":"o","õ":"o","ö":"o","ø":"o","Ù":"U","Ú":"U","Û":"U","Ü":"U","ù":"u","ú":"u","û":"u","ü":"u","Ý":"Y","ý":"y","ÿ":"y","Æ":"Ae","æ":"ae","Þ":"Th","þ":"th","ß":"ss","Ā":"A","Ă":"A","Ą":"A","ā":"a","ă":"a","ą":"a","Ć":"C","Ĉ":"C","Ċ":"C","Č":"C","ć":"c","ĉ":"c","ċ":"c","č":"c","Ď":"D","Đ":"D","ď":"d","đ":"d","Ē":"E","Ĕ":"E","Ė":"E","Ę":"E","Ě":"E","ē":"e","ĕ":"e","ė":"e","ę":"e","ě":"e","Ĝ":"G","Ğ":"G","Ġ":"G","Ģ":"G","ĝ":"g","ğ":"g","ġ":"g","ģ":"g","Ĥ":"H","Ħ":"H","ĥ":"h","ħ":"h","Ĩ":"I","Ī":"I","Ĭ":"I","Į":"I","İ":"I","ĩ":"i","ī":"i","ĭ":"i","į":"i","ı":"i","Ĵ":"J","ĵ":"j","Ķ":"K","ķ":"k","ĸ":"k","Ĺ":"L","Ļ":"L","Ľ":"L","Ŀ":"L","Ł":"L","ĺ":"l","ļ":"l","ľ":"l","ŀ":"l","ł":"l","Ń":"N","Ņ":"N","Ň":"N","Ŋ":"N","ń":"n","ņ":"n","ň":"n","ŋ":"n","Ō":"O","Ŏ":"O","Ő":"O","ō":"o","ŏ":"o","ő":"o","Ŕ":"R","Ŗ":"R","Ř":"R","ŕ":"r","ŗ":"r","ř":"r","Ś":"S","Ŝ":"S","Ş":"S","Š":"S","ś":"s","ŝ":"s","ş":"s","š":"s","Ţ":"T","Ť":"T","Ŧ":"T","ţ":"t","ť":"t","ŧ":"t","Ũ":"U","Ū":"U","Ŭ":"U","Ů":"U","Ű":"U","Ų":"U","ũ":"u","ū":"u","ŭ":"u","ů":"u","ű":"u","ų":"u","Ŵ":"W","ŵ":"w","Ŷ":"Y","ŷ":"y","Ÿ":"Y","Ź":"Z","Ż":"Z","Ž":"Z","ź":"z","ż":"z","ž":"z","IJ":"IJ","ij":"ij","Œ":"Oe","œ":"oe","ʼn":"'n","ſ":"s"}),wr=dr({"&":"&","<":"<",">":">",'"':""","'":"'"});function Ar(n){return"\\"+Tt[n]}function Er(n){return wt.test(n)}function Pr(n){var t=-1,r=Array(n.size);return n.forEach(function(n,e){r[++t]=[e,n]}),r}function Ir(n,t){return function(r){return n(t(r))}}function Sr(n,t){for(var r=-1,e=n.length,o=0,i=[];++r",""":'"',"'":"'"});var zr=function n(t){var r,e=(t=null==t?zt:zr.defaults(zt.Object(),t,zr.pick(zt,Et))).Array,o=t.Date,Jn=t.Error,nt=t.Function,tt=t.Math,rt=t.Object,et=t.RegExp,ot=t.String,it=t.TypeError,ut=e.prototype,at=nt.prototype,ct=rt.prototype,st=t["__core-js_shared__"],ft=at.toString,lt=ct.hasOwnProperty,ht=0,dt=(r=/[^.]+$/.exec(st&&st.keys&&st.keys.IE_PROTO||""))?"Symbol(src)_1."+r:"",pt=ct.toString,gt=ft.call(rt),vt=zt._,mt=et("^"+ft.call(lt).replace(Rn,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),xt=Bt?t.Buffer:i,yt=t.Symbol,wt=t.Uint8Array,Tt=xt?xt.allocUnsafe:i,Ot=Ir(rt.getPrototypeOf,rt),Rt=rt.create,Ct=ct.propertyIsEnumerable,Vt=ut.splice,Nt=yt?yt.isConcatSpreadable:i,Dt=yt?yt.iterator:i,ir=yt?yt.toStringTag:i,dr=function(){try{var n=Di(rt,"defineProperty");return n({},"",{}),n}catch(n){}}(),Cr=t.clearTimeout!==zt.clearTimeout&&t.clearTimeout,Vr=o&&o.now!==zt.Date.now&&o.now,Br=t.setTimeout!==zt.setTimeout&&t.setTimeout,Nr=tt.ceil,Dr=tt.floor,kr=rt.getOwnPropertySymbols,Yr=xt?xt.isBuffer:i,qr=t.isFinite,Ur=ut.join,Fr=Ir(rt.keys,rt),Xr=tt.max,Zr=tt.min,Gr=o.now,Wr=t.parseInt,Hr=tt.random,$r=ut.reverse,Kr=Di(t,"DataView"),Qr=Di(t,"Map"),Jr=Di(t,"Promise"),ne=Di(t,"Set"),te=Di(t,"WeakMap"),re=Di(rt,"create"),ee=te&&new te,oe={},ie=lu(Kr),ue=lu(Qr),ae=lu(Jr),ce=lu(ne),se=lu(te),fe=yt?yt.prototype:i,le=fe?fe.valueOf:i,he=fe?fe.toString:i;function de(n){if(Sa(n)&&!ma(n)&&!(n instanceof me)){if(n instanceof ve)return n;if(lt.call(n,"__wrapped__"))return hu(n)}return new ve(n)}var pe=function(){function n(){}return function(t){if(!Ia(t))return{};if(Rt)return Rt(t);n.prototype=t;var r=new n;return n.prototype=i,r}}();function ge(){}function ve(n,t){this.__wrapped__=n,this.__actions__=[],this.__chain__=!!t,this.__index__=0,this.__values__=i}function me(n){this.__wrapped__=n,this.__actions__=[],this.__dir__=1,this.__filtered__=!1,this.__iteratees__=[],this.__takeCount__=B,this.__views__=[]}function xe(n){var t=-1,r=null==n?0:n.length;for(this.clear();++t=t?n:t)),n}function Ce(n,t,r,e,o,u){var a,c=t&h,s=t&d,f=t&p;if(r&&(a=o?r(n,e,o,u):r(n)),a!==i)return a;if(!Ia(n))return n;var l=ma(n);if(l){if(a=function(n){var t=n.length,r=new n.constructor(t);return t&&"string"==typeof n[0]&<.call(n,"index")&&(r.index=n.index,r.input=n.input),r}(n),!c)return ei(n,a)}else{var g=qi(n),v=g==W||g==H;if(ya(n))return Ko(n,c);if(g==J||g==Y||v&&!o){if(a=s||v?{}:Fi(n),!c)return s?function(n,t){return oi(n,Yi(n),t)}(n,function(n,t){return n&&oi(t,ic(t),n)}(a,n)):function(n,t){return oi(n,ki(n),t)}(n,Le(a,n))}else{if(!St[g])return o?n:{};a=function(n,t,r){var e,o,i,u=n.constructor;switch(t){case sn:return Qo(n);case F:case X:return new u(+n);case fn:return function(n,t){var r=t?Qo(n.buffer):n.buffer;return new n.constructor(r,n.byteOffset,n.byteLength)}(n,r);case ln:case hn:case dn:case pn:case gn:case vn:case mn:case xn:case _n:return Jo(n,r);case $:return new u;case K:case en:return new u(n);case tn:return(i=new(o=n).constructor(o.source,Fn.exec(o))).lastIndex=o.lastIndex,i;case rn:return new u;case on:return e=n,le?rt(le.call(e)):{}}}(n,g,c)}}u||(u=new Me);var m=u.get(n);if(m)return m;if(u.set(n,a),Ra(n))return n.forEach(function(e){a.add(Ce(e,t,r,e,n,u))}),a;if(Ta(n))return n.forEach(function(e,o){a.set(o,Ce(e,t,r,o,n,u))}),a;var x=l?i:(f?s?Oi:Li:s?ic:oc)(n);return Wt(x||n,function(e,o){x&&(e=n[o=e]),Se(a,o,Ce(e,t,r,o,n,u))}),a}function Ve(n,t,r){var e=r.length;if(null==n)return!e;for(n=rt(n);e--;){var o=r[e],u=t[o],a=n[o];if(a===i&&!(o in n)||!u(a))return!1}return!0}function Be(n,t,r){if("function"!=typeof n)throw new it(c);return ou(function(){n.apply(i,r)},t)}function Ne(n,t,r,e){var o=-1,i=Qt,a=!0,c=n.length,s=[],f=t.length;if(!c)return s;r&&(t=nr(t,mr(r))),e?(i=Jt,a=!1):t.length>=u&&(i=_r,a=!1,t=new ye(t));n:for(;++o-1},_e.prototype.set=function(n,t){var r=this.__data__,e=Te(r,n);return e<0?(++this.size,r.push([n,t])):r[e][1]=t,this},be.prototype.clear=function(){this.size=0,this.__data__={hash:new xe,map:new(Qr||_e),string:new xe}},be.prototype.delete=function(n){var t=Bi(this,n).delete(n);return this.size-=t?1:0,t},be.prototype.get=function(n){return Bi(this,n).get(n)},be.prototype.has=function(n){return Bi(this,n).has(n)},be.prototype.set=function(n,t){var r=Bi(this,n),e=r.size;return r.set(n,t),this.size+=r.size==e?0:1,this},ye.prototype.add=ye.prototype.push=function(n){return this.__data__.set(n,s),this},ye.prototype.has=function(n){return this.__data__.has(n)},Me.prototype.clear=function(){this.__data__=new _e,this.size=0},Me.prototype.delete=function(n){var t=this.__data__,r=t.delete(n);return this.size=t.size,r},Me.prototype.get=function(n){return this.__data__.get(n)},Me.prototype.has=function(n){return this.__data__.has(n)},Me.prototype.set=function(n,t){var r=this.__data__;if(r instanceof _e){var e=r.__data__;if(!Qr||e.length0&&r(a)?t>1?Fe(a,t-1,r,e,o):tr(o,a):e||(o[o.length]=a)}return o}var Xe=ci(),Ze=ci(!0);function Ge(n,t){return n&&Xe(n,t,oc)}function We(n,t){return n&&Ze(n,t,oc)}function He(n,t){return Kt(t,function(t){return Aa(n[t])})}function $e(n,t){for(var r=0,e=(t=Go(t,n)).length;null!=n&&rt}function no(n,t){return null!=n&<.call(n,t)}function to(n,t){return null!=n&&t in rt(n)}function ro(n,t,r){for(var o=r?Jt:Qt,u=n[0].length,a=n.length,c=a,s=e(a),f=1/0,l=[];c--;){var h=n[c];c&&t&&(h=nr(h,mr(t))),f=Zr(h.length,f),s[c]=!r&&(t||u>=120&&h.length>=120)?new ye(c&&h):i}h=n[0];var d=-1,p=s[0];n:for(;++d=a)return c;var s=r[e];return c*("desc"==s?-1:1)}}return n.index-t.index}(n,t,r)})}function _o(n,t,r){for(var e=-1,o=t.length,i={};++e-1;)a!==n&&Vt.call(a,c,1),Vt.call(n,c,1);return n}function yo(n,t){for(var r=n?t.length:0,e=r-1;r--;){var o=t[r];if(r==e||o!==i){var i=o;Zi(o)?Vt.call(n,o,1):Do(n,o)}}return n}function Mo(n,t){return n+Dr(Hr()*(t-n+1))}function wo(n,t){var r="";if(!n||t<1||t>z)return r;do{t%2&&(r+=n),(t=Dr(t/2))&&(n+=n)}while(t);return r}function Ao(n,t){return iu(nu(n,t,jc),n+"")}function Eo(n){return Ae(dc(n))}function Po(n,t){var r=dc(n);return cu(r,ze(t,0,r.length))}function Io(n,t,r,e){if(!Ia(n))return n;for(var o=-1,u=(t=Go(t,n)).length,a=u-1,c=n;null!=c&&++oi?0:i+t),(r=r>i?i:r)<0&&(r+=i),i=t>r?0:r-t>>>0,t>>>=0;for(var u=e(i);++o>>1,u=n[i];null!==u&&!Ca(u)&&(r?u<=t:u=u){var f=t?null:wi(n);if(f)return Tr(f);a=!1,o=_r,s=new ye}else s=t?[]:c;n:for(;++e=e?n:Lo(n,t,r)}var $o=Cr||function(n){return zt.clearTimeout(n)};function Ko(n,t){if(t)return n.slice();var r=n.length,e=Tt?Tt(r):new n.constructor(r);return n.copy(e),e}function Qo(n){var t=new n.constructor(n.byteLength);return new wt(t).set(new wt(n)),t}function Jo(n,t){var r=t?Qo(n.buffer):n.buffer;return new n.constructor(r,n.byteOffset,n.length)}function ni(n,t){if(n!==t){var r=n!==i,e=null===n,o=n==n,u=Ca(n),a=t!==i,c=null===t,s=t==t,f=Ca(t);if(!c&&!f&&!u&&n>t||u&&a&&s&&!c&&!f||e&&a&&s||!r&&s||!o)return 1;if(!e&&!u&&!f&&n1?r[o-1]:i,a=o>2?r[2]:i;for(u=n.length>3&&"function"==typeof u?(o--,u):i,a&&Gi(r[0],r[1],a)&&(u=o<3?i:u,o=1),t=rt(t);++e-1?o[u?t[a]:a]:i}}function di(n){return ji(function(t){var r=t.length,e=r,o=ve.prototype.thru;for(n&&t.reverse();e--;){var u=t[e];if("function"!=typeof u)throw new it(c);if(o&&!a&&"wrapper"==zi(u))var a=new ve([],!0)}for(e=a?e:r;++e1&&b.reverse(),h&&fc))return!1;var f=u.get(n);if(f&&u.get(t))return f==t;var l=-1,h=!0,d=r&v?new ye:i;for(u.set(n,t),u.set(t,n);++l-1&&n%1==0&&n1?"& ":"")+t[e],t=t.join(r>2?", ":" "),n.replace(Nn,"{\n/* [wrapped with "+t+"] */\n")}(e,function(n,t){return Wt(k,function(r){var e="_."+r[0];t&r[1]&&!Qt(n,e)&&n.push(e)}),n.sort()}(function(n){var t=n.match(Dn);return t?t[1].split(kn):[]}(e),r)))}function au(n){var t=0,r=0;return function(){var e=Gr(),o=j-(e-r);if(r=e,o>0){if(++t>=T)return arguments[0]}else t=0;return n.apply(i,arguments)}}function cu(n,t){var r=-1,e=n.length,o=e-1;for(t=t===i?e:t;++r1?n[t-1]:i;return Ou(n,r="function"==typeof r?(n.pop(),r):i)});function Du(n){var t=de(n);return t.__chain__=!0,t}function ku(n,t){return t(n)}var Yu=ji(function(n){var t=n.length,r=t?n[0]:0,e=this.__wrapped__,o=function(t){return Re(t,n)};return!(t>1||this.__actions__.length)&&e instanceof me&&Zi(r)?((e=e.slice(r,+r+(t?1:0))).__actions__.push({func:ku,args:[o],thisArg:i}),new ve(e,this.__chain__).thru(function(n){return t&&!n.length&&n.push(i),n})):this.thru(o)});var qu=ii(function(n,t,r){lt.call(n,r)?++n[r]:Oe(n,r,1)});var Uu=hi(vu),Fu=hi(mu);function Xu(n,t){return(ma(n)?Wt:De)(n,Vi(t,3))}function Zu(n,t){return(ma(n)?Ht:ke)(n,Vi(t,3))}var Gu=ii(function(n,t,r){lt.call(n,r)?n[r].push(t):Oe(n,r,[t])});var Wu=Ao(function(n,t,r){var o=-1,i="function"==typeof t,u=_a(n)?e(n.length):[];return De(n,function(n){u[++o]=i?Zt(t,n,r):eo(n,t,r)}),u}),Hu=ii(function(n,t,r){Oe(n,r,t)});function $u(n,t){return(ma(n)?nr:ho)(n,Vi(t,3))}var Ku=ii(function(n,t,r){n[r?0:1].push(t)},function(){return[[],[]]});var Qu=Ao(function(n,t){if(null==n)return[];var r=t.length;return r>1&&Gi(n,t[0],t[1])?t=[]:r>2&&Gi(t[0],t[1],t[2])&&(t=[t[0]]),xo(n,Fe(t,1),[])}),Ju=Vr||function(){return zt.Date.now()};function na(n,t,r){return t=r?i:t,t=n&&null==t?n.length:t,Ei(n,A,i,i,i,i,t)}function ta(n,t){var r;if("function"!=typeof t)throw new it(c);return n=Ya(n),function(){return--n>0&&(r=t.apply(this,arguments)),n<=1&&(t=i),r}}var ra=Ao(function(n,t,r){var e=m;if(r.length){var o=Sr(r,Ci(ra));e|=M}return Ei(n,e,t,r,o)}),ea=Ao(function(n,t,r){var e=m|x;if(r.length){var o=Sr(r,Ci(ea));e|=M}return Ei(t,e,n,r,o)});function oa(n,t,r){var e,o,u,a,s,f,l=0,h=!1,d=!1,p=!0;if("function"!=typeof n)throw new it(c);function g(t){var r=e,u=o;return e=o=i,l=t,a=n.apply(u,r)}function v(n){var r=n-f;return f===i||r>=t||r<0||d&&n-l>=u}function m(){var n=Ju();if(v(n))return x(n);s=ou(m,function(n){var r=t-(n-f);return d?Zr(r,u-(n-l)):r}(n))}function x(n){return s=i,p&&e?g(n):(e=o=i,a)}function _(){var n=Ju(),r=v(n);if(e=arguments,o=this,f=n,r){if(s===i)return function(n){return l=n,s=ou(m,t),h?g(n):a}(f);if(d)return s=ou(m,t),g(f)}return s===i&&(s=ou(m,t)),a}return t=Ua(t)||0,Ia(r)&&(h=!!r.leading,u=(d="maxWait"in r)?Xr(Ua(r.maxWait)||0,t):u,p="trailing"in r?!!r.trailing:p),_.cancel=function(){s!==i&&$o(s),l=0,e=f=o=s=i},_.flush=function(){return s===i?a:x(Ju())},_}var ia=Ao(function(n,t){return Be(n,1,t)}),ua=Ao(function(n,t,r){return Be(n,Ua(t)||0,r)});function aa(n,t){if("function"!=typeof n||null!=t&&"function"!=typeof t)throw new it(c);var r=function(){var e=arguments,o=t?t.apply(this,e):e[0],i=r.cache;if(i.has(o))return i.get(o);var u=n.apply(this,e);return r.cache=i.set(o,u)||i,u};return r.cache=new(aa.Cache||be),r}function ca(n){if("function"!=typeof n)throw new it(c);return function(){var t=arguments;switch(t.length){case 0:return!n.call(this);case 1:return!n.call(this,t[0]);case 2:return!n.call(this,t[0],t[1]);case 3:return!n.call(this,t[0],t[1],t[2])}return!n.apply(this,t)}}aa.Cache=be;var sa=Wo(function(n,t){var r=(t=1==t.length&&ma(t[0])?nr(t[0],mr(Vi())):nr(Fe(t,1),mr(Vi()))).length;return Ao(function(e){for(var o=-1,i=Zr(e.length,r);++o=t}),va=oo(function(){return arguments}())?oo:function(n){return Sa(n)&<.call(n,"callee")&&!Ct.call(n,"callee")},ma=e.isArray,xa=kt?mr(kt):function(n){return Sa(n)&&Qe(n)==sn};function _a(n){return null!=n&&Pa(n.length)&&!Aa(n)}function ba(n){return Sa(n)&&_a(n)}var ya=Yr||Uc,Ma=Yt?mr(Yt):function(n){return Sa(n)&&Qe(n)==X};function wa(n){if(!Sa(n))return!1;var t=Qe(n);return t==G||t==Z||"string"==typeof n.message&&"string"==typeof n.name&&!La(n)}function Aa(n){if(!Ia(n))return!1;var t=Qe(n);return t==W||t==H||t==U||t==nn}function Ea(n){return"number"==typeof n&&n==Ya(n)}function Pa(n){return"number"==typeof n&&n>-1&&n%1==0&&n<=z}function Ia(n){var t=typeof n;return null!=n&&("object"==t||"function"==t)}function Sa(n){return null!=n&&"object"==typeof n}var Ta=qt?mr(qt):function(n){return Sa(n)&&qi(n)==$};function ja(n){return"number"==typeof n||Sa(n)&&Qe(n)==K}function La(n){if(!Sa(n)||Qe(n)!=J)return!1;var t=Ot(n);if(null===t)return!0;var r=lt.call(t,"constructor")&&t.constructor;return"function"==typeof r&&r instanceof r&&ft.call(r)==gt}var Oa=Ut?mr(Ut):function(n){return Sa(n)&&Qe(n)==tn};var Ra=Ft?mr(Ft):function(n){return Sa(n)&&qi(n)==rn};function za(n){return"string"==typeof n||!ma(n)&&Sa(n)&&Qe(n)==en}function Ca(n){return"symbol"==typeof n||Sa(n)&&Qe(n)==on}var Va=Xt?mr(Xt):function(n){return Sa(n)&&Pa(n.length)&&!!It[Qe(n)]};var Ba=bi(lo),Na=bi(function(n,t){return n<=t});function Da(n){if(!n)return[];if(_a(n))return za(n)?Or(n):ei(n);if(Dt&&n[Dt])return function(n){for(var t,r=[];!(t=n.next()).done;)r.push(t.value);return r}(n[Dt]());var t=qi(n);return(t==$?Pr:t==rn?Tr:dc)(n)}function ka(n){return n?(n=Ua(n))===R||n===-R?(n<0?-1:1)*C:n==n?n:0:0===n?n:0}function Ya(n){var t=ka(n),r=t%1;return t==t?r?t-r:t:0}function qa(n){return n?ze(Ya(n),0,B):0}function Ua(n){if("number"==typeof n)return n;if(Ca(n))return V;if(Ia(n)){var t="function"==typeof n.valueOf?n.valueOf():n;n=Ia(t)?t+"":t}if("string"!=typeof n)return 0===n?n:+n;n=n.replace(Cn,"");var r=Zn.test(n);return r||Wn.test(n)?Lt(n.slice(2),r?2:8):Xn.test(n)?V:+n}function Fa(n){return oi(n,ic(n))}function Xa(n){return null==n?"":Bo(n)}var Za=ui(function(n,t){if(Ki(t)||_a(t))oi(t,oc(t),n);else for(var r in t)lt.call(t,r)&&Se(n,r,t[r])}),Ga=ui(function(n,t){oi(t,ic(t),n)}),Wa=ui(function(n,t,r,e){oi(t,ic(t),n,e)}),Ha=ui(function(n,t,r,e){oi(t,oc(t),n,e)}),$a=ji(Re);var Ka=Ao(function(n,t){n=rt(n);var r=-1,e=t.length,o=e>2?t[2]:i;for(o&&Gi(t[0],t[1],o)&&(e=1);++r1),t}),oi(n,Oi(n),r),e&&(r=Ce(r,h|d|p,Si));for(var o=t.length;o--;)Do(r,t[o]);return r});var sc=ji(function(n,t){return null==n?{}:function(n,t){return _o(n,t,function(t,r){return nc(n,r)})}(n,t)});function fc(n,t){if(null==n)return{};var r=nr(Oi(n),function(n){return[n]});return t=Vi(t),_o(n,r,function(n,r){return t(n,r[0])})}var lc=Ai(oc),hc=Ai(ic);function dc(n){return null==n?[]:xr(n,oc(n))}var pc=fi(function(n,t,r){return t=t.toLowerCase(),n+(r?gc(t):t)});function gc(n){return wc(Xa(n).toLowerCase())}function vc(n){return(n=Xa(n))&&n.replace($n,Mr).replace(bt,"")}var mc=fi(function(n,t,r){return n+(r?"-":"")+t.toLowerCase()}),xc=fi(function(n,t,r){return n+(r?" ":"")+t.toLowerCase()}),_c=si("toLowerCase");var bc=fi(function(n,t,r){return n+(r?"_":"")+t.toLowerCase()});var yc=fi(function(n,t,r){return n+(r?" ":"")+wc(t)});var Mc=fi(function(n,t,r){return n+(r?" ":"")+t.toUpperCase()}),wc=si("toUpperCase");function Ac(n,t,r){return n=Xa(n),(t=r?i:t)===i?function(n){return At.test(n)}(n)?function(n){return n.match(Mt)||[]}(n):function(n){return n.match(Yn)||[]}(n):n.match(t)||[]}var Ec=Ao(function(n,t){try{return Zt(n,i,t)}catch(n){return wa(n)?n:new Jn(n)}}),Pc=ji(function(n,t){return Wt(t,function(t){t=fu(t),Oe(n,t,ra(n[t],n))}),n});function Ic(n){return function(){return n}}var Sc=di(),Tc=di(!0);function jc(n){return n}function Lc(n){return co("function"==typeof n?n:Ce(n,h))}var Oc=Ao(function(n,t){return function(r){return eo(r,n,t)}}),Rc=Ao(function(n,t){return function(r){return eo(n,r,t)}});function zc(n,t,r){var e=oc(t),o=He(t,e);null!=r||Ia(t)&&(o.length||!e.length)||(r=t,t=n,n=this,o=He(t,oc(t)));var i=!(Ia(r)&&"chain"in r&&!r.chain),u=Aa(n);return Wt(o,function(r){var e=t[r];n[r]=e,u&&(n.prototype[r]=function(){var t=this.__chain__;if(i||t){var r=n(this.__wrapped__);return(r.__actions__=ei(this.__actions__)).push({func:e,args:arguments,thisArg:n}),r.__chain__=t,r}return e.apply(n,tr([this.value()],arguments))})}),n}function Cc(){}var Vc=mi(nr),Bc=mi($t),Nc=mi(or);function Dc(n){return Wi(n)?hr(fu(n)):function(n){return function(t){return $e(t,n)}}(n)}var kc=_i(),Yc=_i(!0);function qc(){return[]}function Uc(){return!1}var Fc=vi(function(n,t){return n+t},0),Xc=Mi("ceil"),Zc=vi(function(n,t){return n/t},1),Gc=Mi("floor");var Wc,Hc=vi(function(n,t){return n*t},1),$c=Mi("round"),Kc=vi(function(n,t){return n-t},0);return de.after=function(n,t){if("function"!=typeof t)throw new it(c);return n=Ya(n),function(){if(--n<1)return t.apply(this,arguments)}},de.ary=na,de.assign=Za,de.assignIn=Ga,de.assignInWith=Wa,de.assignWith=Ha,de.at=$a,de.before=ta,de.bind=ra,de.bindAll=Pc,de.bindKey=ea,de.castArray=function(){if(!arguments.length)return[];var n=arguments[0];return ma(n)?n:[n]},de.chain=Du,de.chunk=function(n,t,r){t=(r?Gi(n,t,r):t===i)?1:Xr(Ya(t),0);var o=null==n?0:n.length;if(!o||t<1)return[];for(var u=0,a=0,c=e(Nr(o/t));uo?0:o+r),(e=e===i||e>o?o:Ya(e))<0&&(e+=o),e=r>e?0:qa(e);r>>0)?(n=Xa(n))&&("string"==typeof t||null!=t&&!Oa(t))&&!(t=Bo(t))&&Er(n)?Ho(Or(n),0,r):n.split(t,r):[]},de.spread=function(n,t){if("function"!=typeof n)throw new it(c);return t=null==t?0:Xr(Ya(t),0),Ao(function(r){var e=r[t],o=Ho(r,0,t);return e&&tr(o,e),Zt(n,this,o)})},de.tail=function(n){var t=null==n?0:n.length;return t?Lo(n,1,t):[]},de.take=function(n,t,r){return n&&n.length?Lo(n,0,(t=r||t===i?1:Ya(t))<0?0:t):[]},de.takeRight=function(n,t,r){var e=null==n?0:n.length;return e?Lo(n,(t=e-(t=r||t===i?1:Ya(t)))<0?0:t,e):[]},de.takeRightWhile=function(n,t){return n&&n.length?Yo(n,Vi(t,3),!1,!0):[]},de.takeWhile=function(n,t){return n&&n.length?Yo(n,Vi(t,3)):[]},de.tap=function(n,t){return t(n),n},de.throttle=function(n,t,r){var e=!0,o=!0;if("function"!=typeof n)throw new it(c);return Ia(r)&&(e="leading"in r?!!r.leading:e,o="trailing"in r?!!r.trailing:o),oa(n,t,{leading:e,maxWait:t,trailing:o})},de.thru=ku,de.toArray=Da,de.toPairs=lc,de.toPairsIn=hc,de.toPath=function(n){return ma(n)?nr(n,fu):Ca(n)?[n]:ei(su(Xa(n)))},de.toPlainObject=Fa,de.transform=function(n,t,r){var e=ma(n),o=e||ya(n)||Va(n);if(t=Vi(t,4),null==r){var i=n&&n.constructor;r=o?e?new i:[]:Ia(n)&&Aa(i)?pe(Ot(n)):{}}return(o?Wt:Ge)(n,function(n,e,o){return t(r,n,e,o)}),r},de.unary=function(n){return na(n,1)},de.union=Su,de.unionBy=Tu,de.unionWith=ju,de.uniq=function(n){return n&&n.length?No(n):[]},de.uniqBy=function(n,t){return n&&n.length?No(n,Vi(t,2)):[]},de.uniqWith=function(n,t){return t="function"==typeof t?t:i,n&&n.length?No(n,i,t):[]},de.unset=function(n,t){return null==n||Do(n,t)},de.unzip=Lu,de.unzipWith=Ou,de.update=function(n,t,r){return null==n?n:ko(n,t,Zo(r))},de.updateWith=function(n,t,r,e){return e="function"==typeof e?e:i,null==n?n:ko(n,t,Zo(r),e)},de.values=dc,de.valuesIn=function(n){return null==n?[]:xr(n,ic(n))},de.without=Ru,de.words=Ac,de.wrap=function(n,t){return fa(Zo(t),n)},de.xor=zu,de.xorBy=Cu,de.xorWith=Vu,de.zip=Bu,de.zipObject=function(n,t){return Fo(n||[],t||[],Se)},de.zipObjectDeep=function(n,t){return Fo(n||[],t||[],Io)},de.zipWith=Nu,de.entries=lc,de.entriesIn=hc,de.extend=Ga,de.extendWith=Wa,zc(de,de),de.add=Fc,de.attempt=Ec,de.camelCase=pc,de.capitalize=gc,de.ceil=Xc,de.clamp=function(n,t,r){return r===i&&(r=t,t=i),r!==i&&(r=(r=Ua(r))==r?r:0),t!==i&&(t=(t=Ua(t))==t?t:0),ze(Ua(n),t,r)},de.clone=function(n){return Ce(n,p)},de.cloneDeep=function(n){return Ce(n,h|p)},de.cloneDeepWith=function(n,t){return Ce(n,h|p,t="function"==typeof t?t:i)},de.cloneWith=function(n,t){return Ce(n,p,t="function"==typeof t?t:i)},de.conformsTo=function(n,t){return null==t||Ve(n,t,oc(t))},de.deburr=vc,de.defaultTo=function(n,t){return null==n||n!=n?t:n},de.divide=Zc,de.endsWith=function(n,t,r){n=Xa(n),t=Bo(t);var e=n.length,o=r=r===i?e:ze(Ya(r),0,e);return(r-=t.length)>=0&&n.slice(r,o)==t},de.eq=da,de.escape=function(n){return(n=Xa(n))&&Pn.test(n)?n.replace(An,wr):n},de.escapeRegExp=function(n){return(n=Xa(n))&&zn.test(n)?n.replace(Rn,"\\$&"):n},de.every=function(n,t,r){var e=ma(n)?$t:Ye;return r&&Gi(n,t,r)&&(t=i),e(n,Vi(t,3))},de.find=Uu,de.findIndex=vu,de.findKey=function(n,t){return ur(n,Vi(t,3),Ge)},de.findLast=Fu,de.findLastIndex=mu,de.findLastKey=function(n,t){return ur(n,Vi(t,3),We)},de.floor=Gc,de.forEach=Xu,de.forEachRight=Zu,de.forIn=function(n,t){return null==n?n:Xe(n,Vi(t,3),ic)},de.forInRight=function(n,t){return null==n?n:Ze(n,Vi(t,3),ic)},de.forOwn=function(n,t){return n&&Ge(n,Vi(t,3))},de.forOwnRight=function(n,t){return n&&We(n,Vi(t,3))},de.get=Ja,de.gt=pa,de.gte=ga,de.has=function(n,t){return null!=n&&Ui(n,t,no)},de.hasIn=nc,de.head=_u,de.identity=jc,de.includes=function(n,t,r,e){n=_a(n)?n:dc(n),r=r&&!e?Ya(r):0;var o=n.length;return r<0&&(r=Xr(o+r,0)),za(n)?r<=o&&n.indexOf(t,r)>-1:!!o&&cr(n,t,r)>-1},de.indexOf=function(n,t,r){var e=null==n?0:n.length;if(!e)return-1;var o=null==r?0:Ya(r);return o<0&&(o=Xr(e+o,0)),cr(n,t,o)},de.inRange=function(n,t,r){return t=ka(t),r===i?(r=t,t=0):r=ka(r),function(n,t,r){return n>=Zr(t,r)&&n=-z&&n<=z},de.isSet=Ra,de.isString=za,de.isSymbol=Ca,de.isTypedArray=Va,de.isUndefined=function(n){return n===i},de.isWeakMap=function(n){return Sa(n)&&qi(n)==an},de.isWeakSet=function(n){return Sa(n)&&Qe(n)==cn},de.join=function(n,t){return null==n?"":Ur.call(n,t)},de.kebabCase=mc,de.last=wu,de.lastIndexOf=function(n,t,r){var e=null==n?0:n.length;if(!e)return-1;var o=e;return r!==i&&(o=(o=Ya(r))<0?Xr(e+o,0):Zr(o,e-1)),t==t?function(n,t,r){for(var e=r+1;e--;)if(n[e]===t)return e;return e}(n,t,o):ar(n,fr,o,!0)},de.lowerCase=xc,de.lowerFirst=_c,de.lt=Ba,de.lte=Na,de.max=function(n){return n&&n.length?qe(n,jc,Je):i},de.maxBy=function(n,t){return n&&n.length?qe(n,Vi(t,2),Je):i},de.mean=function(n){return lr(n,jc)},de.meanBy=function(n,t){return lr(n,Vi(t,2))},de.min=function(n){return n&&n.length?qe(n,jc,lo):i},de.minBy=function(n,t){return n&&n.length?qe(n,Vi(t,2),lo):i},de.stubArray=qc,de.stubFalse=Uc,de.stubObject=function(){return{}},de.stubString=function(){return""},de.stubTrue=function(){return!0},de.multiply=Hc,de.nth=function(n,t){return n&&n.length?mo(n,Ya(t)):i},de.noConflict=function(){return zt._===this&&(zt._=vt),this},de.noop=Cc,de.now=Ju,de.pad=function(n,t,r){n=Xa(n);var e=(t=Ya(t))?Lr(n):0;if(!t||e>=t)return n;var o=(t-e)/2;return xi(Dr(o),r)+n+xi(Nr(o),r)},de.padEnd=function(n,t,r){n=Xa(n);var e=(t=Ya(t))?Lr(n):0;return t&&et){var e=n;n=t,t=e}if(r||n%1||t%1){var o=Hr();return Zr(n+o*(t-n+jt("1e-"+((o+"").length-1))),t)}return Mo(n,t)},de.reduce=function(n,t,r){var e=ma(n)?rr:pr,o=arguments.length<3;return e(n,Vi(t,4),r,o,De)},de.reduceRight=function(n,t,r){var e=ma(n)?er:pr,o=arguments.length<3;return e(n,Vi(t,4),r,o,ke)},de.repeat=function(n,t,r){return t=(r?Gi(n,t,r):t===i)?1:Ya(t),wo(Xa(n),t)},de.replace=function(){var n=arguments,t=Xa(n[0]);return n.length<3?t:t.replace(n[1],n[2])},de.result=function(n,t,r){var e=-1,o=(t=Go(t,n)).length;for(o||(o=1,n=i);++ez)return[];var r=B,e=Zr(n,B);t=Vi(t),n-=B;for(var o=vr(e,t);++r=u)return n;var c=r-Lr(e);if(c<1)return e;var s=a?Ho(a,0,c).join(""):n.slice(0,c);if(o===i)return s+e;if(a&&(c+=s.length-c),Oa(o)){if(n.slice(c).search(o)){var f,l=s;for(o.global||(o=et(o.source,Xa(Fn.exec(o))+"g")),o.lastIndex=0;f=o.exec(l);)var h=f.index;s=s.slice(0,h===i?c:h)}}else if(n.indexOf(Bo(o),c)!=c){var d=s.lastIndexOf(o);d>-1&&(s=s.slice(0,d))}return s+e},de.unescape=function(n){return(n=Xa(n))&&En.test(n)?n.replace(wn,Rr):n},de.uniqueId=function(n){var t=++ht;return Xa(n)+t},de.upperCase=Mc,de.upperFirst=wc,de.each=Xu,de.eachRight=Zu,de.first=_u,zc(de,(Wc={},Ge(de,function(n,t){lt.call(de.prototype,t)||(Wc[t]=n)}),Wc),{chain:!1}),de.VERSION="4.17.11",Wt(["bind","bindKey","curry","curryRight","partial","partialRight"],function(n){de[n].placeholder=de}),Wt(["drop","take"],function(n,t){me.prototype[n]=function(r){r=r===i?1:Xr(Ya(r),0);var e=this.__filtered__&&!t?new me(this):this.clone();return e.__filtered__?e.__takeCount__=Zr(r,e.__takeCount__):e.__views__.push({size:Zr(r,B),type:n+(e.__dir__<0?"Right":"")}),e},me.prototype[n+"Right"]=function(t){return this.reverse()[n](t).reverse()}}),Wt(["filter","map","takeWhile"],function(n,t){var r=t+1,e=r==L||3==r;me.prototype[n]=function(n){var t=this.clone();return t.__iteratees__.push({iteratee:Vi(n,3),type:r}),t.__filtered__=t.__filtered__||e,t}}),Wt(["head","last"],function(n,t){var r="take"+(t?"Right":"");me.prototype[n]=function(){return this[r](1).value()[0]}}),Wt(["initial","tail"],function(n,t){var r="drop"+(t?"":"Right");me.prototype[n]=function(){return this.__filtered__?new me(this):this[r](1)}}),me.prototype.compact=function(){return this.filter(jc)},me.prototype.find=function(n){return this.filter(n).head()},me.prototype.findLast=function(n){return this.reverse().find(n)},me.prototype.invokeMap=Ao(function(n,t){return"function"==typeof n?new me(this):this.map(function(r){return eo(r,n,t)})}),me.prototype.reject=function(n){return this.filter(ca(Vi(n)))},me.prototype.slice=function(n,t){n=Ya(n);var r=this;return r.__filtered__&&(n>0||t<0)?new me(r):(n<0?r=r.takeRight(-n):n&&(r=r.drop(n)),t!==i&&(r=(t=Ya(t))<0?r.dropRight(-t):r.take(t-n)),r)},me.prototype.takeRightWhile=function(n){return this.reverse().takeWhile(n).reverse()},me.prototype.toArray=function(){return this.take(B)},Ge(me.prototype,function(n,t){var r=/^(?:filter|find|map|reject)|While$/.test(t),e=/^(?:head|last)$/.test(t),o=de[e?"take"+("last"==t?"Right":""):t],u=e||/^find/.test(t);o&&(de.prototype[t]=function(){var t=this.__wrapped__,a=e?[1]:arguments,c=t instanceof me,s=a[0],f=c||ma(t),l=function(n){var t=o.apply(de,tr([n],a));return e&&h?t[0]:t};f&&r&&"function"==typeof s&&1!=s.length&&(c=f=!1);var h=this.__chain__,d=!!this.__actions__.length,p=u&&!h,g=c&&!d;if(!u&&f){t=g?t:new me(this);var v=n.apply(t,a);return v.__actions__.push({func:ku,args:[l],thisArg:i}),new ve(v,h)}return p&&g?n.apply(this,a):(v=this.thru(l),p?e?v.value()[0]:v.value():v)})}),Wt(["pop","push","shift","sort","splice","unshift"],function(n){var t=ut[n],r=/^(?:push|sort|unshift)$/.test(n)?"tap":"thru",e=/^(?:pop|shift)$/.test(n);de.prototype[n]=function(){var n=arguments;if(e&&!this.__chain__){var o=this.value();return t.apply(ma(o)?o:[],n)}return this[r](function(r){return t.apply(ma(r)?r:[],n)})}}),Ge(me.prototype,function(n,t){var r=de[t];if(r){var e=r.name+"";(oe[e]||(oe[e]=[])).push({name:t,func:r})}}),oe[pi(i,x).name]=[{name:"wrapper",func:i}],me.prototype.clone=function(){var n=new me(this.__wrapped__);return n.__actions__=ei(this.__actions__),n.__dir__=this.__dir__,n.__filtered__=this.__filtered__,n.__iteratees__=ei(this.__iteratees__),n.__takeCount__=this.__takeCount__,n.__views__=ei(this.__views__),n},me.prototype.reverse=function(){if(this.__filtered__){var n=new me(this);n.__dir__=-1,n.__filtered__=!0}else(n=this.clone()).__dir__*=-1;return n},me.prototype.value=function(){var n=this.__wrapped__.value(),t=this.__dir__,r=ma(n),e=t<0,o=r?n.length:0,i=function(n,t,r){for(var e=-1,o=r.length;++e=this.__values__.length;return{done:n,value:n?i:this.__values__[this.__index__++]}},de.prototype.plant=function(n){for(var t,r=this;r instanceof ge;){var e=hu(r);e.__index__=0,e.__values__=i,t?o.__wrapped__=e:t=e;var o=e;r=r.__wrapped__}return o.__wrapped__=n,t},de.prototype.reverse=function(){var n=this.__wrapped__;if(n instanceof me){var t=n;return this.__actions__.length&&(t=new me(this)),(t=t.reverse()).__actions__.push({func:ku,args:[Iu],thisArg:i}),new ve(t,this.__chain__)}return this.thru(Iu)},de.prototype.toJSON=de.prototype.valueOf=de.prototype.value=function(){return qo(this.__wrapped__,this.__actions__)},de.prototype.first=de.prototype.head,Dt&&(de.prototype[Dt]=function(){return this}),de}();zt._=zr,(o=function(){return zr}.call(t,r,t,e))===i||(e.exports=o)}).call(this)}).call(this,r("./node_modules/webpack/buildin/global.js"),r("./node_modules/webpack/buildin/module.js")(n))},"./node_modules/webpack/buildin/global.js":function(n,t){var r;r=function(){return this}();try{r=r||Function("return this")()||(0,eval)("this")}catch(n){"object"==typeof window&&(r=window)}n.exports=r},"./node_modules/webpack/buildin/module.js":function(n,t){n.exports=function(n){return n.webpackPolyfill||(n.deprecate=function(){},n.paths=[],n.children||(n.children=[]),Object.defineProperty(n,"loaded",{enumerable:!0,get:function(){return n.l}}),Object.defineProperty(n,"id",{enumerable:!0,get:function(){return n.i}}),n.webpackPolyfill=1),n}}})}); \ No newline at end of file diff --git a/engine/src/VertexBridge.js b/engine/src/VertexBridge.js index 1a33360..ce3338f 100644 --- a/engine/src/VertexBridge.js +++ b/engine/src/VertexBridge.js @@ -29,7 +29,7 @@ const VertexBridge = { let colors = new Float32Array(nodes.colors); // one edge is defined by two elements (from and to). each edge requires 2 triangles. Each triangle has 3 positions, with an x and y for each - let numEdges = edges.length / 2; + let numEdges = edges.from.length; let numArrows = showArrows ? numEdges : 0; let trianglePositions = new Float32Array(numEdges * 12 + numArrows * 6); @@ -40,9 +40,9 @@ const VertexBridge = { let triangleNormalsIndex = 0; let triangleColorsIndex = 0; - for (let n=0; nEl Grapho Big Clusters nodes: { colors: [] }, - edges: [], + edges: { + from: [], + to: [] + }, width: 1000, height: 500 }; @@ -33,8 +36,8 @@

El Grapho Big Clusters

} modelConfig.nodes.colors.push(color); - modelConfig.edges.push(fromIndex); - modelConfig.edges.push(toIndex); + modelConfig.edges.from[n] = (fromIndex); + modelConfig.edges.to[n] = (toIndex); } let graph = new ElGrapho({ diff --git a/gallery/big-force-directed-graph.html b/gallery/big-force-directed-graph.html index a83fe3c..9bfe4c0 100644 --- a/gallery/big-force-directed-graph.html +++ b/gallery/big-force-directed-graph.html @@ -21,7 +21,10 @@

El Grapho Big Force Directed Graph

nodes: { colors: [] }, - edges: [], + edges: { + from: [], + to: [] + }, width: 500, height: 500, steps: 10 @@ -41,8 +44,8 @@

El Grapho Big Force Directed Graph

function addChildren(parent, level) { if (level < NUM_LEVELS-1) { for (let i=0; iEl Grapho Big Network Graph sizes: [] }; - let edges = new Float32Array(NUM_NODES*2); + let edges = { + from: [], + to: [] + }; for (let n=0; nEl Grapho Big Network Graph nodes.sizes[n] = 0.01; } - let edgeIndex = 0; + for (let n=0; nEl Grapho Big Randomized Force Directed Graph nodes: { colors: [] }, - edges: [], + edges: { + from: [], + to: [] + }, width: 1000, height: 500, steps: 20 @@ -49,8 +52,9 @@

El Grapho Big Randomized Force Directed Graph

for (let k=0; kEl Grapho Big Ring nodes: { colors: [] }, - edges: [], + edges: { + from: [], + to: [] + }, width: 500, height: 500 }; for (let n=0; nEl Grapho Big Tree nodes: { colors: [] }, - edges: [], + edges: { + from: [], + to: [] + }, width: 1000, height: 500 }; @@ -48,8 +51,9 @@

El Grapho Big Tree

for (let k=0; kEl Grapho Binary Tree ys: [0.6, 0, 0, -0.6, -0.6, -0.6, -0.6], colors: [0, 1, 1, 2, 2, 2, 2] }, - edges: [ - 0, 1, - 0, 2, - 1, 3, - 1, 4, - 2, 5, - 2, 6 - ], + edges: { + from: [0, 0, 1, 1, 2, 2], + to: [1, 2, 3, 4, 5, 6] + }, width: 500, height: 500 }, diff --git a/gallery/network-force-directed-graph.html b/gallery/network-force-directed-graph.html index e471939..c61e55e 100644 --- a/gallery/network-force-directed-graph.html +++ b/gallery/network-force-directed-graph.html @@ -19,7 +19,10 @@

El Grapho Network Force Directed Graph

nodes: { colors: [] }, - edges: [], + edges: { + from: [], + to: [] + }, width: 1000, height: 500, steps: 3 @@ -28,8 +31,8 @@

El Grapho Network Force Directed Graph

for (let n=0; nEl Grapho One Cluster nodes: { colors: [] }, - edges: [], + edges: { + from: [], + to: [] + }, width: 1000, height: 500 }; for (let n=0; nEl Grapho Simple Ring nodes: { colors: [] }, - edges: [], + edges: { + from: [], + to: [] + }, width: 500, height: 500 }; for (let n=0; nEl Grapho Simple Tree nodes: { colors: [0, 1, 1, 2, 2, 3, 3] }, - edges: [ - 0, 1, - 0, 2, - 1, 3, - 1, 4, - 2, 5, - 2, 6 - ], + edges: { + from: [0, 0, 1, 1, 2, 2], + to: [1, 2, 3, 4, 5, 6] + }, width: WIDTH, height: HEIGHT }; diff --git a/gallery/small-force-directed-graph.html b/gallery/small-force-directed-graph.html index 6eb6a4c..4714d2c 100644 --- a/gallery/small-force-directed-graph.html +++ b/gallery/small-force-directed-graph.html @@ -8,7 +8,7 @@ -

El Grapho Force Directed Graph

+

El Grapho Small Force Directed Graph

@@ -18,13 +18,11 @@

El Grapho Force Directed Graph

nodes: { colors: [0, 1, 1, 2, 2, 3] }, - edges: [ - 0, 1, - 0, 2, - 1, 3, - 1, 4, - 2, 5 - ], + edges:{ + from: [0, 0, 1, 1, 2], + to: [1, 2, 3, 4, 5] + + }, width: 500, height: 500, steps: 20 diff --git a/gallery/three-branch-force-directed-graph.html b/gallery/three-branch-force-directed-graph.html index 34d9d47..4dfd787 100644 --- a/gallery/three-branch-force-directed-graph.html +++ b/gallery/three-branch-force-directed-graph.html @@ -19,23 +19,10 @@

El Grapho Three Branch Force Directed Graph

// [0, 1, 2, 3, 4, 5, 6, 7, 8, 9,10,11,12,13,14,15,16,17,18,19] colors: [0, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3] }, - edges: [ - 0, 1, - 1, 2, - 2, 3, - 3, 4, - 4, 5, - 0, 6, - 6, 7, - 7, 8, - 8, 9, - 9, 10, - 0, 11, - 11, 12, - 12, 13, - 13, 14, - 14, 15 - ], + edges: { + from: [0, 1, 2, 3, 4, 0, 6, 7, 8, 9, 0, 11, 12, 13, 14], + to: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15] + }, width: 500, height: 500, steps: 50 diff --git a/gallery/three-clusters.html b/gallery/three-clusters.html index 64daffa..9d4b79d 100644 --- a/gallery/three-clusters.html +++ b/gallery/three-clusters.html @@ -20,7 +20,10 @@

El Grapho Three Clusters

nodes: { colors: [] }, - edges: [], + edges: { + from: [], + to: [] + }, width: 500, height: 500 }; @@ -36,8 +39,8 @@

El Grapho Three Clusters

modelConfig.nodes.colors.push(2); } - modelConfig.edges.push(Math.round(Math.random() * NUM_NODES)); - modelConfig.edges.push(Math.round(Math.random() * NUM_NODES)); + modelConfig.edges.from[n] = (Math.round(Math.random() * NUM_NODES)); + modelConfig.edges.to[n] = (Math.round(Math.random() * NUM_NODES)); } diff --git a/gallery/two-clusters.html b/gallery/two-clusters.html index 68f1dbc..b64b916 100644 --- a/gallery/two-clusters.html +++ b/gallery/two-clusters.html @@ -19,15 +19,18 @@

El Grapho Two Clusters

nodes: { colors: [] }, - edges: [], + edges: { + from: [], + to: [] + }, width: 500, height: 500 }; for (let n=0; nEl Grapho X Graph ys: [-0.9, -0.9, 0.9, 0.9, 0], colors: [ 0, 1, 2, 3, 4] }, - edges: [ - 4, 0, - 4, 1, - 4, 2, - 4, 3 - ], + edges: { + from: [4, 4, 4, 4], + to: [0, 1, 2, 3] + }, width: 500, height: 500 }, diff --git a/package.json b/package.json index 65fd2cd..eb03274 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "elgrapho", - "version": "1.5.4", + "version": "1.6.0", "main": "engine/dist/ElGrapho.min.js", "author": "Eric Rowell", "license": "SEE LICENSE IN ",